blob: ca840d4233d386c6a8f7c5500add836518bd3fdc [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 */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530362#ifdef FEATURE_WLAN_TDLS
363 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
364#else
365 NULL,
366#endif
schangd82195a2013-03-13 18:41:24 -0700367 /*-------------------------------------------------------------------------
368 Indications
369 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700370 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800371 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530372 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
373 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700374#ifdef WLAN_FEATURE_11W
375 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
376#else
377 NULL,
378#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700379};
380
381
Jeff Johnsone7245742012-09-05 17:12:55 -0700382/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700383 DAL Request Processing Array - the functions in this table will only be
384 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700385 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700386 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700387WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700388{
389 /*INIT*/
390 WDI_ProcessStartRsp, /* WDI_START_RESP */
391 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
392 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
393
394 /*SCAN*/
395 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
396 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
397 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
398 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
399
400 /* ASSOCIATION*/
401 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
402 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
403 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
404 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
405 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
406
407 /* Security */
408 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
409 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
410 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
411 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
412
413 /* QoS and BA APIs */
414 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
415 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
416 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
417 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
418 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
419
420 /* Miscellaneous Control APIs */
421 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
422 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
423 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
424 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
425 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
426
427 /* BA APIs*/
428 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
429 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700430
Jeff Johnson295189b2012-06-20 16:38:30 -0700431 /* IBSS APIs*/
432 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
433 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
434
435 /*Soft AP APIs*/
436 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
437 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
438 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
439 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
440
441 /* PowerSave APIs */
442 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
443 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
444 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
445 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
446 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
447 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
448 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
449 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
450 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
451 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
452 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
453 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
454 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
455 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
456 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
457 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
458 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
459 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700460
Jeff Johnson295189b2012-06-20 16:38:30 -0700461
462 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
463
464 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
465 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
466#ifdef WLAN_FEATURE_VOWIFI_11R
467 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
468#else
469 NULL,
470#endif /* WLAN_FEATURE_VOWIFI_11R */
471 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
472 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700473#ifdef FEATURE_OEM_DATA_SUPPORT
474 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
475#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700476 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700477#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
479
Jeff Johnson295189b2012-06-20 16:38:30 -0700480 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700481
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700483
Jeff Johnsone7245742012-09-05 17:12:55 -0700484 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
485
Jeff Johnson295189b2012-06-20 16:38:30 -0700486#ifdef FEATURE_WLAN_SCAN_PNO
487 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
488 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
489 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
490#else
491 NULL,
492 NULL,
493 NULL,
494#endif // FEATURE_WLAN_SCAN_PNO
495
496 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
497
498 /*---------------------------------------------------------------------
499 Indications
500 ---------------------------------------------------------------------*/
501#ifdef WLAN_FEATURE_PACKET_FILTERING
502 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700503 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700505 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700508 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700509 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700510#else
511 NULL,
512 NULL,
513 NULL,
514 NULL,
515#endif // WLAN_FEATURE_PACKET_FILTERING
516
517 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
518 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
519
520 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
521#ifdef FEATURE_WLAN_CCX
522 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
523#else
524 NULL,
525#endif
526
527#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700528 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
529 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530#else
531 NULL,
532 NULL,
533#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700534 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
535 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700536#ifdef WLAN_FEATURE_11AC
537 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700538#else
539 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700540#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800541#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
542 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
543#else
544 NULL,
545#endif
schangd82195a2013-03-13 18:41:24 -0700546 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700547#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700548 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700549#else
550 NULL,
551#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530552#ifdef FEATURE_WLAN_TDLS
553 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
554#else
555 NULL,
556#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700557 /*---------------------------------------------------------------------
558 Indications
559 ---------------------------------------------------------------------*/
560 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
561 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
562 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
563 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
564 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
565 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
566
567 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
568
569 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
570
Jeff Johnson295189b2012-06-20 16:38:30 -0700571 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700572
573#ifdef FEATURE_WLAN_SCAN_PNO
574 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
575#else
576 NULL,
577#endif // FEATURE_WLAN_SCAN_PNO
578
579#ifdef WLAN_WAKEUP_EVENTS
580 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
581#else // WLAN_WAKEUP_EVENTS
582 NULL,
583#endif // WLAN_WAKEUP_EVENTS
584
585 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800586
Viral Modi9dc288a2012-12-10 13:09:21 -0800587 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530588#ifdef FEATURE_WLAN_TDLS
589 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
590#else
591 NULL,
592#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700593};
594
595
Jeff Johnsone7245742012-09-05 17:12:55 -0700596/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700597 WLAN DAL Global Control Block
598 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700599WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700600static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
601
Jeff Johnsone7245742012-09-05 17:12:55 -0700602const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700603
604/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700605WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700606void* WDI_GET_PAL_CTX( void )
607{
Jeff Johnsone7245742012-09-05 17:12:55 -0700608 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700609}/*WDI_GET_PAL_CTX*/
610
Jeff Johnsone7245742012-09-05 17:12:55 -0700611/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700612 Helper inline converters
613 ============================================================================*/
614/*Convert WDI driver type into HAL driver type*/
615WPT_STATIC WPT_INLINE WDI_Status
616WDI_HAL_2_WDI_STATUS
617(
618 eHalStatus halStatus
619);
620
621/*Convert WDI request type into HAL request type*/
622WPT_STATIC WPT_INLINE tHalHostMsgType
623WDI_2_HAL_REQ_TYPE
624(
625 WDI_RequestEnumType wdiReqType
626);
627
628/*Convert WDI response type into HAL response type*/
629WPT_STATIC WPT_INLINE WDI_ResponseEnumType
630HAL_2_WDI_RSP_TYPE
631(
632 tHalHostMsgType halMsg
633);
634
635/*Convert WDI driver type into HAL driver type*/
636WPT_STATIC WPT_INLINE tDriverType
637WDI_2_HAL_DRV_TYPE
638(
639 WDI_DriverType wdiDriverType
640);
641
642/*Convert WDI stop reason into HAL stop reason*/
643WPT_STATIC WPT_INLINE tHalStopType
644WDI_2_HAL_STOP_REASON
645(
646 WDI_StopType wdiStopType
647);
648
649/*Convert WDI scan mode type into HAL scan mode type*/
650WPT_STATIC WPT_INLINE eHalSysMode
651WDI_2_HAL_SCAN_MODE
652(
653 WDI_ScanMode wdiScanMode
654);
655
656/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700657WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700658WDI_2_HAL_SEC_CH_OFFSET
659(
660 WDI_HTSecondaryChannelOffset wdiSecChOffset
661);
662
663/*Convert WDI BSS type into HAL BSS type*/
664WPT_STATIC WPT_INLINE tSirBssType
665WDI_2_HAL_BSS_TYPE
666(
667 WDI_BssType wdiBSSType
668);
669
670/*Convert WDI NW type into HAL NW type*/
671WPT_STATIC WPT_INLINE tSirNwType
672WDI_2_HAL_NW_TYPE
673(
674 WDI_NwType wdiNWType
675);
676
677/*Convert WDI chanel bonding type into HAL cb type*/
678WPT_STATIC WPT_INLINE ePhyChanBondState
679WDI_2_HAL_CB_STATE
680(
681 WDI_PhyChanBondState wdiCbState
682);
683
684/*Convert WDI chanel bonding type into HAL cb type*/
685WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
686WDI_2_HAL_HT_OPER_MODE
687(
688 WDI_HTOperatingMode wdiHTOperMode
689);
690
691/*Convert WDI mimo PS type into HAL mimo PS type*/
692WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
693WDI_2_HAL_MIMO_PS
694(
695 WDI_HTMIMOPowerSaveState wdiHTOperMode
696);
697
698/*Convert WDI ENC type into HAL ENC type*/
699WPT_STATIC WPT_INLINE tAniEdType
700WDI_2_HAL_ENC_TYPE
701(
702 WDI_EncryptType wdiEncType
703);
704
705/*Convert WDI WEP type into HAL WEP type*/
706WPT_STATIC WPT_INLINE tAniWepType
707WDI_2_HAL_WEP_TYPE
708(
709 WDI_WepType wdiWEPType
710);
711
712/*Convert WDI Link State into HAL Link State*/
713WPT_STATIC WPT_INLINE tSirLinkState
714WDI_2_HAL_LINK_STATE
715(
716 WDI_LinkStateType wdiLinkState
717);
718
Jeff Johnsone7245742012-09-05 17:12:55 -0700719/*Translate a STA Context from WDI into HAL*/
720WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700721void
722WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700723(
Jeff Johnson295189b2012-06-20 16:38:30 -0700724 tConfigStaParams* phalConfigSta,
725 WDI_ConfigStaReqInfoType* pwdiConfigSta
726);
Jeff Johnsone7245742012-09-05 17:12:55 -0700727
728/*Translate a Rate set info from WDI into HAL*/
729WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700730WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700731(
Jeff Johnson295189b2012-06-20 16:38:30 -0700732 tSirMacRateSet* pHalRateSet,
733 WDI_RateSet* pwdiRateSet
734);
735
736/*Translate an EDCA Parameter Record from WDI into HAL*/
737WPT_STATIC WPT_INLINE void
738WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700739(
Jeff Johnson295189b2012-06-20 16:38:30 -0700740 tSirMacEdcaParamRecord* phalEdcaParam,
741 WDI_EdcaParamRecord* pWDIEdcaParam
742);
743
744/*Copy a management frame header from WDI fmt into HAL fmt*/
745WPT_STATIC WPT_INLINE void
746WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
747(
748 tSirMacMgmtHdr* pmacMgmtHdr,
749 WDI_MacMgmtHdr* pwdiMacMgmtHdr
750);
751
752/*Copy config bss parameters from WDI fmt into HAL fmt*/
753WPT_STATIC WPT_INLINE void
754WDI_CopyWDIConfigBSSToHALConfigBSS
755(
756 tConfigBssParams* phalConfigBSS,
757 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
758);
759
Jeff Johnsone7245742012-09-05 17:12:55 -0700760/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700761 pointed to by user data */
762WPT_STATIC WPT_INLINE void
763WDI_ExtractRequestCBFromEvent
764(
765 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700766 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 void** ppUserData
768);
769
770wpt_uint8
771WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700772(
Jeff Johnson295189b2012-06-20 16:38:30 -0700773 WDI_ControlBlockType* pWDICtx,
774 WDI_BSSSessionType** ppSession
775);
776
777void
778WDI_AddBcastSTAtoSTATable
779(
780 WDI_ControlBlockType* pWDICtx,
781 WDI_AddStaParams * staParams,
782 wpt_uint16 usBcastStaIdx
783);
784
785WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700786(
Jeff Johnson295189b2012-06-20 16:38:30 -0700787 WDI_ControlBlockType* pWDICtx,
788 WDI_EventInfoType* pEventData
789);
790
791void
792WDI_SetPowerStateCb
793(
794 wpt_status status,
795 unsigned int dxePhyAddr,
796 void *pContext
797);
798
799#define CASE_RETURN_STRING( str ) \
800 case ( ( str ) ): return( #str ); break \
801
802/**
803 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700804
805 @param wdiReqMsgId: WDI Message request Id
806
807 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 @return Result of the function call
809*/
810static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
811{
812 switch (wdiReqMsgId)
813 {
814 CASE_RETURN_STRING( WDI_START_REQ );
815 CASE_RETURN_STRING( WDI_STOP_REQ );
816 CASE_RETURN_STRING( WDI_CLOSE_REQ );
817 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
818 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
819 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
820 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
821 CASE_RETURN_STRING( WDI_JOIN_REQ );
822 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
823 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
824 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
825 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
826 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
827 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
828 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
829 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
830 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
831 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
832 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
833 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
834 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
835 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
836 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
837 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
838 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
839 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
840 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
841 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
842 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
843 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
844 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
845 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
846 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
847 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
848 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530849#ifdef FEATURE_WLAN_TDLS
850 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
851#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700852 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
853 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
854 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
855 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
856 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
857 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
858 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
859 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
860 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
862 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
863 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
864 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
865 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
866 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
867 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
868 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
869 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
870 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
871 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
872 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
873 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
874 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
875 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
876 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700877 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700878 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
879 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
880 #ifdef FEATURE_WLAN_SCAN_PNO
881 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
882 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
883 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
884 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700885#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700886 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700887#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700888 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
889 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
890 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
891 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
892 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
893 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
894 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
895 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
896 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800897 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800898 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700899#ifdef WLAN_FEATURE_11W
900 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
901#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700902 default:
903 return "Unknown WDI MessageId";
904 }
905}
906
907
908
909/**
910 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700911
912 @param wdiRespMsgId: WDI Message response Id
913
914 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700915 @return Result of the function call
916*/
917static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
918{
919 switch (wdiRespMsgId)
920 {
921 CASE_RETURN_STRING( WDI_START_RESP );
922 CASE_RETURN_STRING( WDI_STOP_RESP );
923 CASE_RETURN_STRING( WDI_CLOSE_RESP );
924 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
925 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
926 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
927 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
928 CASE_RETURN_STRING( WDI_JOIN_RESP );
929 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
930 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
931 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
932 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
933 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
934 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
935 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
936 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
937 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
938 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
939 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
940 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
941 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
942 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
943 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
944 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
945 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
946 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
947 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
948 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
949 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
950 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
951 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
952 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
953 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
954 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
955 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530956#ifdef FEATURE_WLAN_TDLS
957 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
958 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
959#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700960 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
961 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
962 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
963 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
964 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
965 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
966 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
967 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
968 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
969 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
970 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
971 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
972 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
973 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
974 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
975 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
976 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
977 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
978 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
979 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
980 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
981 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
982 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
983 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
984 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700985 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700986 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
987 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
988 #ifdef FEATURE_WLAN_SCAN_PNO
989 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
990 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
991 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
992 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700993#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700994 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700995#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
997 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
998 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
999 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1000 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1001 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1002 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1003 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001004 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001005 default:
1006 return "Unknown WDI MessageId";
1007 }
1008}
1009
1010/**
1011 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001012
1013 @param halStatusId: HAL status Id
1014
1015 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001016 @return Result of the function call
1017*/
1018static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1019{
1020 switch (halStatusId)
1021 {
1022 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1023 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1024 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1025 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1026 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1027 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1028 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1029 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1030 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1031 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1032 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1033 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1034 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1035 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1036 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1037 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1038 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1039 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1040 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1041 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1042 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1043 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1044 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1045 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1046 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1047 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1048 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1049 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1050 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1051 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1052 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1053 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1054 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1055 default:
1056 return "Unknown HAL status";
1057 }
1058}
1059
Jeff Johnsone7245742012-09-05 17:12:55 -07001060/*========================================================================
1061
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001063
Jeff Johnson295189b2012-06-20 16:38:30 -07001064==========================================================================*/
1065
1066/**
1067 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001068
Jeff Johnson295189b2012-06-20 16:38:30 -07001069 DAL will allocate all the resources it needs. It will open PAL, it will also
1070 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001071 DXE/SMD or any other drivers that they need.
1072
Jeff Johnson295189b2012-06-20 16:38:30 -07001073 @param pOSContext: pointer to the OS context provided by the UMAC
1074 will be passed on to PAL on Open
1075 ppWDIGlobalCtx: output pointer of Global Context
1076 pWdiDevCapability: output pointer of device capability
1077
1078 @return Result of the function call
1079*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001080WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001081WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001082(
Jeff Johnson295189b2012-06-20 16:38:30 -07001083 void* pOSContext,
1084 void** ppWDIGlobalCtx,
1085 WDI_DeviceCapabilityType* pWdiDevCapability,
1086 unsigned int driverType
1087)
1088{
1089 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001090 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001092 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1094
1095 /*---------------------------------------------------------------------
1096 Sanity check
1097 ---------------------------------------------------------------------*/
1098 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1099 {
1100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1101 "Invalid input parameters in WDI_Init");
1102
Jeff Johnsone7245742012-09-05 17:12:55 -07001103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001104 }
1105
1106 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001107 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001108 ---------------------------------------------------------------------*/
1109 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1110 {
1111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1112 "WDI module already initialized - return");
1113
Jeff Johnsone7245742012-09-05 17:12:55 -07001114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001115 }
1116
1117 /*Module is now initialized - this flag is to ensure the fact that multiple
1118 init will not happen on WDI
1119 !! - potential race does exist because read and set are not atomic,
1120 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001121 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001122
1123 /*Setup the control block */
1124 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001125 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001126
1127 /*Setup the STA Table*/
1128 wdiStatus = WDI_STATableInit(&gWDICb);
1129 if ( WDI_STATUS_SUCCESS != wdiStatus )
1130 {
1131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1132 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001133 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001134 goto fail_STATableInit;
1135 }
1136
1137 /*------------------------------------------------------------------------
1138 Open the PAL
1139 ------------------------------------------------------------------------*/
1140 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_wpalOpen;
1147 }
1148
1149 /*Initialize main synchro mutex - it will be used to ensure integrity of
1150 the main WDI Control Block*/
1151 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
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 mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001156 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001157 goto fail_mutex;
1158 }
1159
1160 /*Initialize the response timer - it will be used to time all messages
1161 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001162 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1163 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001164 &gWDICb);
1165 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1166 {
1167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1168 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001169 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001170 goto fail_timer;
1171 }
1172
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001173 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1174 WDI_SsrTimerCB,
1175 &gWDICb);
1176 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1177 {
1178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1179 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001180 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001181 goto fail_timer2;
1182 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 /* Initialize the WDI Pending Request Queue*/
1184 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1185 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1186 {
1187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1188 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001189 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 goto fail_pend_queue;
1191 }
1192
1193 /*Init WDI Pending Assoc Id Queue */
1194 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1195 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1196 {
1197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1198 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001199 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 goto fail_assoc_queue;
1201 }
1202
1203 /*Initialize the BSS sessions pending Queue */
1204 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1205 {
1206 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1207 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1208 {
1209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1210 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001211 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001212 goto fail_bss_queue;
1213 }
1214 }
1215
1216 /*Indicate the control block is sufficiently initialized for callbacks*/
1217 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1218
1219 /*------------------------------------------------------------------------
1220 Initialize the Data Path Utility Module
1221 ------------------------------------------------------------------------*/
1222 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1223 if ( WDI_STATUS_SUCCESS != wdiStatus )
1224 {
1225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1226 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001227 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001228 goto fail_dp_util_init;
1229 }
1230
1231 /* Init Set power state event */
1232 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001233 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001234 {
1235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1236 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001237 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 goto fail_power_event;
1239 }
1240
1241 /* Init WCTS action event */
1242 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001243 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001244 {
1245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1246 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001247 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 goto fail_wcts_event;
1249 }
1250
1251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001252 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001253 ------------------------------------------------------------------------*/
1254 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1255 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001256 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001257 wctsCBs.wctsRxMsgCBData = &gWDICb;
1258
Jeff Johnsone7245742012-09-05 17:12:55 -07001259 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001260 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001261 WDI_CT_CHANNEL_SIZE,
1262 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001263
1264 if ( NULL == gWDICb.wctsHandle )
1265 {
1266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001267 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001268 goto fail_wcts_open;
1269 }
1270
1271 gWDICb.driverMode = (tDriverType)driverType;
1272 /* FTM mode not need to open Transport Driver */
1273 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001274 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 /*------------------------------------------------------------------------
1276 Open the Data Transport
1277 ------------------------------------------------------------------------*/
1278 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1279 {
1280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001281 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 goto fail_wdts_open;
1283 }
1284 }
1285
1286 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001287 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001288
1289 /*Send the context as a ptr to the global WDI Control Block*/
1290 *ppWDIGlobalCtx = &gWDICb;
1291
1292 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001293 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1295 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1296 return WDI_STATUS_SUCCESS;
1297
1298 /* ERROR handlers
1299 Undo everything that completed successfully */
1300
1301 fail_wdts_open:
1302 {
1303 wpt_status eventStatus;
1304
1305 /* Closing WCTS in this scenario is tricky since it has to close
1306 the SMD channel and then we get notified asynchronously when
1307 the channel has been closed. So we take some of the logic from
1308 the "normal" close procedure in WDI_Close()
1309 */
1310
1311 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001312 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001313 {
1314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001315 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001316 }
1317
1318 WCTS_CloseTransport(gWDICb.wctsHandle);
1319
1320 /* Wait for WCTS to close the control transport. If we were able
1321 to reset the event flag, then we'll wait for the event,
1322 otherwise we'll wait for a maximum amount of time required for
1323 the channel to be closed */
1324 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1325 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001326 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001327 WDI_WCTS_ACTION_TIMEOUT);
1328 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1329 {
1330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001331 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001332 }
1333 }
1334 else
1335 {
1336 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1337 }
1338 }
1339 fail_wcts_open:
1340 wpalEventDelete(&gWDICb.wctsActionEvent);
1341 fail_wcts_event:
1342 wpalEventDelete(&gWDICb.setPowerStateEvent);
1343 fail_power_event:
1344 WDI_DP_UtilsExit(&gWDICb);
1345 fail_dp_util_init:
1346 gWDICb.magic = 0;
1347 fail_bss_queue:
1348 /* entries 0 thru i-1 were successfully initialized */
1349 while (0 < i)
1350 {
1351 i--;
1352 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1353 }
1354 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1355 fail_assoc_queue:
1356 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1357 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001358 wpalTimerDelete(&gWDICb.ssrTimer);
1359 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001360 wpalTimerDelete(&gWDICb.wptResponseTimer);
1361 fail_timer:
1362 wpalMutexDelete(&gWDICb.wptMutex);
1363 fail_mutex:
1364 wpalClose(gWDICb.pPALContext);
1365 fail_wpalOpen:
1366 WDI_STATableClose(&gWDICb);
1367 fail_STATableInit:
1368 gWDIInitialized = eWLAN_PAL_FALSE;
1369
1370 return WDI_STATUS_E_FAILURE;
1371
1372}/*WDI_Init*/;
1373
1374/**
1375 @brief WDI_Start will be called when the upper MAC is ready to
1376 commence operation with the WLAN Device. Upon the call
1377 of this API the WLAN DAL will pack and send a HAL Start
1378 message to the lower RIVA sub-system if the SMD channel
1379 has been fully opened and the RIVA subsystem is up.
1380
1381 If the RIVA sub-system is not yet up and running DAL
1382 will queue the request for Open and will wait for the
1383 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001384 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001385
1386 WDI_Init must have been called.
1387
Jeff Johnsone7245742012-09-05 17:12:55 -07001388 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001390
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 wdiStartRspCb: callback for passing back the response of
1392 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001393
Jeff Johnson295189b2012-06-20 16:38:30 -07001394 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001395 callback
1396
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 @see WDI_Start
1398 @return Result of the function call
1399*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001400WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001401WDI_Start
1402(
1403 WDI_StartReqParamsType* pwdiStartParams,
1404 WDI_StartRspCb wdiStartRspCb,
1405 void* pUserData
1406)
1407{
1408 WDI_EventInfoType wdiEventData;
1409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1410
1411 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001412 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 ------------------------------------------------------------------------*/
1414 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1415 {
1416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1417 "WDI API call before module is initialized - Fail request");
1418
Jeff Johnsone7245742012-09-05 17:12:55 -07001419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001420 }
1421
1422 /*------------------------------------------------------------------------
1423 Fill in Event data and post to the Main FSM
1424 ------------------------------------------------------------------------*/
1425 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001426 wdiEventData.pEventData = pwdiStartParams;
1427 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1428 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001429 wdiEventData.pUserData = pUserData;
1430
1431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1432
1433}/*WDI_Start*/
1434
1435/**
1436 @brief WDI_Stop will be called when the upper MAC is ready to
1437 stop any operation with the WLAN Device. Upon the call
1438 of this API the WLAN DAL will pack and send a HAL Stop
1439 message to the lower RIVA sub-system if the DAL Core is
1440 in started state.
1441
1442 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001443
1444 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001445
1446 WDI_Start must have been called.
1447
Jeff Johnsone7245742012-09-05 17:12:55 -07001448 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001450
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 wdiStopRspCb: callback for passing back the response of
1452 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001453
Jeff Johnson295189b2012-06-20 16:38:30 -07001454 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001455 callback
1456
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 @see WDI_Start
1458 @return Result of the function call
1459*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001460WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001461WDI_Stop
1462(
1463 WDI_StopReqParamsType* pwdiStopParams,
1464 WDI_StopRspCb wdiStopRspCb,
1465 void* pUserData
1466)
1467{
1468 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001469 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1471
1472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001473 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001474 ------------------------------------------------------------------------*/
1475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1476 {
1477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1478 "WDI API call before module is initialized - Fail request");
1479
Jeff Johnsone7245742012-09-05 17:12:55 -07001480 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001481 }
1482
Jeff Johnson43971f52012-07-17 12:26:56 -07001483 /*Access to the global state must be locked before cleaning */
1484 wpalMutexAcquire(&pWDICtx->wptMutex);
1485
1486 /*Clear all pending request*/
1487 WDI_ClearPendingRequests(pWDICtx);
1488
1489 /*We have completed cleaning unlock now*/
1490 wpalMutexRelease(&pWDICtx->wptMutex);
1491
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 /* Free the global variables */
1493 wpalMemoryFree(gpHostWlanFeatCaps);
1494 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001495 gpHostWlanFeatCaps = NULL;
1496 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001497
1498 /*------------------------------------------------------------------------
1499 Fill in Event data and post to the Main FSM
1500 ------------------------------------------------------------------------*/
1501 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001502 wdiEventData.pEventData = pwdiStopParams;
1503 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1504 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 wdiEventData.pUserData = pUserData;
1506
1507 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1508
1509}/*WDI_Stop*/
1510
1511
1512
1513/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001514 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001515 needs to interact with DAL. DAL will free its control
1516 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001517
1518 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001519
1520 WDI_Stop must have been called.
1521
1522 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001523
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 @see WDI_Stop
1525 @return Result of the function call
1526*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001527WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001528WDI_Close
1529(
1530 void
1531)
1532{
1533 wpt_uint8 i;
1534 WDI_EventInfoType wdiEventData;
1535 wpt_status wptStatus;
1536 wpt_status eventStatus;
1537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1538
1539 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001540 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001541 ------------------------------------------------------------------------*/
1542 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1543 {
1544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1545 "WDI API call before module is initialized - Fail request");
1546
Jeff Johnsone7245742012-09-05 17:12:55 -07001547 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001548 }
1549
1550 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1551 (the control transport will be closed by the FSM and we'll want
1552 to wait until that completes)*/
1553 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001554 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 {
1556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001557 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001558 /* fall through and try to finish closing via the FSM */
1559 }
1560
1561 /*------------------------------------------------------------------------
1562 Fill in Event data and post to the Main FSM
1563 ------------------------------------------------------------------------*/
1564 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001565 wdiEventData.pEventData = NULL;
1566 wdiEventData.uEventDataSize = 0;
1567 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001568 wdiEventData.pUserData = NULL;
1569
1570 gWDIInitialized = eWLAN_PAL_FALSE;
1571
1572 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1573
1574 /*Wait for WCTS to close the control transport
1575 (but only if we were able to reset the event flag*/
1576 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1577 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001578 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 WDI_WCTS_ACTION_TIMEOUT);
1580 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1581 {
1582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001583 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 }
1585 }
1586
1587 /* Destroy the WCTS action event */
1588 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1589 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1590 {
1591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1592 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001593 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001594 }
1595
1596 /* Destroy the Set Power State event */
1597 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1598 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1599 {
1600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1601 "WDI Close failed to destroy an event");
1602
Jeff Johnsone7245742012-09-05 17:12:55 -07001603 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 }
1605
1606 /*------------------------------------------------------------------------
1607 Closes the Data Path Utility Module
1608 ------------------------------------------------------------------------*/
1609 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1610 {
1611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1612 "WDI Init failed to close the DP Util Module");
1613
Jeff Johnsone7245742012-09-05 17:12:55 -07001614 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001615 }
1616
1617 /*destroy the BSS sessions pending Queue */
1618 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1619 {
1620 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1621 }
1622
1623 /* destroy the WDI Pending Assoc Id Request Queue*/
1624 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1625
1626 /* destroy the WDI Pending Request Queue*/
1627 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001628
Jeff Johnson295189b2012-06-20 16:38:30 -07001629 /*destroy the response timer */
1630 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1631
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001632 /*destroy the SSR timer */
1633 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1634
Jeff Johnson295189b2012-06-20 16:38:30 -07001635 /*invalidate the main synchro mutex */
1636 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1637 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1638 {
1639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1640 "Failed to delete mutex %d", wptStatus);
1641 WDI_ASSERT(0);
1642 }
1643
1644 /*Clear control block. note that this will clear the "magic"
1645 which will inhibit all asynchronous callbacks*/
1646 WDI_CleanCB(&gWDICb);
1647
1648 return wptStatus;
1649
1650}/*WDI_Close*/
1651
1652/**
1653 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1654 This will do most of the WDI stop & close
1655 operations without doing any handshake with Riva
1656
1657 This will also make sure that the control transport
1658 will NOT be closed.
1659
1660 This request will not be queued.
1661
1662
1663 WDI_Start must have been called.
1664
1665 @param closeTransport: Close control channel if this is set
1666
1667 @return Result of the function call
1668*/
1669WDI_Status
1670WDI_Shutdown
1671(
1672 wpt_boolean closeTransport
1673)
1674{
1675 WDI_EventInfoType wdiEventData;
1676 wpt_status wptStatus;
1677 int i = 0;
1678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1679
1680 /*------------------------------------------------------------------------
1681 Sanity Check
1682 ------------------------------------------------------------------------*/
1683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1684 {
1685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1686 "WDI API call before module is initialized - Fail request");
1687
1688 return WDI_STATUS_E_NOT_ALLOWED;
1689 }
1690
1691 /*------------------------------------------------------------------------
1692 Fill in Event data and post to the Main FSM
1693 ------------------------------------------------------------------------*/
1694 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1695 wdiEventData.pEventData = NULL;
1696 wdiEventData.uEventDataSize = 0;
1697
1698 /* Shutdown will not be queued, if the state is busy timer will be
1699 * stopped & this message will be processed.*/
1700 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1701 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1702 {
1703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001704 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 }
1706 /* Destroy the Set Power State event */
1707 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1708 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1709 {
1710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1711 "WDI Close failed to destroy an event");
1712
1713 WDI_ASSERT(0);
1714 }
1715 /*------------------------------------------------------------------------
1716 Closes the Data Path Utility Module
1717 ------------------------------------------------------------------------*/
1718 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1719 {
1720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1721 "WDI Init failed to close the DP Util Module");
1722
1723 WDI_ASSERT(0);
1724 }
1725 if ( closeTransport )
1726 {
1727 /* Close control transport, called from module unload */
1728 WCTS_CloseTransport(gWDICb.wctsHandle);
1729 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001730 else
1731 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001732 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001733 the pending messages in the transport queue */
1734 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1735 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 /*destroy the BSS sessions pending Queue */
1737 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1738 {
1739 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1740 }
1741
1742 /* destroy the WDI Pending Assoc Id Request Queue*/
1743 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1744 /* destroy the WDI Pending Request Queue*/
1745 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1746 /*destroy the response timer */
1747 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001748 /*destroy the SSR timer */
1749 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001750
1751 /*invalidate the main synchro mutex */
1752 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1753 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1754 {
1755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001756 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 WDI_ASSERT(0);
1758 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001759 /* Free the global variables */
1760 wpalMemoryFree(gpHostWlanFeatCaps);
1761 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001762 gpHostWlanFeatCaps = NULL;
1763 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001764 /*Clear control block. note that this will clear the "magic"
1765 which will inhibit all asynchronous callbacks*/
1766 WDI_CleanCB(&gWDICb);
1767 return wptStatus;
1768
1769}/*WDI_Shutdown*/
1770
1771
Jeff Johnsone7245742012-09-05 17:12:55 -07001772/*========================================================================
1773
Jeff Johnson295189b2012-06-20 16:38:30 -07001774 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001775
Jeff Johnson295189b2012-06-20 16:38:30 -07001776==========================================================================*/
1777
1778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001779 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001780 the WLAN Device to get ready for a scan procedure. Upon
1781 the call of this API the WLAN DAL will pack and send a
1782 HAL Init Scan request message to the lower RIVA
1783 sub-system if DAL is in state STARTED.
1784
1785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001787
1788 WDI_Start must have been called.
1789
1790 @param wdiInitScanParams: the init scan parameters as specified
1791 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001792
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 wdiInitScanRspCb: callback for passing back the response
1794 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001795
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 callback
1798
Jeff Johnson295189b2012-06-20 16:38:30 -07001799 @see WDI_Start
1800 @return Result of the function call
1801*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001802WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001803WDI_InitScanReq
1804(
1805 WDI_InitScanReqParamsType* pwdiInitScanParams,
1806 WDI_InitScanRspCb wdiInitScanRspCb,
1807 void* pUserData
1808)
1809{
1810 WDI_EventInfoType wdiEventData;
1811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1812
1813 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001814 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 ------------------------------------------------------------------------*/
1816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1817 {
1818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1819 "WDI API call before module is initialized - Fail request");
1820
Jeff Johnsone7245742012-09-05 17:12:55 -07001821 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 }
1823
1824 /*------------------------------------------------------------------------
1825 Fill in Event data and post to the Main FSM
1826 ------------------------------------------------------------------------*/
1827 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001828 wdiEventData.pEventData = pwdiInitScanParams;
1829 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1830 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 wdiEventData.pUserData = pUserData;
1832
1833 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1834
1835}/*WDI_InitScanReq*/
1836
1837/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001838 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001839 wishes to change the Scan channel on the WLAN Device.
1840 Upon the call of this API the WLAN DAL will pack and
1841 send a HAL Start Scan request message to the lower RIVA
1842 sub-system if DAL is in state STARTED.
1843
1844 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001845 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001846
1847 WDI_InitScanReq must have been called.
1848
Jeff Johnsone7245742012-09-05 17:12:55 -07001849 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001851
Jeff Johnson295189b2012-06-20 16:38:30 -07001852 wdiStartScanRspCb: callback for passing back the
1853 response of the start scan operation received from the
1854 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001855
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 callback
1858
Jeff Johnson295189b2012-06-20 16:38:30 -07001859 @see WDI_InitScanReq
1860 @return Result of the function call
1861*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001862WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001863WDI_StartScanReq
1864(
1865 WDI_StartScanReqParamsType* pwdiStartScanParams,
1866 WDI_StartScanRspCb wdiStartScanRspCb,
1867 void* pUserData
1868)
1869{
1870 WDI_EventInfoType wdiEventData;
1871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1872
1873 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001874 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001875 ------------------------------------------------------------------------*/
1876 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1877 {
1878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1879 "WDI API call before module is initialized - Fail request");
1880
Jeff Johnsone7245742012-09-05 17:12:55 -07001881 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 }
1883
1884 /*------------------------------------------------------------------------
1885 Fill in Event data and post to the Main FSM
1886 ------------------------------------------------------------------------*/
1887 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001888 wdiEventData.pEventData = pwdiStartScanParams;
1889 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1890 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 wdiEventData.pUserData = pUserData;
1892
1893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1894
1895}/*WDI_StartScanReq*/
1896
1897
1898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001899 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 wants to end scanning for a particular channel that it
1901 had set before by calling Scan Start on the WLAN Device.
1902 Upon the call of this API the WLAN DAL will pack and
1903 send a HAL End Scan request message to the lower RIVA
1904 sub-system if DAL is in state STARTED.
1905
1906 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001907 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001908
1909 WDI_StartScanReq must have been called.
1910
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001913
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 wdiEndScanRspCb: callback for passing back the response
1915 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001916
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001918 callback
1919
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 @see WDI_StartScanReq
1921 @return Result of the function call
1922*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001923WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001924WDI_EndScanReq
1925(
1926 WDI_EndScanReqParamsType* pwdiEndScanParams,
1927 WDI_EndScanRspCb wdiEndScanRspCb,
1928 void* pUserData
1929)
1930{
1931 WDI_EventInfoType wdiEventData;
1932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1933
1934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 ------------------------------------------------------------------------*/
1937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1938 {
1939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1940 "WDI API call before module is initialized - Fail request");
1941
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 }
1944
1945 /*------------------------------------------------------------------------
1946 Fill in Event data and post to the Main FSM
1947 ------------------------------------------------------------------------*/
1948 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 wdiEventData.pEventData = pwdiEndScanParams;
1950 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1951 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 wdiEventData.pUserData = pUserData;
1953
1954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1955
1956}/*WDI_EndScanReq*/
1957
1958
1959/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001960 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 completed the scan process on the WLAN Device. Upon the
1962 call of this API the WLAN DAL will pack and send a HAL
1963 Finish Scan Request request message to the lower RIVA
1964 sub-system if DAL is in state STARTED.
1965
1966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001968
1969 WDI_InitScanReq must have been called.
1970
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001973
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 wdiFinishScanRspCb: callback for passing back the
1975 response of the finish scan operation received from the
1976 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001977
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001979 callback
1980
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 @see WDI_InitScanReq
1982 @return Result of the function call
1983*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001984WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001985WDI_FinishScanReq
1986(
1987 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1988 WDI_FinishScanRspCb wdiFinishScanRspCb,
1989 void* pUserData
1990)
1991{
1992 WDI_EventInfoType wdiEventData;
1993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1994
1995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 ------------------------------------------------------------------------*/
1998 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1999 {
2000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2001 "WDI API call before module is initialized - Fail request");
2002
Jeff Johnsone7245742012-09-05 17:12:55 -07002003 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002004 }
2005
2006 /*------------------------------------------------------------------------
2007 Fill in Event data and post to the Main FSM
2008 ------------------------------------------------------------------------*/
2009 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002010 wdiEventData.pEventData = pwdiFinishScanParams;
2011 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2012 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002013 wdiEventData.pUserData = pUserData;
2014
2015 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2016
2017}/*WDI_FinishScanReq*/
2018
Jeff Johnsone7245742012-09-05 17:12:55 -07002019/*========================================================================
2020
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002022
Jeff Johnson295189b2012-06-20 16:38:30 -07002023==========================================================================*/
2024
2025/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002026 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002027 to start an association procedure to a BSS. Upon the
2028 call of this API the WLAN DAL will pack and send a HAL
2029 Join request message to the lower RIVA sub-system if
2030 DAL is in state STARTED.
2031
2032 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002033 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002034
2035 WDI_Start must have been called.
2036
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002039
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 wdiJoinRspCb: callback for passing back the response of
2041 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002042
Jeff Johnson295189b2012-06-20 16:38:30 -07002043 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002044 callback
2045
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 @see WDI_Start
2047 @return Result of the function call
2048*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002049WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002050WDI_JoinReq
2051(
2052 WDI_JoinReqParamsType* pwdiJoinParams,
2053 WDI_JoinRspCb wdiJoinRspCb,
2054 void* pUserData
2055)
2056{
2057 WDI_EventInfoType wdiEventData;
2058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2059
2060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 ------------------------------------------------------------------------*/
2063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2064 {
2065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2066 "WDI API call before module is initialized - Fail request");
2067
Jeff Johnsone7245742012-09-05 17:12:55 -07002068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 }
2070
2071 /*------------------------------------------------------------------------
2072 Fill in Event data and post to the Main FSM
2073 ------------------------------------------------------------------------*/
2074 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002075 wdiEventData.pEventData = pwdiJoinParams;
2076 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2077 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 wdiEventData.pUserData = pUserData;
2079
2080 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2081
2082}/*WDI_JoinReq*/
2083
2084/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 wishes to configure the newly acquired or in process of
2087 being acquired BSS to the HW . Upon the call of this API
2088 the WLAN DAL will pack and send a HAL Config BSS request
2089 message to the lower RIVA sub-system if DAL is in state
2090 STARTED.
2091
2092 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002093 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002094
2095 WDI_JoinReq must have been called.
2096
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002099
Jeff Johnson295189b2012-06-20 16:38:30 -07002100 wdiConfigBSSRspCb: callback for passing back the
2101 response of the config BSS operation received from the
2102 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002103
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 callback
2106
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 @see WDI_JoinReq
2108 @return Result of the function call
2109*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002110WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002111WDI_ConfigBSSReq
2112(
2113 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2114 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2115 void* pUserData
2116)
2117{
2118 WDI_EventInfoType wdiEventData;
2119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2120
2121 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 ------------------------------------------------------------------------*/
2124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2127 "WDI API call before module is initialized - Fail request");
2128
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 }
2131
2132 /*------------------------------------------------------------------------
2133 Fill in Event data and post to the Main FSM
2134 ------------------------------------------------------------------------*/
2135 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002136 wdiEventData.pEventData = pwdiConfigBSSParams;
2137 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2138 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 wdiEventData.pUserData = pUserData;
2140
2141 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2142
2143}/*WDI_ConfigBSSReq*/
2144
2145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 disassociating from the BSS and wishes to notify HW.
2148 Upon the call of this API the WLAN DAL will pack and
2149 send a HAL Del BSS request message to the lower RIVA
2150 sub-system if DAL is in state STARTED.
2151
2152 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002154
2155 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2156
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002159
Jeff Johnson295189b2012-06-20 16:38:30 -07002160 wdiDelBSSRspCb: callback for passing back the response
2161 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002162
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002164 callback
2165
2166 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 @return Result of the function call
2168*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002169WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002170WDI_DelBSSReq
2171(
2172 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2173 WDI_DelBSSRspCb wdiDelBSSRspCb,
2174 void* pUserData
2175)
2176{
2177 WDI_EventInfoType wdiEventData;
2178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2179
2180 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 ------------------------------------------------------------------------*/
2183 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2184 {
2185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2186 "WDI API call before module is initialized - Fail request");
2187
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002189 }
2190
2191 /*------------------------------------------------------------------------
2192 Fill in Event data and post to the Main FSM
2193 ------------------------------------------------------------------------*/
2194 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002195 wdiEventData.pEventData = pwdiDelBSSParams;
2196 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2197 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 wdiEventData.pUserData = pUserData;
2199
2200 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2201
2202}/*WDI_DelBSSReq*/
2203
2204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 associated to a BSS and wishes to configure HW for
2207 associated state. Upon the call of this API the WLAN DAL
2208 will pack and send a HAL Post Assoc request message to
2209 the lower RIVA sub-system if DAL is in state STARTED.
2210
2211 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002212 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002213
2214 WDI_JoinReq must have been called.
2215
2216 @param wdiPostAssocReqParams: the assoc parameters as specified
2217 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002218
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 wdiPostAssocRspCb: callback for passing back the
2220 response of the post assoc operation received from the
2221 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002222
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002224 callback
2225
Jeff Johnson295189b2012-06-20 16:38:30 -07002226 @see WDI_JoinReq
2227 @return Result of the function call
2228*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002229WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002230WDI_PostAssocReq
2231(
2232 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2233 WDI_PostAssocRspCb wdiPostAssocRspCb,
2234 void* pUserData
2235)
2236{
2237 WDI_EventInfoType wdiEventData;
2238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2239
2240 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002241 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 ------------------------------------------------------------------------*/
2243 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2244 {
2245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2246 "WDI API call before module is initialized - Fail request");
2247
Jeff Johnsone7245742012-09-05 17:12:55 -07002248 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 }
2250
2251 /*------------------------------------------------------------------------
2252 Fill in Event data and post to the Main FSM
2253 ------------------------------------------------------------------------*/
2254 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002255 wdiEventData.pEventData = pwdiPostAssocReqParams;
2256 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2257 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 wdiEventData.pUserData = pUserData;
2259
2260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2261
2262}/*WDI_PostAssocReq*/
2263
2264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002265 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002266 association with another STA has ended and the station
2267 must be deleted from HW. Upon the call of this API the
2268 WLAN DAL will pack and send a HAL Del STA request
2269 message to the lower RIVA sub-system if DAL is in state
2270 STARTED.
2271
2272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002274
2275 WDI_PostAssocReq must have been called.
2276
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002279
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 wdiDelSTARspCb: callback for passing back the response
2281 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_PostAssocReq
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_DelSTAReq
2291(
2292 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2293 WDI_DelSTARspCb wdiDelSTARspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiDelSTAParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2317 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_DelSTAReq*/
2323
Jeff Johnsone7245742012-09-05 17:12:55 -07002324/*========================================================================
2325
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002327
Jeff Johnson295189b2012-06-20 16:38:30 -07002328==========================================================================*/
2329
2330/**
2331 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2332 install a BSS encryption key on the HW. Upon the call of this
2333 API the WLAN DAL will pack and send a Set BSS Key request
2334 message to the lower RIVA sub-system if DAL is in state
2335 STARTED.
2336
2337 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002338 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002339
2340 WDI_PostAssocReq must have been called.
2341
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002344
Jeff Johnson295189b2012-06-20 16:38:30 -07002345 wdiSetBSSKeyRspCb: callback for passing back the
2346 response of the set BSS Key operation received from the
2347 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 callback
2351
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 @see WDI_PostAssocReq
2353 @return Result of the function call
2354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002356WDI_SetBSSKeyReq
2357(
2358 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2359 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2360 void* pUserData
2361)
2362{
2363 WDI_EventInfoType wdiEventData;
2364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2365
2366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 ------------------------------------------------------------------------*/
2369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2370 {
2371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2372 "WDI API call before module is initialized - Fail request");
2373
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002375 }
2376
2377 /*------------------------------------------------------------------------
2378 Fill in Event data and post to the Main FSM
2379 ------------------------------------------------------------------------*/
2380 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002381 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2382 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2383 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 wdiEventData.pUserData = pUserData;
2385
2386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2387
2388}/*WDI_SetBSSKeyReq*/
2389
2390/**
2391 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2392 uninstall a BSS key from HW. Upon the call of this API the
2393 WLAN DAL will pack and send a HAL Remove BSS Key request
2394 message to the lower RIVA sub-system if DAL is in state
2395 STARTED.
2396
2397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002399
2400 WDI_SetBSSKeyReq must have been called.
2401
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002404
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiRemoveBSSKeyRspCb: callback for passing back the
2406 response of the remove BSS key operation received from
2407 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002408
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 callback
2411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 @see WDI_SetBSSKeyReq
2413 @return Result of the function call
2414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002416WDI_RemoveBSSKeyReq
2417(
2418 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2419 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2420 void* pUserData
2421)
2422{
2423 WDI_EventInfoType wdiEventData;
2424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2425
2426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 ------------------------------------------------------------------------*/
2429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2430 {
2431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2432 "WDI API call before module is initialized - Fail request");
2433
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 }
2436
2437 /*------------------------------------------------------------------------
2438 Fill in Event data and post to the Main FSM
2439 ------------------------------------------------------------------------*/
2440 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002441 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2442 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2443 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 wdiEventData.pUserData = pUserData;
2445
2446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2447
2448}/*WDI_RemoveBSSKeyReq*/
2449
2450
2451/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 ready to install a STA(ast) encryption key in HW. Upon
2454 the call of this API the WLAN DAL will pack and send a
2455 HAL Set STA Key request message to the lower RIVA
2456 sub-system if DAL is in state STARTED.
2457
2458 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002460
2461 WDI_PostAssocReq must have been called.
2462
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002465
Jeff Johnson295189b2012-06-20 16:38:30 -07002466 wdiSetSTAKeyRspCb: callback for passing back the
2467 response of the set STA key operation received from the
2468 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002469
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 callback
2472
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 @see WDI_PostAssocReq
2474 @return Result of the function call
2475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002477WDI_SetSTAKeyReq
2478(
2479 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2480 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2481 void* pUserData
2482)
2483{
2484 WDI_EventInfoType wdiEventData;
2485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2486
2487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 ------------------------------------------------------------------------*/
2490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2491 {
2492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2493 "WDI API call before module is initialized - Fail request");
2494
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 }
2497
2498 /*------------------------------------------------------------------------
2499 Fill in Event data and post to the Main FSM
2500 ------------------------------------------------------------------------*/
2501 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2503 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2504 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 wdiEventData.pUserData = pUserData;
2506
2507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2508
2509}/*WDI_SetSTAKeyReq*/
2510
2511
2512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 wants to uninstall a previously set STA key in HW. Upon
2515 the call of this API the WLAN DAL will pack and send a
2516 HAL Remove STA Key request message to the lower RIVA
2517 sub-system if DAL is in state STARTED.
2518
2519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002521
2522 WDI_SetSTAKeyReq must have been called.
2523
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002526
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 wdiRemoveSTAKeyRspCb: callback for passing back the
2528 response of the remove STA key operation received from
2529 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 callback
2533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 @see WDI_SetSTAKeyReq
2535 @return Result of the function call
2536*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002537WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002538WDI_RemoveSTAKeyReq
2539(
2540 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2541 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2542 void* pUserData
2543)
2544{
2545 WDI_EventInfoType wdiEventData;
2546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2547
2548 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 ------------------------------------------------------------------------*/
2551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2552 {
2553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2554 "WDI API call before module is initialized - Fail request");
2555
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 }
2558
2559 /*------------------------------------------------------------------------
2560 Fill in Event data and post to the Main FSM
2561 ------------------------------------------------------------------------*/
2562 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2564 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2565 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002566 wdiEventData.pUserData = pUserData;
2567
2568 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2569
2570}/*WDI_RemoveSTAKeyReq*/
2571
2572
2573/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 wants to install a STA Bcast encryption key on the HW.
2576 Upon the call of this API the WLAN DAL will pack and
2577 send a HAL Start request message to the lower RIVA
2578 sub-system if DAL is in state STARTED.
2579
2580 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002582
2583 WDI_PostAssocReq must have been called.
2584
Jeff Johnsone7245742012-09-05 17:12:55 -07002585 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002586 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002587
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 wdiSetSTABcastKeyRspCb: callback for passing back the
2589 response of the set BSS Key operation received from the
2590 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002591
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002593 callback
2594
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 @see WDI_PostAssocReq
2596 @return Result of the function call
2597*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002598WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002599WDI_SetSTABcastKeyReq
2600(
2601 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2602 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2603 void* pUserData
2604)
2605
2606{
2607 WDI_EventInfoType wdiEventData;
2608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2609
2610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 ------------------------------------------------------------------------*/
2613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2614 {
2615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2616 "WDI API call before module is initialized - Fail request");
2617
Jeff Johnsone7245742012-09-05 17:12:55 -07002618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 }
2620
2621 /*------------------------------------------------------------------------
2622 Fill in Event data and post to the Main FSM
2623 ------------------------------------------------------------------------*/
2624 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2626 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2627 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 wdiEventData.pUserData = pUserData;
2629
2630 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2631
2632}/*WDI_SetSTABcastKeyReq*/
2633
2634/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002635 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 MAC wants to uninstall a STA Bcast key from HW. Upon the
2637 call of this API the WLAN DAL will pack and send a HAL
2638 Remove STA Bcast Key request message to the lower RIVA
2639 sub-system if DAL is in state STARTED.
2640
2641 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002643
2644 WDI_SetSTABcastKeyReq must have been called.
2645
Jeff Johnsone7245742012-09-05 17:12:55 -07002646 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 parameters as specified by the Device
2648 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002649
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2651 response of the remove STA Bcast key operation received
2652 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 callback
2656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 @see WDI_SetSTABcastKeyReq
2658 @return Result of the function call
2659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002661WDI_RemoveSTABcastKeyReq
2662(
2663 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2664 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2665 void* pUserData
2666)
2667{
2668 WDI_EventInfoType wdiEventData;
2669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2670
2671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 ------------------------------------------------------------------------*/
2674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2675 {
2676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2677 "WDI API call before module is initialized - Fail request");
2678
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 }
2681
2682 /*------------------------------------------------------------------------
2683 Fill in Event data and post to the Main FSM
2684 ------------------------------------------------------------------------*/
2685 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2687 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2688 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 wdiEventData.pUserData = pUserData;
2690
2691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2692
2693}/*WDI_RemoveSTABcastKeyReq*/
2694
2695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 MAC wants to set Max Tx Power to HW. Upon the
2698 call of this API the WLAN DAL will pack and send a HAL
2699 Remove STA Bcast Key request message to the lower RIVA
2700 sub-system if DAL is in state STARTED.
2701
2702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002704
2705 WDI_SetSTABcastKeyReq must have been called.
2706
Jeff Johnsone7245742012-09-05 17:12:55 -07002707 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002708 parameters as specified by the Device
2709 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002710
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2712 response of the remove STA Bcast key operation received
2713 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002714
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 callback
2717
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 @see WDI_SetMaxTxPowerReq
2719 @return Result of the function call
2720*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002721WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002722WDI_SetMaxTxPowerReq
2723(
2724 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2725 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2726 void* pUserData
2727)
2728{
2729 WDI_EventInfoType wdiEventData;
2730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2731
2732 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002733 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 ------------------------------------------------------------------------*/
2735 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2736 {
2737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2738 "WDI API call before module is initialized - Fail request");
2739
Jeff Johnsone7245742012-09-05 17:12:55 -07002740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 }
2742
2743 /*------------------------------------------------------------------------
2744 Fill in Event data and post to the Main FSM
2745 ------------------------------------------------------------------------*/
2746 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002747 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2748 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2749 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 wdiEventData.pUserData = pUserData;
2751
2752 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2753}
2754
schangd82195a2013-03-13 18:41:24 -07002755/**
2756 @brief WDI_SetTxPowerReq will be called when the upper
2757 MAC wants to set Tx Power to HW.
2758 In state BUSY this request will be queued. Request won't
2759 be allowed in any other state.
2760
2761
2762 @param pwdiSetTxPowerParams: set TS Power parameters
2763 BSSID and target TX Power with dbm included
2764
2765 wdiReqStatusCb: callback for passing back the response
2766
2767 pUserData: user data will be passed back with the
2768 callback
2769
2770 @return Result of the function call
2771*/
2772WDI_Status
2773WDI_SetTxPowerReq
2774(
2775 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2776 WDA_SetTxPowerRspCb wdiReqStatusCb,
2777 void* pUserData
2778)
2779{
2780 WDI_EventInfoType wdiEventData;
2781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2782
2783 /*------------------------------------------------------------------------
2784 Sanity Check
2785 ------------------------------------------------------------------------*/
2786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2787 {
2788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2789 "WDI API call before module is initialized - Fail request");
2790
2791 return WDI_STATUS_E_NOT_ALLOWED;
2792 }
2793
2794 /*------------------------------------------------------------------------
2795 Fill in Event data and post to the Main FSM
2796 ------------------------------------------------------------------------*/
2797 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2798 wdiEventData.pEventData = pwdiSetTxPowerParams;
2799 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2800 wdiEventData.pCBfnc = wdiReqStatusCb;
2801 wdiEventData.pUserData = pUserData;
2802
2803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2804}
2805
Jeff Johnson295189b2012-06-20 16:38:30 -07002806#ifdef FEATURE_WLAN_CCX
2807WDI_Status
2808WDI_TSMStatsReq
2809(
2810 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2811 WDI_TsmRspCb wdiReqStatusCb,
2812 void* pUserData
2813)
2814{
2815 WDI_EventInfoType wdiEventData;
2816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 /*------------------------------------------------------------------------
2818 Sanity Check
2819 ------------------------------------------------------------------------*/
2820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2821 {
2822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2823 "WDI API call before module is initialized - Fail request");
2824
2825 return WDI_STATUS_E_NOT_ALLOWED;
2826 }
2827
2828 /*------------------------------------------------------------------------
2829 Fill in Event data and post to the Main FSM
2830 ------------------------------------------------------------------------*/
2831 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2832 wdiEventData.pEventData = pwdiTsmReqParams;
2833 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2834 wdiEventData.pCBfnc = wdiReqStatusCb;
2835 wdiEventData.pUserData = pUserData;
2836
2837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2838
2839}
2840#endif
2841
2842/*========================================================================
2843
2844 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846==========================================================================*/
2847
2848/**
2849 @brief WDI_AddTSReq will be called when the upper MAC to inform
2850 the device of a successful add TSpec negotiation. HW
2851 needs to receive the TSpec Info from the UMAC in order
2852 to configure properly the QoS data traffic. Upon the
2853 call of this API the WLAN DAL will pack and send a HAL
2854 Add TS request message to the lower RIVA sub-system if
2855 DAL is in state STARTED.
2856
2857 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002859
2860 WDI_PostAssocReq must have been called.
2861
2862 @param wdiAddTsReqParams: the add TS parameters as specified by
2863 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 wdiAddTsRspCb: callback for passing back the response of
2866 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002867
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 callback
2870
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 @see WDI_PostAssocReq
2872 @return Result of the function call
2873*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002874WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002875WDI_AddTSReq
2876(
2877 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2878 WDI_AddTsRspCb wdiAddTsRspCb,
2879 void* pUserData
2880)
2881{
2882 WDI_EventInfoType wdiEventData;
2883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2884
2885 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 ------------------------------------------------------------------------*/
2888 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2889 {
2890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2891 "WDI API call before module is initialized - Fail request");
2892
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 }
2895
2896 /*------------------------------------------------------------------------
2897 Fill in Event data and post to the Main FSM
2898 ------------------------------------------------------------------------*/
2899 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 wdiEventData.pEventData = pwdiAddTsReqParams;
2901 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2902 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 wdiEventData.pUserData = pUserData;
2904
2905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2906
2907}/*WDI_AddTSReq*/
2908
2909
2910
2911/**
2912 @brief WDI_DelTSReq will be called when the upper MAC has ended
2913 admission on a specific AC. This is to inform HW that
2914 QoS traffic parameters must be rest. Upon the call of
2915 this API the WLAN DAL will pack and send a HAL Del TS
2916 request message to the lower RIVA sub-system if DAL is
2917 in state STARTED.
2918
2919 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002920 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002921
2922 WDI_AddTSReq must have been called.
2923
2924 @param wdiDelTsReqParams: the del TS parameters as specified by
2925 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002926
Jeff Johnson295189b2012-06-20 16:38:30 -07002927 wdiDelTsRspCb: callback for passing back the response of
2928 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002929
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 callback
2932
Jeff Johnson295189b2012-06-20 16:38:30 -07002933 @see WDI_AddTSReq
2934 @return Result of the function call
2935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002937WDI_DelTSReq
2938(
2939 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2940 WDI_DelTsRspCb wdiDelTsRspCb,
2941 void* pUserData
2942)
2943{
2944 WDI_EventInfoType wdiEventData;
2945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2946
2947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 ------------------------------------------------------------------------*/
2950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2951 {
2952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2953 "WDI API call before module is initialized - Fail request");
2954
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 }
2957
2958 /*------------------------------------------------------------------------
2959 Fill in Event data and post to the Main FSM
2960 ------------------------------------------------------------------------*/
2961 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 wdiEventData.pEventData = pwdiDelTsReqParams;
2963 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2964 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 wdiEventData.pUserData = pUserData;
2966
2967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2968
2969}/*WDI_DelTSReq*/
2970
2971
2972
2973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002974 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002975 wishes to update the EDCA parameters used by HW for QoS
2976 data traffic. Upon the call of this API the WLAN DAL
2977 will pack and send a HAL Update EDCA Params request
2978 message to the lower RIVA sub-system if DAL is in state
2979 STARTED.
2980
2981 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002983
2984 WDI_PostAssocReq must have been called.
2985
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002988
Jeff Johnson295189b2012-06-20 16:38:30 -07002989 wdiUpdateEDCAParamsRspCb: callback for passing back the
2990 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002991
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 callback
2994
Jeff Johnson295189b2012-06-20 16:38:30 -07002995 @see WDI_PostAssocReq
2996 @return Result of the function call
2997*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002998WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002999WDI_UpdateEDCAParams
3000(
3001 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3002 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3003 void* pUserData
3004)
3005{
3006 WDI_EventInfoType wdiEventData;
3007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3008
3009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003011 ------------------------------------------------------------------------*/
3012 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3013 {
3014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3015 "WDI API call before module is initialized - Fail request");
3016
Jeff Johnsone7245742012-09-05 17:12:55 -07003017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 }
3019
3020 /*------------------------------------------------------------------------
3021 Fill in Event data and post to the Main FSM
3022 ------------------------------------------------------------------------*/
3023 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003024 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3025 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3026 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 wdiEventData.pUserData = pUserData;
3028
3029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3030
3031}/*WDI_UpdateEDCAParams*/
3032
3033
3034/**
3035 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3036 successfully a BA session and needs to notify the HW for
3037 the appropriate settings to take place. Upon the call of
3038 this API the WLAN DAL will pack and send a HAL Add BA
3039 request message to the lower RIVA sub-system if DAL is
3040 in state STARTED.
3041
3042 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003044
3045 WDI_PostAssocReq must have been called.
3046
3047 @param wdiAddBAReqParams: the add BA parameters as specified by
3048 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003049
Jeff Johnson295189b2012-06-20 16:38:30 -07003050 wdiAddBARspCb: callback for passing back the response of
3051 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003052
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 callback
3055
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 @see WDI_PostAssocReq
3057 @return Result of the function call
3058*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003059WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003060WDI_AddBASessionReq
3061(
3062 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3063 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3064 void* pUserData
3065)
3066{
3067 WDI_EventInfoType wdiEventData;
3068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3069
3070 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 ------------------------------------------------------------------------*/
3073 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3074 {
3075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3076 "WDI API call before module is initialized - Fail request");
3077
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 }
3080
3081 /*------------------------------------------------------------------------
3082 Fill in Event data and post to the Main FSM
3083 ------------------------------------------------------------------------*/
3084 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3086 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3087 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 wdiEventData.pUserData = pUserData;
3089
3090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3091
3092}/*WDI_AddBASessionReq*/
3093
3094/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003095 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003096 inform HW that it has deleted a previously created BA
3097 session. Upon the call of this API the WLAN DAL will
3098 pack and send a HAL Del BA request message to the lower
3099 RIVA sub-system if DAL is in state STARTED.
3100
3101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003103
3104 WDI_AddBAReq must have been called.
3105
3106 @param wdiDelBAReqParams: the del BA parameters as specified by
3107 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003108
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 wdiDelBARspCb: callback for passing back the response of
3110 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003111
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 callback
3114
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 @see WDI_AddBAReq
3116 @return Result of the function call
3117*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003118WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003119WDI_DelBAReq
3120(
3121 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3122 WDI_DelBARspCb wdiDelBARspCb,
3123 void* pUserData
3124)
3125{
3126 WDI_EventInfoType wdiEventData;
3127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3128
3129 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003131 ------------------------------------------------------------------------*/
3132 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3133 {
3134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3135 "WDI API call before module is initialized - Fail request");
3136
Jeff Johnsone7245742012-09-05 17:12:55 -07003137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 }
3139
3140 /*------------------------------------------------------------------------
3141 Fill in Event data and post to the Main FSM
3142 ------------------------------------------------------------------------*/
3143 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 wdiEventData.pEventData = pwdiDelBAReqParams;
3145 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3146 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003147 wdiEventData.pUserData = pUserData;
3148
3149 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3150
3151}/*WDI_DelBAReq*/
3152
Jeff Johnsone7245742012-09-05 17:12:55 -07003153/*========================================================================
3154
Jeff Johnson295189b2012-06-20 16:38:30 -07003155 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003156
Jeff Johnson295189b2012-06-20 16:38:30 -07003157==========================================================================*/
3158
3159/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003160 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 wants to set the power save related configurations of
3162 the WLAN Device. Upon the call of this API the WLAN DAL
3163 will pack and send a HAL Update CFG request message to
3164 the lower RIVA sub-system if DAL is in state STARTED.
3165
3166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003168
3169 WDI_Start must have been called.
3170
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003173
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 wdiSetPwrSaveCfgCb: callback for passing back the
3175 response of the set power save cfg operation received
3176 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003177
Jeff Johnson295189b2012-06-20 16:38:30 -07003178 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 callback
3180
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003182 @return Result of the function call
3183*/
3184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003185WDI_SetPwrSaveCfgReq
3186(
3187 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3188 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3189 void* pUserData
3190)
3191{
3192 WDI_EventInfoType wdiEventData;
3193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3194
3195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 ------------------------------------------------------------------------*/
3198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3199 {
3200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3201 "WDI API call before module is initialized - Fail request");
3202
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003204 }
3205
3206 /*------------------------------------------------------------------------
3207 Fill in Event data and post to the Main FSM
3208 ------------------------------------------------------------------------*/
3209 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 wdiEventData.pEventData = pwdiPowerSaveCfg;
3211 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3212 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 wdiEventData.pUserData = pUserData;
3214
3215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3216
3217}/*WDI_SetPwrSaveCfgReq*/
3218
3219/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 request the device to get into IMPS power state. Upon
3222 the call of this API the WLAN DAL will send a HAL Enter
3223 IMPS request message to the lower RIVA sub-system if DAL
3224 is in state STARTED.
3225
3226 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003228
Jeff Johnsone7245742012-09-05 17:12:55 -07003229
3230 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 response of the Enter IMPS operation received from the
3232 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003233
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003235 callback
3236
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 @see WDI_Start
3238 @return Result of the function call
3239*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003241WDI_EnterImpsReq
3242(
3243 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3244 void* pUserData
3245)
3246{
3247 WDI_EventInfoType wdiEventData;
3248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3249
3250 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 ------------------------------------------------------------------------*/
3253 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3254 {
3255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3256 "WDI API call before module is initialized - Fail request");
3257
Jeff Johnsone7245742012-09-05 17:12:55 -07003258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003259 }
3260
3261 /*------------------------------------------------------------------------
3262 Fill in Event data and post to the Main FSM
3263 ------------------------------------------------------------------------*/
3264 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003265 wdiEventData.pEventData = NULL;
3266 wdiEventData.uEventDataSize = 0;
3267 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 wdiEventData.pUserData = pUserData;
3269
3270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3271
3272}/*WDI_EnterImpsReq*/
3273
3274/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003275 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003276 request the device to get out of IMPS power state. Upon
3277 the call of this API the WLAN DAL will send a HAL Exit
3278 IMPS request message to the lower RIVA sub-system if DAL
3279 is in state STARTED.
3280
3281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003283
Jeff Johnson295189b2012-06-20 16:38:30 -07003284
Jeff Johnsone7245742012-09-05 17:12:55 -07003285
3286 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003288
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 callback
3291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 @see WDI_Start
3293 @return Result of the function call
3294*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003296WDI_ExitImpsReq
3297(
3298 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3299 void* pUserData
3300)
3301{
3302 WDI_EventInfoType wdiEventData;
3303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3304
3305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 ------------------------------------------------------------------------*/
3308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3309 {
3310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3311 "WDI API call before module is initialized - Fail request");
3312
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 }
3315
3316 /*------------------------------------------------------------------------
3317 Fill in Event data and post to the Main FSM
3318 ------------------------------------------------------------------------*/
3319 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003320 wdiEventData.pEventData = NULL;
3321 wdiEventData.uEventDataSize = 0;
3322 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003323 wdiEventData.pUserData = pUserData;
3324
3325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3326
3327}/*WDI_ExitImpsReq*/
3328
3329/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003330 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 request the device to get into BMPS power state. Upon
3332 the call of this API the WLAN DAL will pack and send a
3333 HAL Enter BMPS request message to the lower RIVA
3334 sub-system if DAL is in state STARTED.
3335
3336 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003338
3339 WDI_PostAssocReq must have been called.
3340
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003343
Jeff Johnson295189b2012-06-20 16:38:30 -07003344 wdiEnterBmpsRspCb: callback for passing back the
3345 response of the Enter BMPS operation received from the
3346 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 callback
3350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 @see WDI_PostAssocReq
3352 @return Result of the function call
3353*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003355WDI_EnterBmpsReq
3356(
3357 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3358 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3359 void* pUserData
3360)
3361{
3362 WDI_EventInfoType wdiEventData;
3363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3364
3365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 ------------------------------------------------------------------------*/
3368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3369 {
3370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3371 "WDI API call before module is initialized - Fail request");
3372
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 }
3375
3376 /*------------------------------------------------------------------------
3377 Fill in Event data and post to the Main FSM
3378 ------------------------------------------------------------------------*/
3379 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3381 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3382 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 wdiEventData.pUserData = pUserData;
3384
3385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3386
3387}/*WDI_EnterBmpsReq*/
3388
3389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 request the device to get out of BMPS power state. Upon
3392 the call of this API the WLAN DAL will pack and send a
3393 HAL Exit BMPS request message to the lower RIVA
3394 sub-system if DAL is in state STARTED.
3395
3396 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003398
3399 WDI_PostAssocReq must have been called.
3400
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003403
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 wdiExitBmpsRspCb: callback for passing back the response
3405 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003406
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003408 callback
3409
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 @see WDI_PostAssocReq
3411 @return Result of the function call
3412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003414WDI_ExitBmpsReq
3415(
3416 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3417 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3418 void* pUserData
3419)
3420{
3421 WDI_EventInfoType wdiEventData;
3422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3423
3424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003426 ------------------------------------------------------------------------*/
3427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3428 {
3429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3430 "WDI API call before module is initialized - Fail request");
3431
Jeff Johnsone7245742012-09-05 17:12:55 -07003432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003433 }
3434
3435 /*------------------------------------------------------------------------
3436 Fill in Event data and post to the Main FSM
3437 ------------------------------------------------------------------------*/
3438 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003439 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3440 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3441 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 wdiEventData.pUserData = pUserData;
3443
3444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3445
3446}/*WDI_ExitBmpsReq*/
3447
3448/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003450 request the device to get into UAPSD power state. Upon
3451 the call of this API the WLAN DAL will pack and send a
3452 HAL Enter UAPSD request message to the lower RIVA
3453 sub-system if DAL is in state STARTED.
3454
3455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003457
3458 WDI_PostAssocReq must have been called.
3459 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003460
3461 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003462 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003463
Jeff Johnson295189b2012-06-20 16:38:30 -07003464 wdiEnterUapsdRspCb: callback for passing back the
3465 response of the Enter UAPSD operation received from the
3466 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 callback
3470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3472 @return Result of the function call
3473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003475WDI_EnterUapsdReq
3476(
3477 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3478 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3479 void* pUserData
3480)
3481{
3482 WDI_EventInfoType wdiEventData;
3483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3484
3485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 ------------------------------------------------------------------------*/
3488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3489 {
3490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3491 "WDI API call before module is initialized - Fail request");
3492
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 }
3495
3496 /*------------------------------------------------------------------------
3497 Fill in Event data and post to the Main FSM
3498 ------------------------------------------------------------------------*/
3499 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003500 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3501 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3502 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003503 wdiEventData.pUserData = pUserData;
3504
3505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3506
3507}/*WDI_EnterUapsdReq*/
3508
3509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 request the device to get out of UAPSD power state. Upon
3512 the call of this API the WLAN DAL will send a HAL Exit
3513 UAPSD request message to the lower RIVA sub-system if
3514 DAL is in state STARTED.
3515
3516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003518
3519 WDI_PostAssocReq must have been called.
3520
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003522 response of the Exit UAPSD operation received from the
3523 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003524
Jeff Johnson295189b2012-06-20 16:38:30 -07003525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 callback
3527
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 @see WDI_PostAssocReq
3529 @return Result of the function call
3530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003532WDI_ExitUapsdReq
3533(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003534 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3536 void* pUserData
3537)
3538{
3539 WDI_EventInfoType wdiEventData;
3540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3541
3542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 ------------------------------------------------------------------------*/
3545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3546 {
3547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3548 "WDI API call before module is initialized - Fail request");
3549
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 }
3552
3553 /*------------------------------------------------------------------------
3554 Fill in Event data and post to the Main FSM
3555 ------------------------------------------------------------------------*/
3556 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003557 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3558 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 wdiEventData.pUserData = pUserData;
3561
3562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3563
3564}/*WDI_ExitUapsdReq*/
3565
3566/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 MAC wants to set the UAPSD related configurations
3569 of an associated STA (while acting as an AP) to the WLAN
3570 Device. Upon the call of this API the WLAN DAL will pack
3571 and send a HAL Update UAPSD params request message to
3572 the lower RIVA sub-system if DAL is in state STARTED.
3573
3574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003576
3577 WDI_ConfigBSSReq must have been called.
3578
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003581
Jeff Johnson295189b2012-06-20 16:38:30 -07003582 wdiUpdateUapsdParamsCb: callback for passing back the
3583 response of the update UAPSD params operation received
3584 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 callback
3588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 @see WDI_ConfigBSSReq
3590 @return Result of the function call
3591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003593WDI_UpdateUapsdParamsReq
3594(
3595 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3596 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3597 void* pUserData
3598)
3599{
3600 WDI_EventInfoType wdiEventData;
3601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3602
3603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 ------------------------------------------------------------------------*/
3606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3607 {
3608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3609 "WDI API call before module is initialized - Fail request");
3610
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 }
3613
3614 /*------------------------------------------------------------------------
3615 Fill in Event data and post to the Main FSM
3616 ------------------------------------------------------------------------*/
3617 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003619 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 wdiEventData.pUserData = pUserData;
3622
3623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3624
3625}/*WDI_UpdateUapsdParamsReq*/
3626
3627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 MAC wants to set the UAPSD related configurations before
3630 requesting for enter UAPSD power state to the WLAN
3631 Device. Upon the call of this API the WLAN DAL will pack
3632 and send a HAL Set UAPSD params request message to
3633 the lower RIVA sub-system if DAL is in state STARTED.
3634
3635 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003637
3638 WDI_PostAssocReq must have been called.
3639
3640 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3641 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 wdiSetUapsdAcParamsCb: callback for passing back the
3644 response of the set UAPSD params operation received from
3645 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 callback
3649
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 @see WDI_PostAssocReq
3651 @return Result of the function call
3652*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003653WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003654WDI_SetUapsdAcParamsReq
3655(
3656 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3657 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3658 void* pUserData
3659)
3660{
3661 WDI_EventInfoType wdiEventData;
3662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3663
3664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 ------------------------------------------------------------------------*/
3667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3668 {
3669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3670 "WDI API call before module is initialized - Fail request");
3671
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 }
3674
3675 /*------------------------------------------------------------------------
3676 Fill in Event data and post to the Main FSM
3677 ------------------------------------------------------------------------*/
3678 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 wdiEventData.pEventData = pwdiUapsdInfo;
3680 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3681 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 wdiEventData.pUserData = pUserData;
3683
3684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3685
3686}/*WDI_SetUapsdAcParamsReq*/
3687
3688/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 MAC wants to set/reset the RXP filters for received pkts
3691 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3692 and send a HAL configure RXP filter request message to
3693 the lower RIVA sub-system.
3694
3695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003697
Jeff Johnsone7245742012-09-05 17:12:55 -07003698
3699 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003700 filter as specified by the Device
3701 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003702
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 wdiConfigureRxpFilterCb: callback for passing back the
3704 response of the configure RXP filter operation received
3705 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003706
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003708 callback
3709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 @return Result of the function call
3711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003713WDI_ConfigureRxpFilterReq
3714(
3715 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3716 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3717 void* pUserData
3718)
3719{
3720 WDI_EventInfoType wdiEventData;
3721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3722
3723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003725 ------------------------------------------------------------------------*/
3726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3727 {
3728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3729 "WDI API call before module is initialized - Fail request");
3730
Jeff Johnsone7245742012-09-05 17:12:55 -07003731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 }
3733
3734 /*------------------------------------------------------------------------
3735 Fill in Event data and post to the Main FSM
3736 ------------------------------------------------------------------------*/
3737 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3739 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3740 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 wdiEventData.pUserData = pUserData;
3742
3743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3744}/*WDI_ConfigureRxpFilterReq*/
3745
3746/**
3747 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3748 wants to set the beacon filters while in power save.
3749 Upon the call of this API the WLAN DAL will pack and
3750 send a Beacon filter request message to the
3751 lower RIVA sub-system.
3752
3753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003755
Jeff Johnsone7245742012-09-05 17:12:55 -07003756
3757 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 filter as specified by the Device
3759 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003760
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 wdiBeaconFilterCb: callback for passing back the
3762 response of the set beacon filter operation received
3763 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 callback
3767
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 @return Result of the function call
3769*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003771WDI_SetBeaconFilterReq
3772(
3773 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3774 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3775 void* pUserData
3776)
3777{
3778 WDI_EventInfoType wdiEventData;
3779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3780
3781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 ------------------------------------------------------------------------*/
3784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3785 {
3786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3787 "WDI API call before module is initialized - Fail request");
3788
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 }
3791
3792 /*------------------------------------------------------------------------
3793 Fill in Event data and post to the Main FSM
3794 ------------------------------------------------------------------------*/
3795 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003797 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 wdiEventData.pUserData = pUserData;
3800
3801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3802}/*WDI_SetBeaconFilterReq*/
3803
3804/**
3805 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3806 wants to remove the beacon filter for particular IE
3807 while in power save. Upon the call of this API the WLAN
3808 DAL will pack and send a remove Beacon filter request
3809 message to the lower RIVA sub-system.
3810
3811 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003813
Jeff Johnsone7245742012-09-05 17:12:55 -07003814
3815 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 filter as specified by the Device
3817 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003818
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 wdiBeaconFilterCb: callback for passing back the
3820 response of the remove beacon filter operation received
3821 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003822
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 callback
3825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 @return Result of the function call
3827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003829WDI_RemBeaconFilterReq
3830(
3831 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3832 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3833 void* pUserData
3834)
3835{
3836 WDI_EventInfoType wdiEventData;
3837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3838
3839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 ------------------------------------------------------------------------*/
3842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3843 {
3844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3845 "WDI API call before module is initialized - Fail request");
3846
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003848 }
3849
3850 /*------------------------------------------------------------------------
3851 Fill in Event data and post to the Main FSM
3852 ------------------------------------------------------------------------*/
3853 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003855 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003857 wdiEventData.pUserData = pUserData;
3858
3859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3860}/*WDI_RemBeaconFilterReq*/
3861
3862/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 MAC wants to set the RSSI thresholds related
3865 configurations while in power save. Upon the call of
3866 this API the WLAN DAL will pack and send a HAL Set RSSI
3867 thresholds request message to the lower RIVA
3868 sub-system if DAL is in state STARTED.
3869
3870 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003872
3873 WDI_PostAssocReq must have been called.
3874
3875 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3876 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003877
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 wdiSetUapsdAcParamsCb: callback for passing back the
3879 response of the set UAPSD params operation received from
3880 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 callback
3884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 @see WDI_PostAssocReq
3886 @return Result of the function call
3887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003889WDI_SetRSSIThresholdsReq
3890(
3891 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3892 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3893 void* pUserData
3894)
3895{
3896 WDI_EventInfoType wdiEventData;
3897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3898
3899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 ------------------------------------------------------------------------*/
3902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3903 {
3904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3905 "WDI API call before module is initialized - Fail request");
3906
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 }
3909
3910 /*------------------------------------------------------------------------
3911 Fill in Event data and post to the Main FSM
3912 ------------------------------------------------------------------------*/
3913 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003915 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 wdiEventData.pUserData = pUserData;
3918
3919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3920}/* WDI_SetRSSIThresholdsReq*/
3921
3922/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003923 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 wants to set the filter to minimize unnecessary host
3925 wakeup due to broadcast traffic while in power save.
3926 Upon the call of this API the WLAN DAL will pack and
3927 send a HAL host offload request message to the
3928 lower RIVA sub-system if DAL is in state STARTED.
3929
3930 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003932
3933 WDI_PostAssocReq must have been called.
3934
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003937
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 wdiHostOffloadCb: callback for passing back the response
3939 of the host offload operation received from the
3940 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
Jeff Johnson295189b2012-06-20 16:38:30 -07003942 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 callback
3944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 @see WDI_PostAssocReq
3946 @return Result of the function call
3947*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003948WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003949WDI_HostOffloadReq
3950(
3951 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3952 WDI_HostOffloadCb wdiHostOffloadCb,
3953 void* pUserData
3954)
3955{
3956 WDI_EventInfoType wdiEventData;
3957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3958
3959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 ------------------------------------------------------------------------*/
3962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3963 {
3964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3965 "WDI API call before module is initialized - Fail request");
3966
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 }
3969
3970 /*------------------------------------------------------------------------
3971 Fill in Event data and post to the Main FSM
3972 ------------------------------------------------------------------------*/
3973 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003975 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 wdiEventData.pUserData = pUserData;
3978
3979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3980}/*WDI_HostOffloadReq*/
3981
3982/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003983 @brief WDI_KeepAliveReq will be called when the upper MAC
3984 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 and minimize unnecessary host wakeups due to while in power save.
3986 Upon the call of this API the WLAN DAL will pack and
3987 send a HAL Keep Alive request message to the
3988 lower RIVA sub-system if DAL is in state STARTED.
3989
3990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003992
3993 WDI_PostAssocReq must have been called.
3994
Jeff Johnsone7245742012-09-05 17:12:55 -07003995 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 wdiKeepAliveCb: callback for passing back the response
3999 of the Keep Alive operation received from the
4000 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004003 callback
4004
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 @see WDI_PostAssocReq
4006 @return Result of the function call
4007*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004008WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004009WDI_KeepAliveReq
4010(
4011 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4012 WDI_KeepAliveCb wdiKeepAliveCb,
4013 void* pUserData
4014)
4015{
4016 WDI_EventInfoType wdiEventData;
4017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4018
4019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 ------------------------------------------------------------------------*/
4022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4023 {
4024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4025 "WDI_KeepAliveReq: WDI API call before module "
4026 "is initialized - Fail request");
4027
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 }
4030
4031 /*------------------------------------------------------------------------
4032 Fill in Event data and post to the Main FSM
4033 ------------------------------------------------------------------------*/
4034 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 wdiEventData.pEventData = pwdiKeepAliveParams;
4036 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4037 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 wdiEventData.pUserData = pUserData;
4039
4040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4041}/*WDI_KeepAliveReq*/
4042
4043/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 wants to set the Wowl Bcast ptrn to minimize unnecessary
4046 host wakeup due to broadcast traffic while in power
4047 save. Upon the call of this API the WLAN DAL will pack
4048 and send a HAL Wowl Bcast ptrn request message to the
4049 lower RIVA sub-system if DAL is in state STARTED.
4050
4051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004053
4054 WDI_PostAssocReq must have been called.
4055
Jeff Johnsone7245742012-09-05 17:12:55 -07004056 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004058
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 wdiWowlAddBcPtrnCb: callback for passing back the
4060 response of the add Wowl bcast ptrn operation received
4061 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 callback
4065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 @see WDI_PostAssocReq
4067 @return Result of the function call
4068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004070WDI_WowlAddBcPtrnReq
4071(
4072 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4073 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4074 void* pUserData
4075)
4076{
4077 WDI_EventInfoType wdiEventData;
4078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4079
4080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 ------------------------------------------------------------------------*/
4083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4084 {
4085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4086 "WDI API call before module is initialized - Fail request");
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 }
4090
4091 /*------------------------------------------------------------------------
4092 Fill in Event data and post to the Main FSM
4093 ------------------------------------------------------------------------*/
4094 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004096 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 wdiEventData.pUserData = pUserData;
4099
4100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4101}/*WDI_WowlAddBcPtrnReq*/
4102
4103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wants to clear the Wowl Bcast ptrn. Upon the call of
4106 this API the WLAN DAL will pack and send a HAL delete
4107 Wowl Bcast ptrn request message to the lower RIVA
4108 sub-system if DAL is in state STARTED.
4109
4110 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004112
4113 WDI_WowlAddBcPtrnReq must have been called.
4114
Jeff Johnsone7245742012-09-05 17:12:55 -07004115 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004117
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 wdiWowlDelBcPtrnCb: callback for passing back the
4119 response of the del Wowl bcast ptrn operation received
4120 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004121
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 callback
4124
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 @see WDI_WowlAddBcPtrnReq
4126 @return Result of the function call
4127*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004129WDI_WowlDelBcPtrnReq
4130(
4131 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4132 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4133 void* pUserData
4134)
4135{
4136 WDI_EventInfoType wdiEventData;
4137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4138
4139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 ------------------------------------------------------------------------*/
4142 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4143 {
4144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4145 "WDI API call before module is initialized - Fail request");
4146
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 }
4149
4150 /*------------------------------------------------------------------------
4151 Fill in Event data and post to the Main FSM
4152 ------------------------------------------------------------------------*/
4153 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004155 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 wdiEventData.pUserData = pUserData;
4158
4159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4160}/*WDI_WowlDelBcPtrnReq*/
4161
4162/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 wants to enter the Wowl state to minimize unnecessary
4165 host wakeup while in power save. Upon the call of this
4166 API the WLAN DAL will pack and send a HAL Wowl enter
4167 request message to the lower RIVA sub-system if DAL is
4168 in state STARTED.
4169
4170 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004172
4173 WDI_PostAssocReq must have been called.
4174
Jeff Johnsone7245742012-09-05 17:12:55 -07004175 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004177
Jeff Johnson295189b2012-06-20 16:38:30 -07004178 wdiWowlEnterReqCb: callback for passing back the
4179 response of the enter Wowl operation received from the
4180 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004181
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 callback
4184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 @see WDI_PostAssocReq
4186 @return Result of the function call
4187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004189WDI_WowlEnterReq
4190(
4191 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4192 WDI_WowlEnterReqCb wdiWowlEnterCb,
4193 void* pUserData
4194)
4195{
4196 WDI_EventInfoType wdiEventData;
4197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4198
4199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 ------------------------------------------------------------------------*/
4202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4203 {
4204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4205 "WDI API call before module is initialized - Fail request");
4206
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 }
4209
4210 /*------------------------------------------------------------------------
4211 Fill in Event data and post to the Main FSM
4212 ------------------------------------------------------------------------*/
4213 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004215 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 wdiEventData.pUserData = pUserData;
4218
4219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4220}/*WDI_WowlEnterReq*/
4221
4222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wants to exit the Wowl state. Upon the call of this API
4225 the WLAN DAL will pack and send a HAL Wowl exit request
4226 message to the lower RIVA sub-system if DAL is in state
4227 STARTED.
4228
4229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004231
4232 WDI_WowlEnterReq must have been called.
4233
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004236
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 wdiWowlExitReqCb: callback for passing back the response
4238 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004239
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 callback
4242
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 @see WDI_WowlEnterReq
4244 @return Result of the function call
4245*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004246WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004247WDI_WowlExitReq
4248(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004249 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 WDI_WowlExitReqCb wdiWowlExitCb,
4251 void* pUserData
4252)
4253{
4254 WDI_EventInfoType wdiEventData;
4255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4256
4257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 ------------------------------------------------------------------------*/
4260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4261 {
4262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4263 "WDI API call before module is initialized - Fail request");
4264
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004266 }
4267
4268 /*------------------------------------------------------------------------
4269 Fill in Event data and post to the Main FSM
4270 ------------------------------------------------------------------------*/
4271 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004272 wdiEventData.pEventData = pwdiWowlExitParams;
4273 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 wdiEventData.pUserData = pUserData;
4276
4277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4278}/*WDI_WowlExitReq*/
4279
4280/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 the upper MAC wants to dynamically adjusts the listen
4283 interval based on the WLAN/MSM activity. Upon the call
4284 of this API the WLAN DAL will pack and send a HAL
4285 configure Apps Cpu Wakeup State request message to the
4286 lower RIVA sub-system.
4287
4288 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004290
Jeff Johnsone7245742012-09-05 17:12:55 -07004291
4292 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 Apps Cpu Wakeup State as specified by the
4294 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004295
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4297 back the response of the configure Apps Cpu Wakeup State
4298 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004301 callback
4302
Jeff Johnson295189b2012-06-20 16:38:30 -07004303 @return Result of the function call
4304*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004305WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004306WDI_ConfigureAppsCpuWakeupStateReq
4307(
4308 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4309 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4310 void* pUserData
4311)
4312{
4313 WDI_EventInfoType wdiEventData;
4314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4315
4316 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004318 ------------------------------------------------------------------------*/
4319 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4320 {
4321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4322 "WDI API call before module is initialized - Fail request");
4323
Jeff Johnsone7245742012-09-05 17:12:55 -07004324 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004325 }
4326
4327 /*------------------------------------------------------------------------
4328 Fill in Event data and post to the Main FSM
4329 ------------------------------------------------------------------------*/
4330 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004331 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4332 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4333 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004334 wdiEventData.pUserData = pUserData;
4335
4336 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4337}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4338/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004339 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004340 to to perform a flush operation on a given AC. Upon the
4341 call of this API the WLAN DAL will pack and send a HAL
4342 Flush AC request message to the lower RIVA sub-system if
4343 DAL is in state STARTED.
4344
4345 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004346 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004347
4348 WDI_AddBAReq must have been called.
4349
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004352
Jeff Johnson295189b2012-06-20 16:38:30 -07004353 wdiFlushAcRspCb: callback for passing back the response
4354 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004355
Jeff Johnson295189b2012-06-20 16:38:30 -07004356 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 callback
4358
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 @see WDI_AddBAReq
4360 @return Result of the function call
4361*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004362WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004363WDI_FlushAcReq
4364(
4365 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4366 WDI_FlushAcRspCb wdiFlushAcRspCb,
4367 void* pUserData
4368)
4369{
4370 WDI_EventInfoType wdiEventData;
4371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4372
4373 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 ------------------------------------------------------------------------*/
4376 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4377 {
4378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4379 "WDI API call before module is initialized - Fail request");
4380
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 }
4383
4384 /*------------------------------------------------------------------------
4385 Fill in Event data and post to the Main FSM
4386 ------------------------------------------------------------------------*/
4387 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 wdiEventData.pEventData = pwdiFlushAcReqParams;
4389 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4390 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004391 wdiEventData.pUserData = pUserData;
4392
4393 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4394
4395}/*WDI_FlushAcReq*/
4396
4397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wants to notify the lower mac on a BT AMP event. This is
4400 to inform BTC-SLM that some BT AMP event occurred. Upon
4401 the call of this API the WLAN DAL will pack and send a
4402 HAL BT AMP event request message to the lower RIVA
4403 sub-system if DAL is in state STARTED.
4404
4405 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004406 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004407
Jeff Johnsone7245742012-09-05 17:12:55 -07004408
4409 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004411
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 wdiBtAmpEventRspCb: callback for passing back the
4413 response of the BT AMP event operation received from the
4414 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 callback
4418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 @return Result of the function call
4420*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004421WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004422WDI_BtAmpEventReq
4423(
4424 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4425 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4426 void* pUserData
4427)
4428{
4429 WDI_EventInfoType wdiEventData;
4430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4431
4432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004433 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 ------------------------------------------------------------------------*/
4435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4436 {
4437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4438 "WDI API call before module is initialized - Fail request");
4439
Jeff Johnsone7245742012-09-05 17:12:55 -07004440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 }
4442
4443 /*------------------------------------------------------------------------
4444 Fill in Event data and post to the Main FSM
4445 ------------------------------------------------------------------------*/
4446 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4448 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4449 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004450 wdiEventData.pUserData = pUserData;
4451
4452 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4453
4454}/*WDI_BtAmpEventReq*/
4455
Jeff Johnsone7245742012-09-05 17:12:55 -07004456#ifdef FEATURE_OEM_DATA_SUPPORT
4457/**
4458 @brief WDI_Start Oem Data Req will be called when the upper MAC
4459 wants to notify the lower mac on a oem data Req event.Upon
4460 the call of this API the WLAN DAL will pack and send a
4461 HAL OEM Data Req event request message to the lower RIVA
4462 sub-system if DAL is in state STARTED.
4463
4464 In state BUSY this request will be queued. Request won't
4465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004466
4467
Jeff Johnsone7245742012-09-05 17:12:55 -07004468
4469 @param pwdiOemDataReqParams: the Oem Data Req as
4470 specified by the Device Interface
4471
4472 wdiStartOemDataRspCb: callback for passing back the
4473 response of the Oem Data Req received from the
4474 device
4475
4476 pUserData: user data will be passed back with the
4477 callback
4478
4479 @return Result of the function call
4480*/
4481WDI_Status
4482WDI_StartOemDataReq
4483(
4484 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4485 WDI_oemDataRspCb wdiOemDataRspCb,
4486 void* pUserData
4487)
4488{
4489 WDI_EventInfoType wdiEventData;
4490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4491
4492 /*------------------------------------------------------------------------
4493 Sanity Check
4494 ------------------------------------------------------------------------*/
4495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4496 {
4497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4498 "WDI API call before module is initialized - Fail request");
4499
4500 return WDI_STATUS_E_NOT_ALLOWED;
4501 }
4502
4503 /*------------------------------------------------------------------------
4504 Fill in Event data and post to the Main FSM
4505 ------------------------------------------------------------------------*/
4506 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4507 wdiEventData.pEventData = pwdiOemDataReqParams;
4508 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4509 wdiEventData.pCBfnc = wdiOemDataRspCb;
4510 wdiEventData.pUserData = pUserData;
4511
4512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4513
4514
4515}
4516
4517#endif
4518
4519
4520/*========================================================================
4521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004523
Jeff Johnson295189b2012-06-20 16:38:30 -07004524==========================================================================*/
4525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 the WLAN HW to change the current channel of operation.
4528 Upon the call of this API the WLAN DAL will pack and
4529 send a HAL Start request message to the lower RIVA
4530 sub-system if DAL is in state STARTED.
4531
4532 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004534
4535 WDI_Start must have been called.
4536
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004539
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wdiSwitchChRspCb: callback for passing back the response
4541 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004542
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 callback
4545
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 @see WDI_Start
4547 @return Result of the function call
4548*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004550WDI_SwitchChReq
4551(
4552 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4553 WDI_SwitchChRspCb wdiSwitchChRspCb,
4554 void* pUserData
4555)
4556{
4557 WDI_EventInfoType wdiEventData;
4558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4559
4560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 ------------------------------------------------------------------------*/
4563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4564 {
4565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4566 "WDI API call before module is initialized - Fail request");
4567
Jeff Johnsone7245742012-09-05 17:12:55 -07004568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 }
4570
4571 /*------------------------------------------------------------------------
4572 Fill in Event data and post to the Main FSM
4573 ------------------------------------------------------------------------*/
4574 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 wdiEventData.pEventData = pwdiSwitchChReqParams;
4576 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4577 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 wdiEventData.pUserData = pUserData;
4579
4580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4581
4582}/*WDI_SwitchChReq*/
4583
4584
4585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004586 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 wishes to add or update a STA in HW. Upon the call of
4588 this API the WLAN DAL will pack and send a HAL Start
4589 message request message to the lower RIVA sub-system if
4590 DAL is in state STARTED.
4591
4592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004594
4595 WDI_Start must have been called.
4596
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004599
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 wdiConfigSTARspCb: callback for passing back the
4601 response of the config STA operation received from the
4602 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004603
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 callback
4606
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 @see WDI_Start
4608 @return Result of the function call
4609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004611WDI_ConfigSTAReq
4612(
4613 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4614 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4615 void* pUserData
4616)
4617{
4618 WDI_EventInfoType wdiEventData;
4619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4620
4621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 ------------------------------------------------------------------------*/
4624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4625 {
4626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4627 "WDI API call before module is initialized - Fail request");
4628
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004630 }
4631
4632 /*------------------------------------------------------------------------
4633 Fill in Event data and post to the Main FSM
4634 ------------------------------------------------------------------------*/
4635 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4637 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4638 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 wdiEventData.pUserData = pUserData;
4640
4641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4642
4643}/*WDI_ConfigSTAReq*/
4644
4645/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004646 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 wants to change the state of an ongoing link. Upon the
4648 call of this API the WLAN DAL will pack and send a HAL
4649 Start message request message to the lower RIVA
4650 sub-system if DAL is in state STARTED.
4651
4652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004654
4655 WDI_JoinStartReq must have been called.
4656
Jeff Johnsone7245742012-09-05 17:12:55 -07004657 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004659
Jeff Johnson295189b2012-06-20 16:38:30 -07004660 wdiSetLinkStateRspCb: callback for passing back the
4661 response of the set link state operation received from
4662 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004663
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 callback
4666
Jeff Johnson295189b2012-06-20 16:38:30 -07004667 @see WDI_JoinStartReq
4668 @return Result of the function call
4669*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004671WDI_SetLinkStateReq
4672(
4673 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4674 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4675 void* pUserData
4676)
4677{
4678 WDI_EventInfoType wdiEventData;
4679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4680
4681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004683 ------------------------------------------------------------------------*/
4684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4685 {
4686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4687 "WDI API call before module is initialized - Fail request");
4688
Jeff Johnsone7245742012-09-05 17:12:55 -07004689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 }
4691
4692 /*------------------------------------------------------------------------
4693 Fill in Event data and post to the Main FSM
4694 ------------------------------------------------------------------------*/
4695 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4697 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4698 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 wdiEventData.pUserData = pUserData;
4700
4701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4702
4703}/*WDI_SetLinkStateReq*/
4704
4705
4706/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004707 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004708 to get statistics (MIB counters) from the device. Upon
4709 the call of this API the WLAN DAL will pack and send a
4710 HAL Start request message to the lower RIVA sub-system
4711 if DAL is in state STARTED.
4712
4713 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004714 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004715
4716 WDI_Start must have been called.
4717
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004720
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 wdiGetStatsRspCb: callback for passing back the response
4722 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004723
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004725 callback
4726
Jeff Johnson295189b2012-06-20 16:38:30 -07004727 @see WDI_Start
4728 @return Result of the function call
4729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004731WDI_GetStatsReq
4732(
4733 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4734 WDI_GetStatsRspCb wdiGetStatsRspCb,
4735 void* pUserData
4736)
4737{
4738 WDI_EventInfoType wdiEventData;
4739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4740
4741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004742 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004743 ------------------------------------------------------------------------*/
4744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4745 {
4746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4747 "WDI API call before module is initialized - Fail request");
4748
Jeff Johnsone7245742012-09-05 17:12:55 -07004749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004750 }
4751
4752 /*------------------------------------------------------------------------
4753 Fill in Event data and post to the Main FSM
4754 ------------------------------------------------------------------------*/
4755 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 wdiEventData.pEventData = pwdiGetStatsReqParams;
4757 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4758 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 wdiEventData.pUserData = pUserData;
4760
4761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4762
4763}/*WDI_GetStatsReq*/
4764
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004765#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4766/**
4767 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4768 to get roam rssi from the device. Upon
4769 the call of this API the WLAN DAL will pack and send a
4770 HAL Start request message to the lower RIVA sub-system
4771 if DAL is in state STARTED.
4772
4773 In state BUSY this request will be queued. Request won't
4774 be allowed in any other state.
4775
4776 WDI_Start must have been called.
4777
4778 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4779 specified by the Device Interface
4780
4781 wdiGetRoamRssiRspCb: callback for passing back the response
4782 of the get stats operation received from the device
4783
4784 pUserData: user data will be passed back with the
4785 callback
4786
4787 @see WDI_Start
4788 @return Result of the function call
4789*/
4790WDI_Status
4791WDI_GetRoamRssiReq
4792(
4793 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4794 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4795 void* pUserData
4796)
4797{
4798 WDI_EventInfoType wdiEventData;
4799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4800
4801 /*------------------------------------------------------------------------
4802 Sanity Check
4803 ------------------------------------------------------------------------*/
4804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4805 {
4806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4807 "WDI API call before module is initialized - Fail request");
4808
4809 return WDI_STATUS_E_NOT_ALLOWED;
4810 }
4811 /*------------------------------------------------------------------------
4812 Fill in Event data and post to the Main FSM
4813 ------------------------------------------------------------------------*/
4814 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4815 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4816 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4817 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4818 wdiEventData.pUserData = pUserData;
4819
4820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4821
4822}/*WDI_GetRoamRssiReq*/
4823#endif
4824
Jeff Johnson295189b2012-06-20 16:38:30 -07004825
4826/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 it wishes to change the configuration of the WLAN
4829 Device. Upon the call of this API the WLAN DAL will pack
4830 and send a HAL Update CFG request message to the lower
4831 RIVA sub-system if DAL is in state STARTED.
4832
4833 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004834 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004835
4836 WDI_Start must have been called.
4837
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004840
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 wdiUpdateCfgsRspCb: callback for passing back the
4842 response of the update cfg operation received from the
4843 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004844
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 callback
4847
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 @see WDI_Start
4849 @return Result of the function call
4850*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004851WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004852WDI_UpdateCfgReq
4853(
4854 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4855 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4856 void* pUserData
4857)
4858{
4859 WDI_EventInfoType wdiEventData;
4860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4861
4862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004864 ------------------------------------------------------------------------*/
4865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4866 {
4867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4868 "WDI API call before module is initialized - Fail request");
4869
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 }
4872
4873 /*------------------------------------------------------------------------
4874 Fill in Event data and post to the Main FSM
4875 ------------------------------------------------------------------------*/
4876 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4878 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4879 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 wdiEventData.pUserData = pUserData;
4881
4882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4883
4884}/*WDI_UpdateCfgReq*/
4885
4886
4887
4888/**
4889 @brief WDI_AddBAReq will be called when the upper MAC has setup
4890 successfully a BA session and needs to notify the HW for
4891 the appropriate settings to take place. Upon the call of
4892 this API the WLAN DAL will pack and send a HAL Add BA
4893 request message to the lower RIVA sub-system if DAL is
4894 in state STARTED.
4895
4896 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004898
4899 WDI_PostAssocReq must have been called.
4900
4901 @param wdiAddBAReqParams: the add BA parameters as specified by
4902 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004903
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 wdiAddBARspCb: callback for passing back the response of
4905 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004906
Jeff Johnson295189b2012-06-20 16:38:30 -07004907 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004908 callback
4909
Jeff Johnson295189b2012-06-20 16:38:30 -07004910 @see WDI_PostAssocReq
4911 @return Result of the function call
4912*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004914WDI_AddBAReq
4915(
4916 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4917 WDI_AddBARspCb wdiAddBARspCb,
4918 void* pUserData
4919)
4920{
4921 WDI_EventInfoType wdiEventData;
4922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4923
4924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 ------------------------------------------------------------------------*/
4927 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4928 {
4929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4930 "WDI API call before module is initialized - Fail request");
4931
Jeff Johnsone7245742012-09-05 17:12:55 -07004932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004933 }
4934
4935 /*------------------------------------------------------------------------
4936 Fill in Event data and post to the Main FSM
4937 ------------------------------------------------------------------------*/
4938 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004939 wdiEventData.pEventData = pwdiAddBAReqParams;
4940 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4941 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 wdiEventData.pUserData = pUserData;
4943
4944 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4945
4946}/*WDI_AddBAReq*/
4947
4948
4949/**
4950 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4951 successfully a BA session and needs to notify the HW for
4952 the appropriate settings to take place. Upon the call of
4953 this API the WLAN DAL will pack and send a HAL Add BA
4954 request message to the lower RIVA sub-system if DAL is
4955 in state STARTED.
4956
4957 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004959
4960 WDI_PostAssocReq must have been called.
4961
4962 @param wdiAddBAReqParams: the add BA parameters as specified by
4963 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004964
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 wdiAddBARspCb: callback for passing back the response of
4966 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004967
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 callback
4970
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 @see WDI_PostAssocReq
4972 @return Result of the function call
4973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004975WDI_TriggerBAReq
4976(
4977 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4978 WDI_TriggerBARspCb wdiTriggerBARspCb,
4979 void* pUserData
4980)
4981{
4982 WDI_EventInfoType wdiEventData;
4983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4984
4985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 ------------------------------------------------------------------------*/
4988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4989 {
4990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4991 "WDI API call before module is initialized - Fail request");
4992
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 }
4995
4996 /*------------------------------------------------------------------------
4997 Fill in Event data and post to the Main FSM
4998 ------------------------------------------------------------------------*/
4999 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5001 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5002 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 wdiEventData.pUserData = pUserData;
5004
5005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5006
5007}/*WDI_AddBAReq*/
5008
5009/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005010 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005011 wishes to update any of the Beacon parameters used by HW.
5012 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5013 message to the lower RIVA sub-system if DAL is in state
5014 STARTED.
5015
5016 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005018
5019 WDI_PostAssocReq must have been called.
5020
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005023
Jeff Johnson295189b2012-06-20 16:38:30 -07005024 wdiUpdateBeaconParamsRspCb: callback for passing back the
5025 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005026
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 callback
5029
Jeff Johnson295189b2012-06-20 16:38:30 -07005030 @see WDI_PostAssocReq
5031 @return Result of the function call
5032*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005033WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005034WDI_UpdateBeaconParamsReq
5035(
5036 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5037 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5038 void* pUserData
5039)
5040{
5041 WDI_EventInfoType wdiEventData;
5042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5043
5044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 ------------------------------------------------------------------------*/
5047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5048 {
5049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5050 "WDI API call before module is initialized - Fail request");
5051
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 }
5054
5055 /*------------------------------------------------------------------------
5056 Fill in Event data and post to the Main FSM
5057 ------------------------------------------------------------------------*/
5058 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005059 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5060 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5061 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 wdiEventData.pUserData = pUserData;
5063
5064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5065
5066}/*WDI_UpdateBeaconParamsReq*/
5067
5068/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005069 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005070 wishes to update the Beacon template used by HW.
5071 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5072 message to the lower RIVA sub-system if DAL is in state
5073 STARTED.
5074
5075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005077
5078 WDI_PostAssocReq must have been called.
5079
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 wdiSendBeaconParamsRspCb: callback for passing back the
5084 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005085
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 callback
5088
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 @see WDI_PostAssocReq
5090 @return Result of the function call
5091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005093WDI_SendBeaconParamsReq
5094(
5095 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5096 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5097 void* pUserData
5098)
5099{
5100 WDI_EventInfoType wdiEventData;
5101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5102
5103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 ------------------------------------------------------------------------*/
5106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5107 {
5108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5109 "WDI API call before module is initialized - Fail request");
5110
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 }
5113
5114 /*------------------------------------------------------------------------
5115 Fill in Event data and post to the Main FSM
5116 ------------------------------------------------------------------------*/
5117 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 wdiEventData.pEventData = pwdiSendBeaconParams;
5119 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5120 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 wdiEventData.pUserData = pUserData;
5122
5123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5124
5125}/*WDI_SendBeaconParamsReq*/
5126
5127/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 upper MAC wants to update the probe response template to
5130 be transmitted as Soft AP
5131 Upon the call of this API the WLAN DAL will
5132 pack and send the probe rsp template message to the
5133 lower RIVA sub-system if DAL is in state STARTED.
5134
5135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005137
5138
Jeff Johnsone7245742012-09-05 17:12:55 -07005139 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005141
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 wdiSendBeaconParamsRspCb: callback for passing back the
5143 response of the Send Beacon Params operation received
5144 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005145
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 callback
5148
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 @see WDI_AddBAReq
5150 @return Result of the function call
5151*/
5152
Jeff Johnsone7245742012-09-05 17:12:55 -07005153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005154WDI_UpdateProbeRspTemplateReq
5155(
5156 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5157 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5158 void* pUserData
5159)
5160{
5161 WDI_EventInfoType wdiEventData;
5162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5163
5164 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 ------------------------------------------------------------------------*/
5167 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5168 {
5169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5170 "WDI API call before module is initialized - Fail request");
5171
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 }
5174
5175 /*------------------------------------------------------------------------
5176 Fill in Event data and post to the Main FSM
5177 ------------------------------------------------------------------------*/
5178 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5180 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5181 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 wdiEventData.pUserData = pUserData;
5183
5184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5185
5186}/*WDI_UpdateProbeRspTemplateReq*/
5187
5188/**
5189 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5190 to the NV memory.
5191
5192
5193 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5194 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005195
Jeff Johnson295189b2012-06-20 16:38:30 -07005196 wdiNvDownloadRspCb: callback for passing back the response of
5197 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005198
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 callback
5201
Jeff Johnson295189b2012-06-20 16:38:30 -07005202 @see WDI_PostAssocReq
5203 @return Result of the function call
5204*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005205WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005206WDI_NvDownloadReq
5207(
5208 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5209 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5210 void* pUserData
5211)
5212{
5213 WDI_EventInfoType wdiEventData;
5214
5215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005217 ------------------------------------------------------------------------*/
5218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5219 {
5220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5221 "WDI API call before module is initialized - Fail request");
5222
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 }
5225
5226 /*------------------------------------------------------------------------
5227 Fill in Event data and post to the Main FSM
5228 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5230 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5231 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5232 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 wdiEventData.pUserData = pUserData;
5234
5235 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5236
5237}/*WDI_NVDownloadReq*/
5238
Jeff Johnson295189b2012-06-20 16:38:30 -07005239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 upper MAC wants to send Notice of Absence
5242 Upon the call of this API the WLAN DAL will
5243 pack and send the probe rsp template message to the
5244 lower RIVA sub-system if DAL is in state STARTED.
5245
5246 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005248
5249
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005252
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 wdiSendBeaconParamsRspCb: callback for passing back the
5254 response of the Send Beacon Params operation received
5255 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005256
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 callback
5259
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 @see WDI_AddBAReq
5261 @return Result of the function call
5262*/
5263WDI_Status
5264WDI_SetP2PGONOAReq
5265(
5266 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5267 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5268 void* pUserData
5269)
5270{
5271 WDI_EventInfoType wdiEventData;
5272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5273
5274 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 ------------------------------------------------------------------------*/
5277 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5278 {
5279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5280 "WDI API call before module is initialized - Fail request");
5281
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 }
5284
5285 /*------------------------------------------------------------------------
5286 Fill in Event data and post to the Main FSM
5287 ------------------------------------------------------------------------*/
5288 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5290 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5291 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 wdiEventData.pUserData = pUserData;
5293
5294 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5295
5296}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005297
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305298#ifdef FEATURE_WLAN_TDLS
5299/**
5300 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5301 upper MAC wants to send TDLS Link Establish Request Parameters
5302 Upon the call of this API the WLAN DAL will
5303 pack and send the TDLS Link Establish Request message to the
5304 lower RIVA sub-system if DAL is in state STARTED.
5305
5306 In state BUSY this request will be queued. Request won't
5307 be allowed in any other state.
5308
5309
5310 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5311 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5312
5313 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5314 response of the TDLS Link Establish request received
5315 from the device
5316
5317 pUserData: user data will be passed back with the
5318 callback
5319
5320 @see
5321 @return Result of the function call
5322*/
5323WDI_Status
5324WDI_SetTDLSLinkEstablishReq
5325(
5326 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5327 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5328 void* pUserData
5329)
5330{
5331 WDI_EventInfoType wdiEventData;
5332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5333
5334 /*------------------------------------------------------------------------
5335 Sanity Check
5336 ------------------------------------------------------------------------*/
5337 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5338 {
5339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5340 "WDI API call before module is initialized - Fail request");
5341
5342 return WDI_STATUS_E_NOT_ALLOWED;
5343 }
5344
5345 /*------------------------------------------------------------------------
5346 Fill in Event data and post to the Main FSM
5347 ------------------------------------------------------------------------*/
5348 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5349 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5350 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5351 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5352 wdiEventData.pUserData = pUserData;
5353
5354 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5355
5356}/*WDI_SetTDLSLinkEstablishReq*/
5357#endif
5358
Jeff Johnson295189b2012-06-20 16:38:30 -07005359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 UMAC wanted to add STA self while opening any new session
5362 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005364
5365
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005368
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005370 callback
5371
5372 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 @return Result of the function call
5374*/
5375WDI_Status
5376WDI_AddSTASelfReq
5377(
5378 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5379 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5380 void* pUserData
5381)
5382{
5383 WDI_EventInfoType wdiEventData;
5384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5385
5386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 ------------------------------------------------------------------------*/
5389 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5390 {
5391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5392 "WDI API call before module is initialized - Fail request");
5393
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 }
5396
5397 /*------------------------------------------------------------------------
5398 Fill in Event data and post to the Main FSM
5399 ------------------------------------------------------------------------*/
5400 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005401 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5402 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5403 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 wdiEventData.pUserData = pUserData;
5405
5406 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5407
5408}/*WDI_AddSTASelfReq*/
5409
5410
Jeff Johnsone7245742012-09-05 17:12:55 -07005411#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005412/**
5413 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5414 the device of a successful add TSpec negotiation. HW
5415 needs to receive the TSpec Info from the UMAC in order
5416 to configure properly the QoS data traffic. Upon the
5417 call of this API the WLAN DAL will pack and send a HAL
5418 Add TS request message to the lower RIVA sub-system if
5419 DAL is in state STARTED.
5420
5421 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005422 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005423
5424 WDI_PostAssocReq must have been called.
5425
5426 @param wdiAddTsReqParams: the add TS parameters as specified by
5427 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005428
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 wdiAddTsRspCb: callback for passing back the response of
5430 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 callback
5434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 @see WDI_PostAssocReq
5436 @return Result of the function call
5437*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005438WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005439WDI_AggrAddTSReq
5440(
5441 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5442 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5443 void* pUserData
5444)
5445{
5446 WDI_EventInfoType wdiEventData;
5447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5448
5449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 ------------------------------------------------------------------------*/
5452 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5453 {
5454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5455 "WDI API call before module is initialized - Fail request");
5456
Jeff Johnsone7245742012-09-05 17:12:55 -07005457 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 }
5459
5460 /*------------------------------------------------------------------------
5461 Fill in Event data and post to the Main FSM
5462 ------------------------------------------------------------------------*/
5463 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5465 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5466 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005467 wdiEventData.pUserData = pUserData;
5468
5469 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5470
5471}/*WDI_AggrAddTSReq*/
5472
5473#endif /* WLAN_FEATURE_VOWIFI_11R */
5474
Jeff Johnson295189b2012-06-20 16:38:30 -07005475/**
5476 @brief WDI_FTMCommandReq
5477 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005478
5479 @param ftmCommandReq: FTM Command Body
5480 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005482
Jeff Johnson295189b2012-06-20 16:38:30 -07005483 @see
5484 @return Result of the function call
5485*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005486WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005487WDI_FTMCommandReq
5488(
5489 WDI_FTMCommandReqType *ftmCommandReq,
5490 WDI_FTMCommandRspCb ftmCommandRspCb,
5491 void *pUserData
5492)
5493{
5494 WDI_EventInfoType wdiEventData;
5495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5496
5497 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005498 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005499 ------------------------------------------------------------------------*/
5500 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5501 {
5502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5503 "WDI API call before module is initialized - Fail request");
5504
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005506 }
5507
5508 /*------------------------------------------------------------------------
5509 Fill in Event data and post to the Main FSM
5510 ------------------------------------------------------------------------*/
5511 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5512 wdiEventData.pEventData = (void *)ftmCommandReq;
5513 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5514 wdiEventData.pCBfnc = ftmCommandRspCb;
5515 wdiEventData.pUserData = pUserData;
5516
5517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5518}
Jeff Johnson295189b2012-06-20 16:38:30 -07005519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005520 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005521
5522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005524
5525
5526 @param pwdiResumeReqParams: as specified by
5527 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005528
Jeff Johnson295189b2012-06-20 16:38:30 -07005529 wdiResumeReqRspCb: callback for passing back the response of
5530 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005531
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005533 callback
5534
5535 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 @return Result of the function call
5537*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005539WDI_HostResumeReq
5540(
5541 WDI_ResumeParamsType* pwdiResumeReqParams,
5542 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5543 void* pUserData
5544)
5545{
5546 WDI_EventInfoType wdiEventData;
5547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5548
5549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005551 ------------------------------------------------------------------------*/
5552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5553 {
5554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5555 "WDI API call before module is initialized - Fail request");
5556
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005558 }
5559
5560 /*------------------------------------------------------------------------
5561 Fill in Event data and post to the Main FSM
5562 ------------------------------------------------------------------------*/
5563 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005564 wdiEventData.pEventData = pwdiResumeReqParams;
5565 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5566 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 wdiEventData.pUserData = pUserData;
5568
5569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5570
5571}/*WDI_HostResumeReq*/
5572
5573/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005574 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005575
5576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005578
5579
5580 @param pwdiDelStaSelfReqParams: as specified by
5581 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005582
Jeff Johnson295189b2012-06-20 16:38:30 -07005583 wdiDelStaSelfRspCb: callback for passing back the response of
5584 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005585
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 callback
5588
Jeff Johnson295189b2012-06-20 16:38:30 -07005589 @see WDI_PostAssocReq
5590 @return Result of the function call
5591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005593WDI_DelSTASelfReq
5594(
5595 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5596 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5597 void* pUserData
5598)
5599{
5600 WDI_EventInfoType wdiEventData;
5601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5602
5603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 ------------------------------------------------------------------------*/
5606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5607 {
5608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5609 "WDI API call before module is initialized - Fail request");
5610
Jeff Johnsone7245742012-09-05 17:12:55 -07005611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005612 }
5613
5614 /*------------------------------------------------------------------------
5615 Fill in Event data and post to the Main FSM
5616 ------------------------------------------------------------------------*/
5617 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005618 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5619 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5620 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 wdiEventData.pUserData = pUserData;
5622
5623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5624
5625}/*WDI_AggrAddTSReq*/
5626
5627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5629 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 Upon the call of this API the WLAN DAL will pack
5631 and send a HAL Set Tx Per Tracking request message to the
5632 lower RIVA sub-system if DAL is in state STARTED.
5633
5634 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005636
Jeff Johnsone7245742012-09-05 17:12:55 -07005637 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005639
Jeff Johnson295189b2012-06-20 16:38:30 -07005640 pwdiSetTxPerTrackingRspCb: callback for passing back the
5641 response of the set Tx PER Tracking configurations operation received
5642 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005643
Jeff Johnson295189b2012-06-20 16:38:30 -07005644 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005645 callback
5646
Jeff Johnson295189b2012-06-20 16:38:30 -07005647 @return Result of the function call
5648*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005649WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005650WDI_SetTxPerTrackingReq
5651(
5652 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5653 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5654 void* pUserData
5655)
5656{
5657 WDI_EventInfoType wdiEventData;
5658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5659
5660 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 ------------------------------------------------------------------------*/
5663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5664 {
5665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5666 "WDI API call before module is initialized - Fail request");
5667
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005669 }
5670
5671 /*------------------------------------------------------------------------
5672 Fill in Event data and post to the Main FSM
5673 ------------------------------------------------------------------------*/
5674 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 wdiEventData.pUserData = pUserData;
5679
5680 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5681
5682}/*WDI_SetTxPerTrackingReq*/
5683
5684/**
5685 @brief WDI_SetTmLevelReq
5686 If HW Thermal condition changed, driver should react based on new
5687 HW thermal condition.
5688
5689 @param pwdiSetTmLevelReq: New thermal condition information
5690
5691 pwdiSetTmLevelRspCb: callback
5692
5693 usrData: user data will be passed back with the
5694 callback
5695
5696 @return Result of the function call
5697*/
5698WDI_Status
5699WDI_SetTmLevelReq
5700(
5701 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5702 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5703 void *usrData
5704)
5705{
5706 WDI_EventInfoType wdiEventData;
5707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5708
5709 /*------------------------------------------------------------------------
5710 Sanity Check
5711 ------------------------------------------------------------------------*/
5712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5713 {
5714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5715 "WDI API call before module is initialized - Fail request");
5716
5717 return WDI_STATUS_E_NOT_ALLOWED;
5718 }
5719
5720 /*------------------------------------------------------------------------
5721 Fill in Event data and post to the Main FSM
5722 ------------------------------------------------------------------------*/
5723 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5724 wdiEventData.pEventData = pwdiSetTmLevelReq;
5725 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5726 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5727 wdiEventData.pUserData = usrData;
5728
5729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5730}
5731
5732/**
5733 @brief WDI_HostSuspendInd
5734
5735 Suspend Indication from the upper layer will be sent
5736 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005737
Jeff Johnson295189b2012-06-20 16:38:30 -07005738 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005739
5740 @see
5741
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 @return Status of the request
5743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005745WDI_HostSuspendInd
5746(
5747 WDI_SuspendParamsType* pwdiSuspendIndParams
5748)
5749{
5750
5751 WDI_EventInfoType wdiEventData;
5752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5753
5754 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 ------------------------------------------------------------------------*/
5757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5758 {
5759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5760 "WDI API call before module is initialized - Fail request");
5761
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 }
5764
5765 /*------------------------------------------------------------------------
5766 Fill in Event data and post to the Main FSM
5767 ------------------------------------------------------------------------*/
5768 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 wdiEventData.pEventData = pwdiSuspendIndParams;
5770 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5771 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 wdiEventData.pUserData = NULL;
5773
5774 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5775
5776}/*WDI_HostSuspendInd*/
5777
5778/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005779 @brief WDI_TrafficStatsInd
5780 Traffic Stats from the upper layer will be sent
5781 down to HAL
5782
5783 @param WDI_TrafficStatsIndType
5784
5785 @see
5786
5787 @return Status of the request
5788*/
5789WDI_Status
5790WDI_TrafficStatsInd
5791(
5792 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5793)
5794{
5795
5796 WDI_EventInfoType wdiEventData;
5797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5798
5799 /*------------------------------------------------------------------------
5800 Sanity Check
5801 ------------------------------------------------------------------------*/
5802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5803 {
5804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5805 "WDI API call before module is initialized - Fail request");
5806
5807 return WDI_STATUS_E_NOT_ALLOWED;
5808 }
5809
5810 /*------------------------------------------------------------------------
5811 Fill in Event data and post to the Main FSM
5812 ------------------------------------------------------------------------*/
5813 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5814 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5815 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5816 wdiEventData.pCBfnc = NULL;
5817 wdiEventData.pUserData = NULL;
5818
5819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5820
5821}/*WDI_TrafficStatsInd*/
5822
Chet Lanctota96bb432013-03-18 10:26:30 -07005823#ifdef WLAN_FEATURE_11W
5824/**
5825 @brief WDI_ExcludeUnencryptedInd
5826 Register with HAL to receive/drop unencrypted frames
5827
5828 @param WDI_ExcludeUnencryptIndType
5829
5830 @see
5831
5832 @return Status of the request
5833*/
5834WDI_Status
5835WDI_ExcludeUnencryptedInd
5836(
5837 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5838)
5839{
5840
5841 WDI_EventInfoType wdiEventData;
5842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5843
5844 /*------------------------------------------------------------------------
5845 Sanity Check
5846 ------------------------------------------------------------------------*/
5847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5848 {
5849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5850 "WDI API call before module is initialized - Fail request");
5851
5852 return WDI_STATUS_E_NOT_ALLOWED;
5853 }
5854
5855 /*------------------------------------------------------------------------
5856 Fill in Event data and post to the Main FSM
5857 ------------------------------------------------------------------------*/
5858 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5859 wdiEventData.pEventData = pWdiExcUnencParams;
5860 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5861 wdiEventData.pCBfnc = NULL;
5862 wdiEventData.pUserData = NULL;
5863
5864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5865
5866}/*WDI_TrafficStatsInd*/
5867#endif
5868
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005869/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 @brief WDI_HALDumpCmdReq
5871 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005872
5873 @param halDumpCmdReqParams: Hal Dump Command Body
5874 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005876
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 @see
5878 @return Result of the function call
5879*/
5880WDI_Status WDI_HALDumpCmdReq
5881(
5882 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5883 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5884 void *pUserData
5885)
5886{
5887 WDI_EventInfoType wdiEventData;
5888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5889
5890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 ------------------------------------------------------------------------*/
5893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5894 {
5895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5896 "WDI API call before module is initialized - Fail request");
5897
Jeff Johnsone7245742012-09-05 17:12:55 -07005898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005899 }
5900
5901 /*------------------------------------------------------------------------
5902 Fill in Event data and post to the Main FSM
5903 ------------------------------------------------------------------------*/
5904 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5905 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5906 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5907 wdiEventData.pCBfnc = halDumpCmdRspCb;
5908 wdiEventData.pUserData = pUserData;
5909
5910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5911}
5912
Jeff Johnsone7245742012-09-05 17:12:55 -07005913/*============================================================================
5914
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005916
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 ============================================================================*/
5918
5919/**
5920 @brief Main FSM Start function for all states except BUSY
5921
Jeff Johnsone7245742012-09-05 17:12:55 -07005922
5923 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 wdiEV: event posted to the main DAL FSM
5925 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005926 structure
5927
Jeff Johnson295189b2012-06-20 16:38:30 -07005928 @see
5929 @return Result of the function call
5930*/
5931WDI_Status
5932WDI_PostMainEvent
5933(
Jeff Johnsone7245742012-09-05 17:12:55 -07005934 WDI_ControlBlockType* pWDICtx,
5935 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005936 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005937
Jeff Johnson295189b2012-06-20 16:38:30 -07005938)
5939{
Jeff Johnsone7245742012-09-05 17:12:55 -07005940 WDI_Status wdiStatus;
5941 WDI_MainFuncType pfnWDIMainEvHdlr;
5942 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5944
5945 /*-------------------------------------------------------------------------
5946 Sanity check
5947 -------------------------------------------------------------------------*/
5948 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5949 ( wdiEV >= WDI_MAX_EVENT ))
5950 {
5951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5952 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5953 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005955 }
5956
5957 /*Access to the global state must be locked */
5958 wpalMutexAcquire(&pWDICtx->wptMutex);
5959
5960 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005962
5963 wdiOldState = pWDICtx->uGlobalState;
5964
5965 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005966 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5967 response comes from CCPU for the request sent by host:
5968 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 -07005969 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 -07005970 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 CCPU:
5972 don't change the state */
5973 if ( WDI_RESPONSE_EVENT != wdiEV)
5974 {
5975 /*Transition to BUSY State - the request is now being processed by the FSM,
5976 if the request fails we shall transition back to the old state, if not
5977 the request will manage its own state transition*/
5978 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5979 }
5980 /* If the state function associated with the EV is NULL it means that this
5981 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 {
5984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005987 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005988 }
5989 else
5990 {
5991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005994 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005995 }
5996
5997 /* If a request handles itself well it will end up in a success or in a
5998 pending
5999 Success - means that the request was processed and the proper state
6000 transition already occurred or will occur when the resp is received
6001 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006002
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 Pending - means the request could not be processed at this moment in time
6004 because the FSM was already busy so no state transition or dequeueing
6005 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006006
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 Success for synchronous case means that the transition may occur and
6008 processing of pending requests may continue - so it should go through
6009 and restores the state and continue processing queued requests*/
6010 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6011 ( WDI_STATUS_PENDING != wdiStatus ))
6012 {
6013 if ( WDI_RESPONSE_EVENT != wdiEV)
6014 {
6015 /*The request has failed or could not be processed - transition back to
6016 the old state - check to see if anything was queued and try to execute
6017 The dequeue logic should post a message to a thread and return - no
6018 actual processing can occur */
6019 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6020 }
6021 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006022
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 }
6024
6025 /* we have completed processing the event */
6026 wpalMutexRelease(&pWDICtx->wptMutex);
6027
Jeff Johnsone7245742012-09-05 17:12:55 -07006028 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006029
6030}/*WDI_PostMainEvent*/
6031
6032
6033/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006034 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006035--------------------------------------------------------------------------*/
6036/**
6037 @brief Main FSM Start function for all states except BUSY
6038
Jeff Johnsone7245742012-09-05 17:12:55 -07006039
6040 @param pWDICtx: pointer to the WLAN DAL context
6041 pEventData: pointer to the event information structure
6042
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 @see
6044 @return Result of the function call
6045*/
6046WDI_Status
6047WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006048(
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 WDI_ControlBlockType* pWDICtx,
6050 WDI_EventInfoType* pEventData
6051)
6052{
6053
6054 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006055 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006056 ----------------------------------------------------------------------*/
6057 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6058 {
6059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006060 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006061 pWDICtx, pEventData);
6062 return WDI_STATUS_E_FAILURE;
6063 }
6064
6065 wpalMutexAcquire(&pWDICtx->wptMutex);
6066
6067 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006068 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006069 ----------------------------------------------------------------------*/
6070 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6071 {
6072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6073 "Control Transport not yet Open - queueing the request");
6074
6075 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006076 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006077
6078 wpalMutexRelease(&pWDICtx->wptMutex);
6079 return WDI_STATUS_PENDING;
6080 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006081
Jeff Johnson295189b2012-06-20 16:38:30 -07006082 wpalMutexRelease(&pWDICtx->wptMutex);
6083
6084 /*Return Success*/
6085 return WDI_ProcessRequest( pWDICtx, pEventData );
6086
6087}/*WDI_MainStart*/
6088
6089/**
6090 @brief Main FSM Response function for state INIT
6091
Jeff Johnsone7245742012-09-05 17:12:55 -07006092
6093 @param pWDICtx: pointer to the WLAN DAL context
6094 pEventData: pointer to the event information structure
6095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 @see
6097 @return Result of the function call
6098*/
6099WDI_Status
6100WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006101(
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 WDI_ControlBlockType* pWDICtx,
6103 WDI_EventInfoType* pEventData
6104)
6105{
6106 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006108 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006109 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006110
6111 /*Return Success*/
6112 return WDI_STATUS_E_NOT_ALLOWED;
6113}/* WDI_MainRspInit */
6114
6115/**
6116 @brief Main FSM Close function for all states except BUSY
6117
Jeff Johnsone7245742012-09-05 17:12:55 -07006118
6119 @param pWDICtx: pointer to the WLAN DAL context
6120 pEventData: pointer to the event information structure
6121
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 @see
6123 @return Result of the function call
6124*/
6125WDI_Status
6126WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006127(
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 WDI_ControlBlockType* pWDICtx,
6129 WDI_EventInfoType* pEventData
6130)
6131{
6132
6133 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006134 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 ----------------------------------------------------------------------*/
6136 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6137 {
6138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006139 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006140 pWDICtx, pEventData);
6141 return WDI_STATUS_E_FAILURE;
6142 }
6143
6144 /*Return Success*/
6145 return WDI_ProcessRequest( pWDICtx, pEventData );
6146
6147}/*WDI_MainClose*/
6148/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006149 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006150--------------------------------------------------------------------------*/
6151/**
6152 @brief Main FSM Start function for state STARTED
6153
Jeff Johnsone7245742012-09-05 17:12:55 -07006154
6155 @param pWDICtx: pointer to the WLAN DAL context
6156 pEventData: pointer to the event information structure
6157
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 @see
6159 @return Result of the function call
6160*/
6161WDI_Status
6162WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006163(
Jeff Johnson295189b2012-06-20 16:38:30 -07006164 WDI_ControlBlockType* pWDICtx,
6165 WDI_EventInfoType* pEventData
6166)
6167{
6168 WDI_StartRspCb wdiStartRspCb = NULL;
6169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6170
6171 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 ----------------------------------------------------------------------*/
6174 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6175 {
6176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006177 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 pWDICtx, pEventData);
6179 return WDI_STATUS_E_FAILURE;
6180 }
6181
6182 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006183 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006184 ----------------------------------------------------------------------*/
6185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006186 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006187
6188 wpalMutexAcquire(&pWDICtx->wptMutex);
6189
6190 /*Transition back to started because the post function transitioned us to
6191 busy*/
6192 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6193
6194 /*Check to see if any request is pending*/
6195 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006196
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 wpalMutexRelease(&pWDICtx->wptMutex);
6198
6199 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6201
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 /*Notify UMAC*/
6203 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6204
6205 /*Return Success*/
6206 return WDI_STATUS_SUCCESS;
6207
6208}/*WDI_MainStartStarted*/
6209
6210/**
6211 @brief Main FSM Stop function for state STARTED
6212
Jeff Johnsone7245742012-09-05 17:12:55 -07006213
6214 @param pWDICtx: pointer to the WLAN DAL context
6215 pEventData: pointer to the event information structure
6216
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 @see
6218 @return Result of the function call
6219*/
6220WDI_Status
6221WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006222(
Jeff Johnson295189b2012-06-20 16:38:30 -07006223 WDI_ControlBlockType* pWDICtx,
6224 WDI_EventInfoType* pEventData
6225)
6226{
6227 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 ----------------------------------------------------------------------*/
6230 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6231 {
6232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006233 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 pWDICtx, pEventData);
6235 return WDI_STATUS_E_FAILURE;
6236 }
6237
6238 /*State at this point is BUSY - because we enter this state before posting
6239 an event to the FSM in order to prevent potential race conditions*/
6240
6241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6242 "Processing stop request in FSM");
6243
6244 /*Return Success*/
6245 return WDI_ProcessRequest( pWDICtx, pEventData );
6246
6247}/*WDI_MainStopStarted*/
6248/**
6249 @brief Main FSM Request function for state started
6250
Jeff Johnsone7245742012-09-05 17:12:55 -07006251
6252 @param pWDICtx: pointer to the WLAN DAL context
6253 pEventData: pointer to the event information structure
6254
Jeff Johnson295189b2012-06-20 16:38:30 -07006255 @see
6256 @return Result of the function call
6257*/
6258WDI_Status
6259WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006260(
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 WDI_ControlBlockType* pWDICtx,
6262 WDI_EventInfoType* pEventData
6263)
6264{
6265
6266 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006268 ----------------------------------------------------------------------*/
6269 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6270 {
6271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006272 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 pWDICtx, pEventData);
6274 return WDI_STATUS_E_FAILURE;
6275 }
6276
6277 /*State at this point is BUSY - because we enter this state before posting
6278 an event to the FSM in order to prevent potential race conditions*/
6279
6280 /*Return Success*/
6281 return WDI_ProcessRequest( pWDICtx, pEventData );
6282
6283}/*WDI_MainReqStarted*/
6284
6285/**
6286 @brief Main FSM Response function for all states except INIT
6287
Jeff Johnsone7245742012-09-05 17:12:55 -07006288
6289 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006291
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 @see
6293 @return Result of the function call
6294*/
6295WDI_Status
6296WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006297(
Jeff Johnson295189b2012-06-20 16:38:30 -07006298 WDI_ControlBlockType* pWDICtx,
6299 WDI_EventInfoType* pEventData
6300)
6301{
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 wpt_boolean expectedResponse;
6304
6305 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 ----------------------------------------------------------------------*/
6308 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6309 {
6310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006311 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 pWDICtx, pEventData);
6313 return WDI_STATUS_E_FAILURE;
6314 }
6315
6316 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6317 {
6318 /* we received an expected response */
6319 expectedResponse = eWLAN_PAL_TRUE;
6320
6321 /*We expect that we will transition to started after this processing*/
6322 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6323
6324 /* we are no longer expecting a response */
6325 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6326 }
6327 else
6328 {
6329 /* we received an indication or unexpected response */
6330 expectedResponse = eWLAN_PAL_FALSE;
6331 /* for indications no need to update state from what it is right
6332 now, unless it explicitly does it in the indication handler (say
6333 for device failure ind) */
6334 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6335 }
6336
6337 /*Process the response and indication */
6338 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6339
6340 /*Lock the CB as we are about to do a state transition*/
6341 wpalMutexAcquire(&pWDICtx->wptMutex);
6342
6343 /*Transition to the expected state after the response processing
6344 - this should always be started state with the following exceptions:
6345 1. processing of a failed start response
6346 2. device failure detected while processing response
6347 3. stop response received*/
6348 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 /*Dequeue request that may have been queued while we were waiting for the
6351 response */
6352 if ( expectedResponse )
6353 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006354 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006355 }
6356
6357 wpalMutexRelease(&pWDICtx->wptMutex);
6358
6359 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006360 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006361
6362}/*WDI_MainRsp*/
6363
6364/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006365 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006366--------------------------------------------------------------------------*/
6367/**
6368 @brief Main FSM Stop function for state STOPPED
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_MainStopStopped
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_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 pWDICtx, pEventData);
6392 return WDI_STATUS_E_FAILURE;
6393 }
6394
6395 /*We should normally not get a STOP request if we are already stopped
6396 since we should normally be stopped by the UMAC. However in some
6397 error situations we put ourselves in the stopped state without the
6398 UMAC knowing, so when we get a STOP request in this state we still
6399 process it since we need to clean up the underlying state */
6400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6401 "Processing stop request while stopped in FSM");
6402
6403 /*Return Success*/
6404 return WDI_ProcessRequest( pWDICtx, pEventData );
6405
6406}/*WDI_MainStopStopped*/
6407
6408/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006410--------------------------------------------------------------------------*/
6411/**
6412 @brief Main FSM Start function for state BUSY
6413
Jeff Johnsone7245742012-09-05 17:12:55 -07006414
6415 @param pWDICtx: pointer to the WLAN DAL context
6416 pEventData: pointer to the event information structure
6417
Jeff Johnson295189b2012-06-20 16:38:30 -07006418 @see
6419 @return Result of the function call
6420*/
6421WDI_Status
6422WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006423(
Jeff Johnson295189b2012-06-20 16:38:30 -07006424 WDI_ControlBlockType* pWDICtx,
6425 WDI_EventInfoType* pEventData
6426)
6427{
6428 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006430 ----------------------------------------------------------------------*/
6431 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6432 {
6433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006434 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 pWDICtx, pEventData);
6436 return WDI_STATUS_E_FAILURE;
6437 }
6438
6439 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 ----------------------------------------------------------------------*/
6442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6443 "WDI Busy state - queue start request");
6444
6445 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006446 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006447
6448 /*Return Success*/
6449 return WDI_STATUS_PENDING;
6450}/*WDI_MainStartBusy*/
6451
6452/**
6453 @brief Main FSM Stop function for state BUSY
6454
Jeff Johnsone7245742012-09-05 17:12:55 -07006455
6456 @param pWDICtx: pointer to the WLAN DAL context
6457 pEventData: pointer to the event information structure
6458
Jeff Johnson295189b2012-06-20 16:38:30 -07006459 @see
6460 @return Result of the function call
6461*/
6462WDI_Status
6463WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006464(
Jeff Johnson295189b2012-06-20 16:38:30 -07006465 WDI_ControlBlockType* pWDICtx,
6466 WDI_EventInfoType* pEventData
6467)
6468{
6469 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 ----------------------------------------------------------------------*/
6472 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6473 {
6474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006475 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 pWDICtx, pEventData);
6477 return WDI_STATUS_E_FAILURE;
6478 }
6479
6480 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 ----------------------------------------------------------------------*/
6483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6484 "WDI Busy state - queue stop request");
6485
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006488
Jeff Johnson295189b2012-06-20 16:38:30 -07006489}/*WDI_MainStopBusy*/
6490
6491/**
6492 @brief Main FSM Request function for state BUSY
6493
Jeff Johnsone7245742012-09-05 17:12:55 -07006494
6495 @param pWDICtx: pointer to the WLAN DAL context
6496 pEventData: pointer to the event information structure
6497
Jeff Johnson295189b2012-06-20 16:38:30 -07006498 @see
6499 @return Result of the function call
6500*/
6501WDI_Status
6502WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006503(
Jeff Johnson295189b2012-06-20 16:38:30 -07006504 WDI_ControlBlockType* pWDICtx,
6505 WDI_EventInfoType* pEventData
6506)
6507{
6508 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006510 ----------------------------------------------------------------------*/
6511 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6512 {
6513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006514 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 pWDICtx, pEventData);
6516 return WDI_STATUS_E_FAILURE;
6517 }
6518
6519 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006521 ----------------------------------------------------------------------*/
6522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6523 "WDI Busy state - queue request %d because waiting for response %d",
6524 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6525
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006528
Jeff Johnson295189b2012-06-20 16:38:30 -07006529}/*WDI_MainReqBusy*/
6530/**
6531 @brief Main FSM Close function for state BUSY
6532
Jeff Johnsone7245742012-09-05 17:12:55 -07006533
6534 @param pWDICtx: pointer to the WLAN DAL context
6535 pEventData: pointer to the event information structure
6536
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 @see
6538 @return Result of the function call
6539*/
6540WDI_Status
6541WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006542(
Jeff Johnson295189b2012-06-20 16:38:30 -07006543 WDI_ControlBlockType* pWDICtx,
6544 WDI_EventInfoType* pEventData
6545)
6546{
6547 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006549 ----------------------------------------------------------------------*/
6550 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6551 {
6552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006554 pWDICtx, pEventData);
6555 return WDI_STATUS_E_FAILURE;
6556 }
6557
6558 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006559 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 ----------------------------------------------------------------------*/
6561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6562 "WDI Busy state - queue close request");
6563
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006566
Jeff Johnson295189b2012-06-20 16:38:30 -07006567}/*WDI_MainCloseBusy*/
6568
6569/**
6570 @brief Main FSM Shutdown function for INIT & STARTED states
6571
6572
6573 @param pWDICtx: pointer to the WLAN DAL context
6574 pEventData: pointer to the event information structure
6575
6576 @see
6577 @return Result of the function call
6578*/
6579WDI_Status
6580WDI_MainShutdown
6581(
6582 WDI_ControlBlockType* pWDICtx,
6583 WDI_EventInfoType* pEventData
6584)
6585{
6586 /*--------------------------------------------------------------------
6587 Sanity Check
6588 ----------------------------------------------------------------------*/
6589 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6590 {
6591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6592 "Invalid parameters on Main Start %x %x",
6593 pWDICtx, pEventData);
6594 return WDI_STATUS_E_FAILURE;
6595 }
6596
6597 /*State at this point is BUSY - because we enter this state before posting
6598 an event to the FSM in order to prevent potential race conditions*/
6599
6600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6601 "Processing shutdown request in FSM");
6602
6603 /*Return Success*/
6604 return WDI_ProcessRequest( pWDICtx, pEventData );
6605
6606}/*WDI_MainShutdown*/
6607
6608/**
6609 @brief Main FSM Shutdown function for BUSY state
6610
6611
6612 @param pWDICtx: pointer to the WLAN DAL context
6613 pEventData: pointer to the event information structure
6614
6615 @see
6616 @return Result of the function call
6617*/
6618WDI_Status
6619WDI_MainShutdownBusy
6620(
6621 WDI_ControlBlockType* pWDICtx,
6622 WDI_EventInfoType* pEventData
6623)
6624{
6625 /*--------------------------------------------------------------------
6626 Sanity Check
6627 ----------------------------------------------------------------------*/
6628 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6629 {
6630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6631 "Invalid parameters on Main Start %x %x",
6632 pWDICtx, pEventData);
6633 return WDI_STATUS_E_FAILURE;
6634 }
6635
6636 /* If you are waiting for a HAL response at this stage, you are not
6637 * going to get it. Riva is already shutdown/crashed.
6638 */
6639 wpalTimerStop(&gWDICb.wptResponseTimer);
6640
6641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6642 "Processing shutdown request in FSM: Busy state ");
6643
6644 return WDI_ProcessRequest( pWDICtx, pEventData );
6645
6646}/*WDI_MainShutdownBusy*/
6647
6648
Jeff Johnsone7245742012-09-05 17:12:55 -07006649/*=======================================================================
6650
Jeff Johnson295189b2012-06-20 16:38:30 -07006651 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006652
Jeff Johnson295189b2012-06-20 16:38:30 -07006653*=======================================================================*/
6654
6655/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006656 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006657========================================================================*/
6658/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006661
6662 @param pWDICtx: pointer to the WLAN DAL context
6663 pEventData: pointer to the event information structure
6664
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 @see
6666 @return Result of the function call
6667*/
6668WDI_Status
6669WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006670(
Jeff Johnson295189b2012-06-20 16:38:30 -07006671 WDI_ControlBlockType* pWDICtx,
6672 WDI_EventInfoType* pEventData
6673)
6674{
6675 WDI_StartReqParamsType* pwdiStartParams = NULL;
6676 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006677 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 wpt_uint16 usDataOffset = 0;
6679 wpt_uint16 usSendSize = 0;
6680
Jeff Johnsone7245742012-09-05 17:12:55 -07006681 tHalMacStartReqMsg halStartReq;
6682 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6684
6685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 -------------------------------------------------------------------------*/
6688 if (( NULL == pEventData ) ||
6689 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6690 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6691 {
6692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006693 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006696 }
6697
6698 /*-----------------------------------------------------------------------
6699 Get message buffer
6700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 pwdiStartParams->usConfigBufferLen;
6703
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 usLen,
6706 &pSendBuffer, &usDataOffset, &usSendSize))||
6707 ( usSendSize < (usDataOffset + usLen )))
6708 {
6709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6710 "Unable to get send buffer in start req %x %x %x",
6711 pEventData, pwdiStartParams, wdiStartRspCb);
6712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 }
6715
6716 /*-----------------------------------------------------------------------
6717 Fill in the message
6718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006719 halStartReq.startReqParams.driverType =
6720 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006721
Jeff Johnsone7245742012-09-05 17:12:55 -07006722 halStartReq.startReqParams.uConfigBufferLen =
6723 pwdiStartParams->usConfigBufferLen;
6724 wpalMemoryCopy( pSendBuffer+usDataOffset,
6725 &halStartReq.startReqParams,
6726 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006727
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 usDataOffset += sizeof(halStartReq.startReqParams);
6729 wpalMemoryCopy( pSendBuffer+usDataOffset,
6730 pwdiStartParams->pConfigBuffer,
6731 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006732
6733 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006734 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006735
6736 /*Save Low Level Ind CB and associated user data - it will be used further
6737 on when an indication is coming from the lower MAC*/
6738 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006739 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006740
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6747
Jeff Johnsone7245742012-09-05 17:12:55 -07006748
Jeff Johnson295189b2012-06-20 16:38:30 -07006749}/*WDI_ProcessStartReq*/
6750
6751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006754
6755 @param pWDICtx: pointer to the WLAN DAL context
6756 pEventData: pointer to the event information structure
6757
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 @see
6759 @return Result of the function call
6760*/
6761WDI_Status
6762WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006763(
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 WDI_ControlBlockType* pWDICtx,
6765 WDI_EventInfoType* pEventData
6766)
6767{
6768 WDI_StopReqParamsType* pwdiStopParams = NULL;
6769 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 wpt_uint16 usDataOffset = 0;
6772 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006773 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6776
6777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 -------------------------------------------------------------------------*/
6780 if (( NULL == pEventData ) ||
6781 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6782 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6783 {
6784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006787 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 }
6789
6790 /*-----------------------------------------------------------------------
6791 Get message buffer
6792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006794 sizeof(halStopReq.stopReqParams),
6795 &pSendBuffer, &usDataOffset, &usSendSize))||
6796 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6797 {
6798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6799 "Unable to get send buffer in stop req %x %x %x",
6800 pEventData, pwdiStopParams, wdiStopRspCb);
6801 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006802 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 }
6804
6805 /*-----------------------------------------------------------------------
6806 Fill in the message
6807 -----------------------------------------------------------------------*/
6808 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6809 pwdiStopParams->wdiStopReason);
6810
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 wpalMemoryCopy( pSendBuffer+usDataOffset,
6812 &halStopReq.stopReqParams,
6813 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006814
6815 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006817
6818 /*! TO DO: stop the data services */
6819 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6820 {
6821 /*Stop the STA Table !UT- check this logic again
6822 It is safer to do it here than on the response - because a stop is imminent*/
6823 WDI_STATableStop(pWDICtx);
6824
6825 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006826 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6827 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006828 {
6829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6830 "WDI Init failed to reset power state event");
6831
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006833 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006834 }
6835 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006836 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6837 if( eWLAN_PAL_STATUS_SUCCESS != status )
6838 {
6839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6840 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6841 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006842 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006843 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006844 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006845 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006847 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6848 WDI_SET_POWER_STATE_TIMEOUT);
6849 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006850 {
6851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6852 "WDI Init failed to wait on an event");
6853
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006855 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006856 }
6857 }
6858
6859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006862 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006863 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6864
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006865fail:
6866 // Release the message buffer so we don't leak
6867 wpalMemoryFree(pSendBuffer);
6868
6869failRequest:
6870 //WDA should have failure check to avoid the memory leak
6871 return WDI_STATUS_E_FAILURE;
6872
Jeff Johnson295189b2012-06-20 16:38:30 -07006873}/*WDI_ProcessStopReq*/
6874
6875/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006878
6879 @param pWDICtx: pointer to the WLAN DAL context
6880 pEventData: pointer to the event information structure
6881
Jeff Johnson295189b2012-06-20 16:38:30 -07006882 @see
6883 @return Result of the function call
6884*/
6885WDI_Status
6886WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006887(
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 WDI_ControlBlockType* pWDICtx,
6889 WDI_EventInfoType* pEventData
6890)
6891{
Jeff Johnsone7245742012-09-05 17:12:55 -07006892 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6894
6895 /*Lock control block for cleanup*/
6896 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006897
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 /*Clear all pending request*/
6899 WDI_ClearPendingRequests(pWDICtx);
6900
6901 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006903
6904 /* Close Data transport*/
6905 /* FTM mode does not open Data Path */
6906 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6907 {
6908 WDTS_Close(pWDICtx);
6909 }
6910
6911 /*Close the STA Table !UT- check this logic again*/
6912 WDI_STATableClose(pWDICtx);
6913
6914 /*close the PAL */
6915 wptStatus = wpalClose(pWDICtx->pPALContext);
6916 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6917 {
6918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6919 "Failed to wpal Close %d", wptStatus);
6920 WDI_ASSERT(0);
6921 }
6922
6923 /*Transition back to init state*/
6924 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6925
6926 wpalMutexRelease(&pWDICtx->wptMutex);
6927
6928 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006930
Jeff Johnsone7245742012-09-05 17:12:55 -07006931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006932}/*WDI_ProcessCloseReq*/
6933
6934
6935/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006937===========================================================================*/
6938
6939/**
6940 @brief Process Init Scan Request function (called when Main FSM
6941 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006942
6943 @param pWDICtx: pointer to the WLAN DAL context
6944 pEventData: pointer to the event information structure
6945
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 @see
6947 @return Result of the function call
6948*/
6949WDI_Status
6950WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006951(
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 WDI_ControlBlockType* pWDICtx,
6953 WDI_EventInfoType* pEventData
6954)
6955{
6956 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6957 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 wpt_uint16 usDataOffset = 0;
6960 wpt_uint16 usSendSize = 0;
6961 wpt_uint8 i = 0;
6962
6963 tHalInitScanReqMsg halInitScanReqMsg;
6964
Jeff Johnsone7245742012-09-05 17:12:55 -07006965 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 * It shold be removed once host and riva changes are in sync*/
6967 tHalInitScanConReqMsg halInitScanConReqMsg;
6968
6969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6970
6971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 -------------------------------------------------------------------------*/
6974 if (( NULL == pEventData ) ||
6975 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6976 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6977 {
6978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 }
6983
6984#if 0
6985 wpalMutexAcquire(&pWDICtx->wptMutex);
6986 /*-----------------------------------------------------------------------
6987 Check to see if SCAN is already in progress - if so reject the req
6988 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 -----------------------------------------------------------------------*/
6991 if ( pWDICtx->bScanInProgress )
6992 {
6993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6994 "Scan is already in progress - subsequent scan is not allowed"
6995 " until the first scan completes");
6996
6997 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 }
7000
Jeff Johnsone7245742012-09-05 17:12:55 -07007001 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7002 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007003
7004 wpalMutexRelease(&pWDICtx->wptMutex);
7005#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007006 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 * It shold be removed once host and riva changes are in sync*/
7010 /*-----------------------------------------------------------------------
7011 Get message buffer
7012 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 sizeof(halInitScanConReqMsg.initScanParams),
7015 &pSendBuffer, &usDataOffset, &usSendSize))||
7016 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7017 {
7018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7019 "Unable to get send buffer in init scan req %x %x %x",
7020 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 }
7024
7025
7026 /*-----------------------------------------------------------------------
7027 Fill in the message
7028 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7031
7032 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7033 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7034
Jeff Johnsone7245742012-09-05 17:12:55 -07007035 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007036 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7041
7042 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7043 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7044
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7046 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007047
Jeff Johnsone7245742012-09-05 17:12:55 -07007048 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007049 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7050
7051 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7052 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007053 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7055 }
7056
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 wpalMemoryCopy( pSendBuffer+usDataOffset,
7058 &halInitScanConReqMsg.initScanParams,
7059 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 }
7061 else
7062 {
7063 /*-----------------------------------------------------------------------
7064 Get message buffer
7065 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 sizeof(halInitScanReqMsg.initScanParams),
7068 &pSendBuffer, &usDataOffset, &usSendSize))||
7069 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7070 {
7071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7072 "Unable to get send buffer in init scan req %x %x %x",
7073 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 }
7077
7078
7079 /*-----------------------------------------------------------------------
7080 Fill in the message
7081 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7084
7085 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7086 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7087
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7094
7095 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7096 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7097
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007099 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7100
7101 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7102 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7105 }
7106
Jeff Johnsone7245742012-09-05 17:12:55 -07007107 wpalMemoryCopy( pSendBuffer+usDataOffset,
7108 &halInitScanReqMsg.initScanParams,
7109 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 }
7111
7112 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007114
7115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7120
7121}/*WDI_ProcessInitScanReq*/
7122
7123/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007125 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007126
7127 @param pWDICtx: pointer to the WLAN DAL context
7128 pEventData: pointer to the event information structure
7129
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 @see
7131 @return Result of the function call
7132*/
7133WDI_Status
7134WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007135(
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 WDI_ControlBlockType* pWDICtx,
7137 WDI_EventInfoType* pEventData
7138)
7139{
7140 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7141 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007143 wpt_uint16 usDataOffset = 0;
7144 wpt_uint16 usSendSize = 0;
7145
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7148
7149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007151 -------------------------------------------------------------------------*/
7152 if (( NULL == pEventData ) ||
7153 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7154 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7155 {
7156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 }
7161
7162#if 0
7163 wpalMutexAcquire(&pWDICtx->wptMutex);
7164 /*-----------------------------------------------------------------------
7165 Check to see if SCAN is already in progress - start scan is only
7166 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7171 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7172 {
7173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7174 "Scan start not allowed in this state %d %d",
7175 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007176
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007178 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 }
7180
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007182
7183 wpalMutexRelease(&pWDICtx->wptMutex);
7184#endif
7185
7186 /*-----------------------------------------------------------------------
7187 Get message buffer
7188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007190 sizeof(halStartScanReqMsg.startScanParams),
7191 &pSendBuffer, &usDataOffset, &usSendSize))||
7192 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7193 {
7194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7195 "Unable to get send buffer in start scan req %x %x %x",
7196 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 }
7200
Jeff Johnsone7245742012-09-05 17:12:55 -07007201 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 wpalMemoryCopy( pSendBuffer+usDataOffset,
7204 &halStartScanReqMsg.startScanParams,
7205 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007206
7207 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007208 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007209
7210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7215}/*WDI_ProcessStartScanReq*/
7216
7217
7218/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007219 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007220 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007221
7222 @param pWDICtx: pointer to the WLAN DAL context
7223 pEventData: pointer to the event information structure
7224
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 @see
7226 @return Result of the function call
7227*/
7228WDI_Status
7229WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007230(
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 WDI_ControlBlockType* pWDICtx,
7232 WDI_EventInfoType* pEventData
7233)
7234{
7235 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7236 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007237 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 wpt_uint16 usDataOffset = 0;
7239 wpt_uint16 usSendSize = 0;
7240
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7243
7244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007246 -------------------------------------------------------------------------*/
7247 if (( NULL == pEventData ) ||
7248 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7249 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7250 {
7251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 }
7256
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7258 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 * forwarded to HAL and result in hang*/
7260#if 0
7261 wpalMutexAcquire(&pWDICtx->wptMutex);
7262 /*-----------------------------------------------------------------------
7263 Check to see if SCAN is already in progress - end scan is only
7264 allowed when a scan is ongoing and the state of the scan procedure
7265 is started
7266 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7269 {
7270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7271 "End start not allowed in this state %d %d",
7272 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 }
7277
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007279
7280 wpalMutexRelease(&pWDICtx->wptMutex);
7281#endif
7282
7283 /*-----------------------------------------------------------------------
7284 Get message buffer
7285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007287 sizeof(halEndScanReqMsg.endScanParams),
7288 &pSendBuffer, &usDataOffset, &usSendSize))||
7289 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7290 {
7291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7292 "Unable to get send buffer in start scan req %x %x %x",
7293 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 }
7297
7298 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7299
Jeff Johnsone7245742012-09-05 17:12:55 -07007300 wpalMemoryCopy( pSendBuffer+usDataOffset,
7301 &halEndScanReqMsg.endScanParams,
7302 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007303
7304 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007306
7307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7312}/*WDI_ProcessEndScanReq*/
7313
7314
7315/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007318
7319 @param pWDICtx: pointer to the WLAN DAL context
7320 pEventData: pointer to the event information structure
7321
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 @see
7323 @return Result of the function call
7324*/
7325WDI_Status
7326WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007327(
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 WDI_ControlBlockType* pWDICtx,
7329 WDI_EventInfoType* pEventData
7330)
7331{
7332 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7333 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 wpt_uint16 usDataOffset = 0;
7336 wpt_uint16 usSendSize = 0;
7337 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007338 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7341
7342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 -------------------------------------------------------------------------*/
7345 if (( NULL == pEventData ) ||
7346 ( NULL == pEventData->pEventData) ||
7347 ( NULL == pEventData->pCBfnc))
7348 {
7349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007350 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 }
7354
7355 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7356 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7358 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 * forwarded to HAL and result in hang*/
7360#if 0
7361 wpalMutexAcquire(&pWDICtx->wptMutex);
7362 /*-----------------------------------------------------------------------
7363 Check to see if SCAN is already in progress
7364 Finish scan gets invoked any scan states. ie. abort scan
7365 It should be allowed in any states.
7366 -----------------------------------------------------------------------*/
7367 if ( !pWDICtx->bScanInProgress )
7368 {
7369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7370 "Finish start not allowed in this state %d",
7371 pWDICtx->bScanInProgress );
7372
7373 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 }
7376
7377 /*-----------------------------------------------------------------------
7378 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7382 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 wpalMutexRelease(&pWDICtx->wptMutex);
7384#endif
7385
7386 if ( pWDICtx->bInBmps )
7387 {
7388 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007389 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7390 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7391 {
7392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7393 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7394 WDI_ASSERT(0);
7395 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 }
7397
7398 /*-----------------------------------------------------------------------
7399 Get message buffer
7400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 sizeof(halFinishScanReqMsg.finishScanParams),
7403 &pSendBuffer, &usDataOffset, &usSendSize))||
7404 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7405 {
7406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7407 "Unable to get send buffer in start scan req %x %x %x",
7408 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 }
7412
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7415
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7418
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7421
7422 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7423 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7424
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007430 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7431
Jeff Johnsone7245742012-09-05 17:12:55 -07007432 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7434
7435 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7436 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007437 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7439 }
7440
7441 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7442 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7443
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 wpalMemoryCopy( pSendBuffer+usDataOffset,
7445 &halFinishScanReqMsg.finishScanParams,
7446 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007447
7448 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007449 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007450
7451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7456}/*WDI_ProcessFinishScanReq*/
7457
7458
7459/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007461==========================================================================*/
7462/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 @brief Process BSS Join for a given Session
7464
7465 @param pWDICtx: pointer to the WLAN DAL context
7466 pEventData: pointer to the event information structure
7467
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 @see
7469 @return Result of the function call
7470*/
7471WDI_Status
7472WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007473(
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 WDI_ControlBlockType* pWDICtx,
7475 WDI_JoinReqParamsType* pwdiJoinParams,
7476 WDI_JoinRspCb wdiJoinRspCb,
7477 void* pUserData
7478)
7479{
7480 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007481 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 wpt_uint16 usDataOffset = 0;
7483 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007485
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7488
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007489 wpalMutexAcquire(&pWDICtx->wptMutex);
7490
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 /*------------------------------------------------------------------------
7492 Check to see if we have any session with this BSSID already stored, we
7493 should not
7494 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7496 pwdiJoinParams->wdiReqInfo.macBSSID,
7497 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007498
7499 if ( NULL != pBSSSes )
7500 {
7501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007502 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7503 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007504
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007505 /*reset the bAssociationInProgress otherwise the next
7506 *join request will be queued*/
7507 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7508 wpalMutexRelease(&pWDICtx->wptMutex);
7509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 }
7511
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 if ( NULL == pBSSSes )
7517 {
7518
7519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7520 "DAL has no free sessions - cannot run another join");
7521
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007522 /*reset the bAssociationInProgress otherwise the next
7523 *join request will be queued*/
7524 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 }
7528
7529 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7531 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 WDI_MAC_ADDR_LEN);
7533
7534 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007537
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 wpalMutexRelease(&pWDICtx->wptMutex);
7539
7540 /*-----------------------------------------------------------------------
7541 Get message buffer
7542 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 sizeof(halJoinReqMsg.joinReqParams),
7545 &pSendBuffer, &usDataOffset, &usSendSize))||
7546 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7547 {
7548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7549 "Unable to get send buffer in join req %x %x %x",
7550 pUserData, pwdiJoinParams, wdiJoinRspCb);
7551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 }
7554
7555 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007557
7558 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 pwdiJoinParams->wdiReqInfo.macSTASelf,
7560 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007561
Jeff Johnsone7245742012-09-05 17:12:55 -07007562 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7564
7565 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7566
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007567#ifdef WLAN_FEATURE_VOWIFI
7568 halJoinReqMsg.joinReqParams.maxTxPower =
7569 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7570#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007571 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007572 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7573#endif
7574
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7577 wdiSecondaryChannelOffset);
7578
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 wpalMemoryCopy( pSendBuffer+usDataOffset,
7580 &halJoinReqMsg.joinReqParams,
7581 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007582
7583 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007585
7586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7590 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007591
7592}/*WDI_ProcessBSSSessionJoinReq*/
7593
7594/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007597
7598 @param pWDICtx: pointer to the WLAN DAL context
7599 pEventData: pointer to the event information structure
7600
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 @see
7602 @return Result of the function call
7603*/
7604WDI_Status
7605WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007606(
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 WDI_ControlBlockType* pWDICtx,
7608 WDI_EventInfoType* pEventData
7609)
7610{
7611 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7612 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7613 WDI_JoinRspCb wdiJoinRspCb = NULL;
7614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7615
7616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 -------------------------------------------------------------------------*/
7619 if (( NULL == pEventData ) ||
7620 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7621 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7622 {
7623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007628
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 /*-------------------------------------------------------------------------
7630 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 -------------------------------------------------------------------------*/
7633 wpalMutexAcquire(&pWDICtx->wptMutex);
7634
7635 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7636 {
7637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7638 "Association is currently in progress, queueing new join req");
7639
7640 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 pwdiJoinParams->wdiReqInfo.macBSSID);
7643
7644 wpalMutexRelease(&pWDICtx->wptMutex);
7645
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 }
7648
7649 /*Starting a new association */
7650 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7651 wpalMutexRelease(&pWDICtx->wptMutex);
7652
7653 /*Process the Join Request*/
7654 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7655 wdiJoinRspCb,pEventData->pUserData);
7656
7657}/*WDI_ProcessJoinReq*/
7658
7659
7660/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007663
7664 @param pWDICtx: pointer to the WLAN DAL context
7665 pEventData: pointer to the event information structure
7666
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 @see
7668 @return Result of the function call
7669*/
7670WDI_Status
7671WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007672(
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 WDI_ControlBlockType* pWDICtx,
7674 WDI_EventInfoType* pEventData
7675)
7676{
7677 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7678 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 wpt_uint16 uMsgSize = 0;
7682 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 wpt_uint16 usDataOffset = 0;
7684 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007686
Jeff Johnsone7245742012-09-05 17:12:55 -07007687 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7689
7690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 -------------------------------------------------------------------------*/
7693 if (( NULL == pEventData ) ||
7694 ( NULL == pEventData->pEventData ) ||
7695 ( NULL == pEventData->pCBfnc ))
7696 {
7697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 }
7702
7703 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7704 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7705 /*-------------------------------------------------------------------------
7706 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 -------------------------------------------------------------------------*/
7709 wpalMutexAcquire(&pWDICtx->wptMutex);
7710
7711 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7715 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7716 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007717
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 {
7720#ifdef WLAN_FEATURE_VOWIFI_11R
7721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007724 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 if ( NULL == pBSSSes )
7726 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007727
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7729 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007730
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007734
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7737 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007739
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7743#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 * Request in case of IBSS*/
7746 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7747 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7748 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7749 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7750 {
7751 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 if ( NULL == pBSSSes )
7756 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007757
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7759 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007760
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007764
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7767 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007769
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7773 }
7774 else
7775 {
7776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7778 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7779 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7780
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 /* for IBSS testing */
7782 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007783 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 }
7785#endif
7786 }
7787
7788 /*------------------------------------------------------------------------
7789 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007790 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 ------------------------------------------------------------------------*/
7792 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7793 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7795 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7796 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7797 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007798
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007800
7801 wpalMutexRelease(&pWDICtx->wptMutex);
7802
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 }
7805
7806 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7808 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 sizeof(pWDICtx->wdiCachedConfigBssReq));
7810
7811 wpalMutexRelease(&pWDICtx->wptMutex);
7812
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7814#ifdef WLAN_FEATURE_11AC
7815 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007816 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 else
7818#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007819 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007820
7821 /*-----------------------------------------------------------------------
7822 Get message buffer
7823 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7826 ( usSendSize < (usDataOffset + uMsgSize )))
7827 {
7828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7829 "Unable to get send buffer in config bss req %x %x %x",
7830 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 }
7834
7835 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007836#ifdef WLAN_FEATURE_11AC
7837 if (WDI_getFwWlanFeatCaps(DOT11AC))
7838 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7839 &pwdiConfigBSSParams->wdiReqInfo);
7840 else
7841#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 &pwdiConfigBSSParams->wdiReqInfo);
7844
7845 /* Need to fill in the STA Index to invalid, since at this point we have not
7846 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007848
7849 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007850 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7851
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007852#ifdef WLAN_FEATURE_11AC
7853 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7854 wpalMemoryCopy( pSendBuffer+usDataOffset,
7855 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7856 uMsgSize);
7857 }else
7858#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007859 {
7860 if ( uMsgSize <= sizeof(tConfigBssParams) )
7861 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007862 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007863 &halConfigBssReqMsg.uBssParams.configBssParams,
7864 uMsgSize);
7865 }
7866 else
7867 {
7868 return WDI_STATUS_E_FAILURE;
7869 }
7870 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007871
7872 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007873 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007874
7875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7879 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 WDI_CONFIG_BSS_RESP);
7881
7882}/*WDI_ProcessConfigBSSReq*/
7883
7884
7885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007888
7889 @param pWDICtx: pointer to the WLAN DAL context
7890 pEventData: pointer to the event information structure
7891
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 @see
7893 @return Result of the function call
7894*/
7895WDI_Status
7896WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007897(
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 WDI_ControlBlockType* pWDICtx,
7899 WDI_EventInfoType* pEventData
7900)
7901{
7902 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7903 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 wpt_uint16 usDataOffset = 0;
7908 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7913
7914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 -------------------------------------------------------------------------*/
7917 if (( NULL == pEventData ) ||
7918 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7919 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7920 {
7921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 }
7926
7927 /*-------------------------------------------------------------------------
7928 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 -------------------------------------------------------------------------*/
7931 wpalMutexAcquire(&pWDICtx->wptMutex);
7932
7933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7937 pwdiDelBSSParams->ucBssIdx,
7938 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007939
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 {
7942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 "%s: BSS does not yet exist. ucBssIdx %d",
7944 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007945
7946 wpalMutexRelease(&pWDICtx->wptMutex);
7947
7948 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007950
7951 /*------------------------------------------------------------------------
7952 Check if this BSS is being currently processed or queued,
7953 if queued - queue the new request as well
7954 ------------------------------------------------------------------------*/
7955 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7958 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7959 __func__, pwdiDelBSSParams->ucBssIdx);
7960
7961 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7962
7963 wpalMutexRelease(&pWDICtx->wptMutex);
7964
7965 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007967
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 /*-----------------------------------------------------------------------
7969 If we receive a Del BSS request for an association that is already in
7970 progress, it indicates that the assoc has failed => we no longer have
7971 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 -----------------------------------------------------------------------*/
7974 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7975 {
7976 /*We can switch to false here because even if a subsequent Join comes in
7977 it will only be processed when DAL transitions out of BUSY state which
7978 happens when the Del BSS request comes */
7979 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7980
7981 /*Former association is complete - prepare next pending assoc for
7982 processing */
7983 WDI_DequeueAssocRequest(pWDICtx);
7984 }
7985
7986 wpalMutexRelease(&pWDICtx->wptMutex);
7987 /*-----------------------------------------------------------------------
7988 Get message buffer
7989 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 sizeof(halBssReqMsg.deleteBssParams),
7992 &pSendBuffer, &usDataOffset, &usSendSize))||
7993 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7994 {
7995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7996 "Unable to get send buffer in start req %x %x %x",
7997 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 }
8001
8002 /*Fill in the message request structure*/
8003
8004 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008005 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008006
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 wpalMemoryCopy( pSendBuffer+usDataOffset,
8008 &halBssReqMsg.deleteBssParams,
8009 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008010
8011 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8020
Jeff Johnsone7245742012-09-05 17:12:55 -07008021
Jeff Johnson295189b2012-06-20 16:38:30 -07008022}/*WDI_ProcessDelBSSReq*/
8023
8024/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008027
8028 @param pWDICtx: pointer to the WLAN DAL context
8029 pEventData: pointer to the event information structure
8030
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 @see
8032 @return Result of the function call
8033*/
8034WDI_Status
8035WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008036(
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 WDI_ControlBlockType* pWDICtx,
8038 WDI_EventInfoType* pEventData
8039)
8040{
8041 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8042 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 wpt_uint16 usDataOffset = 0;
8047 wpt_uint16 usSendSize = 0;
8048 wpt_uint16 uMsgSize = 0;
8049 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8054
8055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 -------------------------------------------------------------------------*/
8058 if (( NULL == pEventData ) ||
8059 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8060 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8061 {
8062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 }
8067
8068 /*-------------------------------------------------------------------------
8069 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 -------------------------------------------------------------------------*/
8072 wpalMutexAcquire(&pWDICtx->wptMutex);
8073
8074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8078 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8079 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008080
8081 if ( NULL == pBSSSes )
8082 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8084 "%s: Association sequence for this BSS does not yet exist - "
8085 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8086 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008087
8088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 }
8091
8092 /*------------------------------------------------------------------------
8093 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008094 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 ------------------------------------------------------------------------*/
8096 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8097 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8099 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8100 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008101
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008103
8104 wpalMutexRelease(&pWDICtx->wptMutex);
8105
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 }
8108
8109 /*-----------------------------------------------------------------------
8110 If Post Assoc was not yet received - the current association must
8111 be in progress
8112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8115 {
8116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8117 "Association sequence for this BSS association no longer in "
8118 "progress - not allowed");
8119
8120 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 }
8123
8124 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008126 -----------------------------------------------------------------------*/
8127 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8128 {
8129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8130 "Post Assoc not allowed before JOIN - failing request");
8131
8132 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 }
8135
8136 wpalMutexRelease(&pWDICtx->wptMutex);
8137
8138 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8139 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8140 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8145 ( usSendSize < (usDataOffset + uMsgSize )))
8146 {
8147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8148 "Unable to get send buffer in start req %x %x %x",
8149 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 }
8153
8154 /*Copy the STA parameters */
8155 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8156 &pwdiPostAssocParams->wdiSTAParams );
8157
8158 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_STATableFindStaidByAddr(pWDICtx,
8161 pwdiPostAssocParams->wdiSTAParams.macSTA,
8162 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8163 {
8164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8165 "This station does not exist in the WDI Station Table %d");
8166 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008167 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 }
8170
8171 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 pBSSSes->ucBSSIdx;
8174
8175 /*Copy the BSS parameters */
8176 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8177 &pwdiPostAssocParams->wdiBSSParams);
8178
8179 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 WDI_STATableFindStaidByAddr(pWDICtx,
8182 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 {
8185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8186 "This station does not exist in the WDI Station Table %d");
8187 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008188 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 }
8191
8192 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 pBSSSes->ucBSSIdx;
8195
Jeff Johnsone7245742012-09-05 17:12:55 -07008196
8197 wpalMemoryCopy( pSendBuffer+usDataOffset,
8198 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8199 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008200
8201 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8202
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8204 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8205 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
Jeff Johnsone7245742012-09-05 17:12:55 -07008207
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008209 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008210
Jeff Johnsone7245742012-09-05 17:12:55 -07008211
8212 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008215
8216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8221
Jeff Johnsone7245742012-09-05 17:12:55 -07008222
Jeff Johnson295189b2012-06-20 16:38:30 -07008223}/*WDI_ProcessPostAssocReq*/
8224
8225/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008228
8229 @param pWDICtx: pointer to the WLAN DAL context
8230 pEventData: pointer to the event information structure
8231
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 @see
8233 @return Result of the function call
8234*/
8235WDI_Status
8236WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008237(
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 WDI_ControlBlockType* pWDICtx,
8239 WDI_EventInfoType* pEventData
8240)
8241{
8242 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8243 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008246 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 wpt_uint16 usDataOffset = 0;
8248 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8251
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8254
8255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 -------------------------------------------------------------------------*/
8258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8259 ( NULL == pEventData->pCBfnc ))
8260 {
8261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 }
8266
8267 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8268 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8269 /*-------------------------------------------------------------------------
8270 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 -------------------------------------------------------------------------*/
8273 wpalMutexAcquire(&pWDICtx->wptMutex);
8274
8275 /*------------------------------------------------------------------------
8276 Find the BSS for which the request is made and identify WDI session
8277 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8279 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 &macBSSID))
8281 {
8282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8283 "This station does not exist in the WDI Station Table %d");
8284 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 }
8287
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8289 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8292 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8293 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008294
8295 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 }
8298
8299 /*------------------------------------------------------------------------
8300 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 ------------------------------------------------------------------------*/
8303 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8304 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8306 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8307 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008308
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 }
8313
8314 wpalMutexRelease(&pWDICtx->wptMutex);
8315 /*-----------------------------------------------------------------------
8316 Get message buffer
8317 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 sizeof(halDelStaReqMsg.delStaParams),
8320 &pSendBuffer, &usDataOffset, &usSendSize))||
8321 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8322 {
8323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8324 "Unable to get send buffer in start req %x %x %x",
8325 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 }
8329
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8331 wpalMemoryCopy( pSendBuffer+usDataOffset,
8332 &halDelStaReqMsg.delStaParams,
8333 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008334
8335 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
8338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8343
8344}/*WDI_ProcessDelSTAReq*/
8345
8346
8347/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008349==========================================================================*/
8350/**
8351 @brief Process Set BSS Key Request function (called when Main FSM
8352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008353
8354 @param pWDICtx: pointer to the WLAN DAL context
8355 pEventData: pointer to the event information structure
8356
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 @see
8358 @return Result of the function call
8359*/
8360WDI_Status
8361WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008362(
Jeff Johnson295189b2012-06-20 16:38:30 -07008363 WDI_ControlBlockType* pWDICtx,
8364 WDI_EventInfoType* pEventData
8365)
8366{
8367 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8368 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 wpt_uint16 usDataOffset = 0;
8373 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8376 wpt_uint8 keyIndex = 0;
8377
8378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8379
8380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 -------------------------------------------------------------------------*/
8383 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8384 ( NULL == pEventData->pCBfnc ))
8385 {
8386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 }
8391
8392 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8393 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8394 /*-------------------------------------------------------------------------
8395 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 -------------------------------------------------------------------------*/
8398 wpalMutexAcquire(&pWDICtx->wptMutex);
8399
8400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8404 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8405 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008406
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 {
8409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8411 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008412
8413 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 }
8416
8417 /*------------------------------------------------------------------------
8418 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 ------------------------------------------------------------------------*/
8421 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8422 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8424 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8425 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008426
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 }
8431
8432
8433 wpalMutexRelease(&pWDICtx->wptMutex);
8434 /*-----------------------------------------------------------------------
8435 Get message buffer
8436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8439 &pSendBuffer, &usDataOffset, &usSendSize))||
8440 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8441 {
8442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8443 "Unable to get send buffer in set bss key req %x %x %x",
8444 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 }
8448
8449 /*-----------------------------------------------------------------------
8450 Copy the Key parameters into the HAL message
8451 -----------------------------------------------------------------------*/
8452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008454
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8457
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8460
8461 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8462 keyIndex++)
8463 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8466 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8467 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8468 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8469 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8470 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8477 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 WDI_MAX_KEY_LENGTH);
8480 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008481
8482 wpalMemoryCopy( pSendBuffer+usDataOffset,
8483 &halSetBssKeyReqMsg.setBssKeyParams,
8484 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008485
8486 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008488
8489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8493 wdiSetBSSKeyRspCb, pEventData->pUserData,
8494 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008495
8496}/*WDI_ProcessSetBssKeyReq*/
8497
8498/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008501
8502 @param pWDICtx: pointer to the WLAN DAL context
8503 pEventData: pointer to the event information structure
8504
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 @see
8506 @return Result of the function call
8507*/
8508WDI_Status
8509WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008510(
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 WDI_ControlBlockType* pWDICtx,
8512 WDI_EventInfoType* pEventData
8513)
8514{
8515 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8516 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 wpt_uint16 usDataOffset = 0;
8521 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8525
8526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 -------------------------------------------------------------------------*/
8529 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8530 ( NULL == pEventData->pCBfnc ))
8531 {
8532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 }
8537
8538 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8539 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8540 /*-------------------------------------------------------------------------
8541 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 -------------------------------------------------------------------------*/
8544 wpalMutexAcquire(&pWDICtx->wptMutex);
8545
8546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8550 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8551 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008552
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 {
8555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8557 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008558
8559 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 }
8562
8563 /*------------------------------------------------------------------------
8564 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 ------------------------------------------------------------------------*/
8567 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8568 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8570 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8571 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008572
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008575 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 }
8577
8578
8579 wpalMutexRelease(&pWDICtx->wptMutex);
8580
8581 /*-----------------------------------------------------------------------
8582 Get message buffer
8583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8586 &pSendBuffer, &usDataOffset, &usSendSize))||
8587 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8588 {
8589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8590 "Unable to get send buffer in set bss key req %x %x %x",
8591 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 }
8595 /*-----------------------------------------------------------------------
8596 Copy the Key parameters into the HAL message
8597 -----------------------------------------------------------------------*/
8598 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8599
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8602
8603 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8604
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8607
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 wpalMemoryCopy( pSendBuffer+usDataOffset,
8609 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8610 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008611
8612 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008614
8615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008621}/*WDI_ProcessRemoveBssKeyReq*/
8622
8623/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008626
8627 @param pWDICtx: pointer to the WLAN DAL context
8628 pEventData: pointer to the event information structure
8629
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 @see
8631 @return Result of the function call
8632*/
8633WDI_Status
8634WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008635(
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 WDI_ControlBlockType* pWDICtx,
8637 WDI_EventInfoType* pEventData
8638)
8639{
8640 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8641 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8642 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 wpt_uint16 usDataOffset = 0;
8645 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8650 wpt_uint8 keyIndex = 0;
8651
8652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8653
8654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 -------------------------------------------------------------------------*/
8657 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8658 ( NULL == pEventData->pCBfnc ))
8659 {
8660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 }
8665
8666 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8667 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8668 /*-------------------------------------------------------------------------
8669 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 -------------------------------------------------------------------------*/
8672 wpalMutexAcquire(&pWDICtx->wptMutex);
8673
8674 /*------------------------------------------------------------------------
8675 Find the BSS for which the request is made and identify WDI session
8676 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8678 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 &macBSSID))
8680 {
8681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8682 "This station does not exist in the WDI Station Table %d");
8683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 }
8686
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8688 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8691 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8692 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008693
8694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008697
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 /*------------------------------------------------------------------------
8699 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 ------------------------------------------------------------------------*/
8702 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8703 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8705 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8706 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 }
8712
8713
8714 wpalMutexRelease(&pWDICtx->wptMutex);
8715 /*-----------------------------------------------------------------------
8716 Get message buffer
8717 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8720 &pSendBuffer, &usDataOffset, &usSendSize))||
8721 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8722 {
8723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8724 "Unable to get send buffer in set bss key req %x %x %x",
8725 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 }
8729 /*-----------------------------------------------------------------------
8730 Copy the STA Key parameters into the HAL message
8731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8737
8738 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8739
8740 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8741
8742 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8743
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8745 keyIndex++)
8746 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8749 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8750 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8751 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8752 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8753 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8760 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 WDI_MAX_KEY_LENGTH);
8763 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008764
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 wpalMemoryCopy( pSendBuffer+usDataOffset,
8766 &halSetStaKeyReqMsg.setStaKeyParams,
8767 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008768
8769 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008771
8772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8776 wdiSetSTAKeyRspCb, pEventData->pUserData,
8777 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008778
8779}/*WDI_ProcessSetSTAKeyReq*/
8780
8781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008784
8785 @param pWDICtx: pointer to the WLAN DAL context
8786 pEventData: pointer to the event information structure
8787
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 @see
8789 @return Result of the function call
8790*/
8791WDI_Status
8792WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008793(
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 WDI_ControlBlockType* pWDICtx,
8795 WDI_EventInfoType* pEventData
8796)
8797{
8798 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8799 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8800 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 wpt_uint16 usDataOffset = 0;
8803 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 wpt_macAddr macBSSID;
8806 wpt_uint8 ucCurrentBSSSesIdx;
8807 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8809
8810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 -------------------------------------------------------------------------*/
8813 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8814 ( NULL == pEventData->pCBfnc ))
8815 {
8816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 }
8821
8822 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8823 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8824 /*-------------------------------------------------------------------------
8825 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 -------------------------------------------------------------------------*/
8828 wpalMutexAcquire(&pWDICtx->wptMutex);
8829
8830 /*------------------------------------------------------------------------
8831 Find the BSS for which the request is made and identify WDI session
8832 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8834 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 &macBSSID))
8836 {
8837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8838 "This station does not exist in the WDI Station Table %d");
8839 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 }
8842
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8844 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8847 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8848 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008849
8850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008853
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 /*------------------------------------------------------------------------
8855 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008856 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 ------------------------------------------------------------------------*/
8858 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8861 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008863
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 }
8868
8869
8870
8871 wpalMutexRelease(&pWDICtx->wptMutex);
8872 /*-----------------------------------------------------------------------
8873 Get message buffer
8874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8877 &pSendBuffer, &usDataOffset, &usSendSize))||
8878 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8879 {
8880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8881 "Unable to get send buffer in set bss key req %x %x %x",
8882 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 }
8886
8887 /*-----------------------------------------------------------------------
8888 Copy the Key parameters into the HAL message
8889 -----------------------------------------------------------------------*/
8890
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8893
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8896
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8899
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8902
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 wpalMemoryCopy( pSendBuffer+usDataOffset,
8904 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8905 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008906
8907 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008909
8910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008916
8917}/*WDI_ProcessRemoveSTAKeyReq*/
8918
8919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008922
8923 @param pWDICtx: pointer to the WLAN DAL context
8924 pEventData: pointer to the event information structure
8925
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 @see
8927 @return Result of the function call
8928*/
8929WDI_Status
8930WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008931(
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 WDI_ControlBlockType* pWDICtx,
8933 WDI_EventInfoType* pEventData
8934)
8935{
8936 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8937 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8938 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 wpt_uint16 usDataOffset = 0;
8941 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8946 wpt_uint8 keyIndex = 0;
8947
8948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8949
8950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 -------------------------------------------------------------------------*/
8953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8954 ( NULL == pEventData->pCBfnc ))
8955 {
8956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 }
8961
8962 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8963 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8964 /*-------------------------------------------------------------------------
8965 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 -------------------------------------------------------------------------*/
8968 wpalMutexAcquire(&pWDICtx->wptMutex);
8969
8970 /*------------------------------------------------------------------------
8971 Find the BSS for which the request is made and identify WDI session
8972 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8974 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 &macBSSID))
8976 {
8977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8978 "This station does not exist in the WDI Station Table %d");
8979 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 }
8982
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8984 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 {
8986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8988 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008989
8990 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008993
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 /*------------------------------------------------------------------------
8995 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 ------------------------------------------------------------------------*/
8998 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8999 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9001 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9002 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009003
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 }
9008
9009
9010 wpalMutexRelease(&pWDICtx->wptMutex);
9011 /*-----------------------------------------------------------------------
9012 Get message buffer
9013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9016 &pSendBuffer, &usDataOffset, &usSendSize))||
9017 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9018 {
9019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9020 "Unable to get send buffer in set bss key req %x %x %x",
9021 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 }
9025 /*-----------------------------------------------------------------------
9026 Copy the STA Key parameters into the HAL message
9027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9030
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9033
9034 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9035
9036 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9037
9038 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9039
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9041 keyIndex++)
9042 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9045 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9046 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9047 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9048 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9049 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9056 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 WDI_MAX_KEY_LENGTH);
9059 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009060
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 wpalMemoryCopy( pSendBuffer+usDataOffset,
9062 &halSetStaKeyReqMsg.setStaKeyParams,
9063 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009064
9065 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067
9068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9072 wdiSetSTAKeyRspCb, pEventData->pUserData,
9073 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
9075}/*WDI_ProcessSetSTABcastKeyReq*/
9076
9077/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009080
9081 @param pWDICtx: pointer to the WLAN DAL context
9082 pEventData: pointer to the event information structure
9083
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 @see
9085 @return Result of the function call
9086*/
9087WDI_Status
9088WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009089(
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 WDI_ControlBlockType* pWDICtx,
9091 WDI_EventInfoType* pEventData
9092)
9093{
9094 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9095 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9096 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 wpt_uint16 usDataOffset = 0;
9099 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 wpt_macAddr macBSSID;
9102 wpt_uint8 ucCurrentBSSSesIdx;
9103 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9105
9106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009108 -------------------------------------------------------------------------*/
9109 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9110 ( NULL == pEventData->pCBfnc ))
9111 {
9112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 }
9117
9118 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9119 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9120 /*-------------------------------------------------------------------------
9121 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 -------------------------------------------------------------------------*/
9124 wpalMutexAcquire(&pWDICtx->wptMutex);
9125
9126 /*------------------------------------------------------------------------
9127 Find the BSS for which the request is made and identify WDI session
9128 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9130 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 &macBSSID))
9132 {
9133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9134 "This station does not exist in the WDI Station Table %d");
9135 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 }
9138
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9140 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9143 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9144 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009145
9146 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009149
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 /*------------------------------------------------------------------------
9151 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 ------------------------------------------------------------------------*/
9154 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9155 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9157 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9158 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009159
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 }
9164
9165
9166
9167 wpalMutexRelease(&pWDICtx->wptMutex);
9168 /*-----------------------------------------------------------------------
9169 Get message buffer
9170 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9173 &pSendBuffer, &usDataOffset, &usSendSize))||
9174 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9175 {
9176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9177 "Unable to get send buffer in set bss key req %x %x %x",
9178 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 }
9182
9183 /*-----------------------------------------------------------------------
9184 Copy the Key parameters into the HAL message
9185 -----------------------------------------------------------------------*/
9186
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9189
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9192
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9195
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9198
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 wpalMemoryCopy( pSendBuffer+usDataOffset,
9200 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9201 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205
9206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009212
9213}/*WDI_ProcessRemoveSTABcastKeyReq*/
9214
9215/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009217==========================================================================*/
9218/**
9219 @brief Process Add TSpec Request function (called when Main FSM
9220 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009221
9222 @param pWDICtx: pointer to the WLAN DAL context
9223 pEventData: pointer to the event information structure
9224
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 @see
9226 @return Result of the function call
9227*/
9228WDI_Status
9229WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009230(
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 WDI_ControlBlockType* pWDICtx,
9232 WDI_EventInfoType* pEventData
9233)
9234{
9235 WDI_AddTSReqParamsType* pwdiAddTSParams;
9236 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 wpt_uint16 usDataOffset = 0;
9241 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 wpt_macAddr macBSSID;
9244 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009245
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9247
9248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 -------------------------------------------------------------------------*/
9251 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9252 ( NULL == pEventData->pCBfnc ))
9253 {
9254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 }
9259
9260 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9261 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9262 /*-------------------------------------------------------------------------
9263 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 -------------------------------------------------------------------------*/
9266 wpalMutexAcquire(&pWDICtx->wptMutex);
9267
9268 /*------------------------------------------------------------------------
9269 Find the BSS for which the request is made and identify WDI session
9270 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9272 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 &macBSSID))
9274 {
9275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9276 "This station does not exist in the WDI Station Table %d");
9277 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 }
9280
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9282 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9285 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9286 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009287
9288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009291
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 /*------------------------------------------------------------------------
9293 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 ------------------------------------------------------------------------*/
9296 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9297 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9299 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9300 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 }
9306
9307 wpalMutexRelease(&pWDICtx->wptMutex);
9308 /*-----------------------------------------------------------------------
9309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9313 sizeof(halAddTsParams),
9314 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 &usSendSize))||
9316 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9317 {
9318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9319 "Unable to get send buffer in set bss key req %x %x %x",
9320 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 }
9324
9325 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9326 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9327
9328 //TSPEC IE
9329 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9330 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9361
9362 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9377
9378 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9383
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 wpalMemoryCopy( pSendBuffer+usDataOffset,
9385 &halAddTsParams,
9386 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009387
9388 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009390
9391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009397}/*WDI_ProcessAddTSpecReq*/
9398
9399
9400/**
9401 @brief Process Del TSpec Request function (called when Main FSM
9402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009403
9404 @param pWDICtx: pointer to the WLAN DAL context
9405 pEventData: pointer to the event information structure
9406
Jeff Johnson295189b2012-06-20 16:38:30 -07009407 @see
9408 @return Result of the function call
9409*/
9410WDI_Status
9411WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009412(
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 WDI_ControlBlockType* pWDICtx,
9414 WDI_EventInfoType* pEventData
9415)
9416{
9417 WDI_DelTSReqParamsType* pwdiDelTSParams;
9418 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 wpt_uint16 usDataOffset = 0;
9423 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9426
9427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 -------------------------------------------------------------------------*/
9430 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9431 ( NULL == pEventData->pCBfnc ))
9432 {
9433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 }
9438
9439 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9440 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9441
9442 /*-------------------------------------------------------------------------
9443 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 -------------------------------------------------------------------------*/
9446 wpalMutexAcquire(&pWDICtx->wptMutex);
9447
9448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9452 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9453 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009454
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9458 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9459 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9460
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 }
9464
9465 /*------------------------------------------------------------------------
9466 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 ------------------------------------------------------------------------*/
9469 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9470 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9472 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9473 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009474
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 }
9479
9480
9481 wpalMutexRelease(&pWDICtx->wptMutex);
9482 /*-----------------------------------------------------------------------
9483 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9488 &pSendBuffer, &usDataOffset, &usSendSize))||
9489 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9490 {
9491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9492 "Unable to get send buffer in set bss key req %x %x %x",
9493 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 }
9497
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 wpalMemoryCopy( pSendBuffer+usDataOffset,
9499 &pwdiDelTSParams->wdiDelTSInfo,
9500 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009501
9502 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009504
9505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9509 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009510}/*WDI_ProcessDelTSpecReq*/
9511
9512/**
9513 @brief Process Update EDCA Params Request function (called when
9514 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009515
9516 @param pWDICtx: pointer to the WLAN DAL context
9517 pEventData: pointer to the event information structure
9518
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 @see
9520 @return Result of the function call
9521*/
9522WDI_Status
9523WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009524(
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 WDI_ControlBlockType* pWDICtx,
9526 WDI_EventInfoType* pEventData
9527)
9528{
9529 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9530 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 wpt_uint16 usDataOffset = 0;
9535 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9538
9539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 -------------------------------------------------------------------------*/
9542 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9543 ( NULL == pEventData->pCBfnc ))
9544 {
9545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
9550
9551 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9552 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9553 /*-------------------------------------------------------------------------
9554 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 -------------------------------------------------------------------------*/
9557 wpalMutexAcquire(&pWDICtx->wptMutex);
9558
9559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9563 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9564 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009565
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 {
9568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9570 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009571
9572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 }
9575
9576 /*------------------------------------------------------------------------
9577 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 ------------------------------------------------------------------------*/
9580 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9581 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9583 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9584 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009585
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 }
9590
9591
9592 wpalMutexRelease(&pWDICtx->wptMutex);
9593 /*-----------------------------------------------------------------------
9594 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9599 &pSendBuffer, &usDataOffset, &usSendSize))||
9600 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9601 {
9602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9603 "Unable to get send buffer in set bss key req %x %x %x",
9604 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 }
9608
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 wpalMemoryCopy( pSendBuffer+usDataOffset,
9610 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9611 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009612
9613 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
9616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9620 wdiUpdateEDCARspCb, pEventData->pUserData,
9621 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009622}/*WDI_ProcessUpdateEDCAParamsReq*/
9623
9624/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009627
9628 @param pWDICtx: pointer to the WLAN DAL context
9629 pEventData: pointer to the event information structure
9630
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 @see
9632 @return Result of the function call
9633*/
9634WDI_Status
9635WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009636(
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 WDI_ControlBlockType* pWDICtx,
9638 WDI_EventInfoType* pEventData
9639)
9640{
9641 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9642 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 wpt_uint16 usDataOffset = 0;
9647 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 wpt_macAddr macBSSID;
9650
9651 tAddBASessionReqMsg halAddBASessionReq;
9652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9653
9654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 -------------------------------------------------------------------------*/
9657 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9658 ( NULL == pEventData->pCBfnc ))
9659 {
9660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 }
9665
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9670 /*-------------------------------------------------------------------------
9671 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 -------------------------------------------------------------------------*/
9674 wpalMutexAcquire(&pWDICtx->wptMutex);
9675
9676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9680 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 &macBSSID))
9682 {
9683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9684 "This station does not exist in the WDI Station Table %d");
9685 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 }
9688
9689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009691
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9695 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9696 __func__, MAC_ADDR_ARRAY(macBSSID));
9697
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 }
9701
9702 /*------------------------------------------------------------------------
9703 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 ------------------------------------------------------------------------*/
9706 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9707 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9709 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9710 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009711
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 }
9716
9717
9718 wpalMutexRelease(&pWDICtx->wptMutex);
9719 /*-----------------------------------------------------------------------
9720 Get message buffer
9721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9723 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 sizeof(halAddBASessionReq.addBASessionParams),
9725 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9728 {
9729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9730 "Unable to get send buffer in Add BA session req %x %x %x",
9731 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 }
9735
9736 halAddBASessionReq.addBASessionParams.staIdx =
9737 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9738 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9739 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9740 WDI_MAC_ADDR_LEN);
9741 halAddBASessionReq.addBASessionParams.baTID =
9742 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9743 halAddBASessionReq.addBASessionParams.baPolicy =
9744 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9745 halAddBASessionReq.addBASessionParams.baBufferSize =
9746 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9747 halAddBASessionReq.addBASessionParams.baTimeout =
9748 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9749 halAddBASessionReq.addBASessionParams.baSSN =
9750 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9751 halAddBASessionReq.addBASessionParams.baDirection =
9752 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9753
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 wpalMemoryCopy( pSendBuffer+usDataOffset,
9755 &halAddBASessionReq.addBASessionParams,
9756 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009757
9758 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009760
9761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9765 wdiAddBASessionRspCb, pEventData->pUserData,
9766 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009767}/*WDI_ProcessAddBASessionReq*/
9768
9769/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009772
9773 @param pWDICtx: pointer to the WLAN DAL context
9774 pEventData: pointer to the event information structure
9775
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 @see
9777 @return Result of the function call
9778*/
9779WDI_Status
9780WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009781(
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 WDI_ControlBlockType* pWDICtx,
9783 WDI_EventInfoType* pEventData
9784)
9785{
9786 WDI_DelBAReqParamsType* pwdiDelBAParams;
9787 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 wpt_uint16 usDataOffset = 0;
9792 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 wpt_macAddr macBSSID;
9795 tDelBAParams halDelBAparam;
9796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9797
9798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 -------------------------------------------------------------------------*/
9801 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9802 ( NULL == pEventData->pCBfnc ))
9803 {
9804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009808 }
9809
9810 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9811 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9812 /*-------------------------------------------------------------------------
9813 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 -------------------------------------------------------------------------*/
9816 wpalMutexAcquire(&pWDICtx->wptMutex);
9817
9818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9822 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 &macBSSID))
9824 {
9825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9826 "This station does not exist in the WDI Station Table %d");
9827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 }
9830
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9836 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9837 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009838
9839 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 }
9842
9843 /*------------------------------------------------------------------------
9844 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 ------------------------------------------------------------------------*/
9847 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9848 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9850 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9851 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009852
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 }
9857
9858 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 sizeof(halDelBAparam),
9861 &pSendBuffer, &usDataOffset, &usSendSize))||
9862 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9863 {
9864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9865 "Unable to get send buffer for DEL BA req %x %x %x",
9866 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 }
9870
9871 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9872 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9873 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9874
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 wpalMemoryCopy( pSendBuffer+usDataOffset,
9876 &halDelBAparam,
9877 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009878
9879 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881
9882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9886 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009887}/*WDI_ProcessDelBAReq*/
9888
9889#ifdef FEATURE_WLAN_CCX
9890
9891WDI_Status
9892WDI_ProcessTSMStatsReq
9893(
9894 WDI_ControlBlockType* pWDICtx,
9895 WDI_EventInfoType* pEventData
9896)
9897{
9898 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9899 WDI_TsmRspCb wdiTSMRspCb;
9900 wpt_uint8 ucCurrentBSSSesIdx = 0;
9901 WDI_BSSSessionType* pBSSSes = NULL;
9902 wpt_uint8* pSendBuffer = NULL;
9903 wpt_uint16 usDataOffset = 0;
9904 wpt_uint16 usSendSize = 0;
9905 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9906 tTsmStatsParams halTsmStatsReqParams = {0};
9907
9908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9909
9910 /*-------------------------------------------------------------------------
9911 Sanity check
9912 -------------------------------------------------------------------------*/
9913 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9914 ( NULL == pEventData->pCBfnc ))
9915 {
9916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 WDI_ASSERT(0);
9919 return WDI_STATUS_E_FAILURE;
9920 }
9921
9922 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9923 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9924 /*-------------------------------------------------------------------------
9925 Check to see if we are in the middle of an association, if so queue, if
9926 not it means it is free to process request
9927 -------------------------------------------------------------------------*/
9928 wpalMutexAcquire(&pWDICtx->wptMutex);
9929
9930 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9931 if ( NULL == pBSSSes )
9932 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9934 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9935 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009936
9937 wpalMutexRelease(&pWDICtx->wptMutex);
9938 return WDI_STATUS_E_NOT_ALLOWED;
9939 }
9940
9941 /*------------------------------------------------------------------------
9942 Check if this BSS is being currently processed or queued,
9943 if queued - queue the new request as well
9944 ------------------------------------------------------------------------*/
9945 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9946 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9948 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9949 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009950
9951 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9952 wpalMutexRelease(&pWDICtx->wptMutex);
9953 return wdiStatus;
9954 }
9955
9956 wpalMutexRelease(&pWDICtx->wptMutex);
9957 /*-----------------------------------------------------------------------
9958 Get message buffer
9959 ! TO DO : proper conversion into the HAL Message Request Format
9960 -----------------------------------------------------------------------*/
9961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9962 sizeof(halTsmStatsReqParams),
9963 &pSendBuffer, &usDataOffset, &usSendSize))||
9964 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9965 {
9966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9967 "Unable to get send buffer in set bss key req %x %x %x",
9968 pEventData, pwdiTSMParams, wdiTSMRspCb);
9969 WDI_ASSERT(0);
9970 return WDI_STATUS_E_FAILURE;
9971 }
9972
9973 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9974 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9975 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9976 WDI_MAC_ADDR_LEN);
9977 wpalMemoryCopy( pSendBuffer+usDataOffset,
9978 &halTsmStatsReqParams,
9979 sizeof(halTsmStatsReqParams));
9980
9981 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9982 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9983
9984 /*-------------------------------------------------------------------------
9985 Send TSM Stats Request to HAL
9986 -------------------------------------------------------------------------*/
9987 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9988 wdiTSMRspCb, pEventData->pUserData,
9989 WDI_TSM_STATS_RESP);
9990}/*WDI_ProcessTSMStatsReq*/
9991
9992#endif
9993
9994
9995/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009998
9999 @param pWDICtx: pointer to the WLAN DAL context
10000 pEventData: pointer to the event information structure
10001
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 @see
10003 @return Result of the function call
10004*/
10005WDI_Status
10006WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010007(
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 WDI_ControlBlockType* pWDICtx,
10009 WDI_EventInfoType* pEventData
10010)
10011{
10012 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10013 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 wpt_uint16 usDataOffset = 0;
10016 wpt_uint16 usSendSize = 0;
10017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10018
10019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 -------------------------------------------------------------------------*/
10022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10023 ( NULL == pEventData->pCBfnc ))
10024 {
10025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 }
10030
10031 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10032 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10033 /*-----------------------------------------------------------------------
10034 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10039 &pSendBuffer, &usDataOffset, &usSendSize))||
10040 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10041 {
10042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10043 "Unable to get send buffer in set bss key req %x %x %x",
10044 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 }
10048
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 wpalMemoryCopy( pSendBuffer+usDataOffset,
10050 &pwdiFlushAcParams->wdiFlushAcInfo,
10051 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010052
10053 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055
10056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10060 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010061}/*WDI_ProcessFlushAcReq*/
10062
10063/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010066
10067 @param pWDICtx: pointer to the WLAN DAL context
10068 pEventData: pointer to the event information structure
10069
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 @see
10071 @return Result of the function call
10072*/
10073WDI_Status
10074WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010075(
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 WDI_ControlBlockType* pWDICtx,
10077 WDI_EventInfoType* pEventData
10078)
10079{
10080 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10081 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 wpt_uint16 usDataOffset = 0;
10084 wpt_uint16 usSendSize = 0;
10085
10086 tBtAmpEventMsg haltBtAmpEventMsg;
10087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10088
10089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 -------------------------------------------------------------------------*/
10092 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10093 ( NULL == pEventData->pCBfnc ))
10094 {
10095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 }
10100
10101 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10102 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10103 /*-----------------------------------------------------------------------
10104 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10109 &pSendBuffer, &usDataOffset, &usSendSize))||
10110 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10111 {
10112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10113 "Unable to get send buffer in BT AMP event req %x %x %x",
10114 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 }
10118
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 wpalMemoryCopy( pSendBuffer+usDataOffset,
10122 &haltBtAmpEventMsg.btAmpEventParams,
10123 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010124
10125 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010127
10128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10132 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010133}/*WDI_ProcessBtAmpEventReq*/
10134
10135/**
10136 @brief Process Add STA self Request function (called when Main FSM
10137 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010138
10139 @param pWDICtx: pointer to the WLAN DAL context
10140 pEventData: pointer to the event information structure
10141
Jeff Johnson295189b2012-06-20 16:38:30 -070010142 @see
10143 @return Result of the function call
10144*/
10145WDI_Status
10146WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010147(
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 WDI_ControlBlockType* pWDICtx,
10149 WDI_EventInfoType* pEventData
10150)
10151{
10152 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10153 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 wpt_uint16 usDataOffset = 0;
10156 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010157 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10159
10160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 -------------------------------------------------------------------------*/
10163 if (( NULL == pEventData ) ||
10164 ( NULL == pEventData->pEventData) ||
10165 ( NULL == pEventData->pCBfnc))
10166 {
10167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 }
10172
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10177 /*-----------------------------------------------------------------------
10178 Get message buffer
10179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10181 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010182 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010183 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010184 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 {
10186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10187 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10188 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 }
10192
10193 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10196
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010198 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10199 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10200 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10201 {
10202 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10203 }
10204 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10205 VOS_P2P_CLIENT_MODE) ||
10206 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10207 VOS_P2P_DEVICE))
10208 {
10209 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10210 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010212 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010213
10214 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010216
10217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10221 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10222 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010223}/*WDI_ProcessAddSTASelfReq*/
10224
10225
10226
10227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010230
10231 @param pWDICtx: pointer to the WLAN DAL context
10232 pEventData: pointer to the event information structure
10233
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 @see
10235 @return Result of the function call
10236*/
10237WDI_Status
10238WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010239(
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 WDI_ControlBlockType* pWDICtx,
10241 WDI_EventInfoType* pEventData
10242)
10243{
10244 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10245 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 wpt_uint16 usDataOffset = 0;
10248 wpt_uint16 usSendSize = 0;
10249 tDelStaSelfParams halSetDelSelfSTAParams;
10250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10251
10252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010254 -------------------------------------------------------------------------*/
10255 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10256 ( NULL == pEventData->pCBfnc ))
10257 {
10258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 }
10263
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010265 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10266 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10267
10268 /*-----------------------------------------------------------------------
10269 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10274 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10277 {
10278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10279 "Unable to get send buffer in Del Sta Self req %x %x %x",
10280 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 }
10284
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10287
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10289 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010290
10291 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010293
10294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10298 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 WDI_DEL_STA_SELF_RESP);
10300
10301}
10302
Jeff Johnsone7245742012-09-05 17:12:55 -070010303#ifdef FEATURE_OEM_DATA_SUPPORT
10304/**
10305 @brief Process Start Oem Data Request function (called when Main
10306 FSM allows it)
10307
10308 @param pWDICtx: pointer to the WLAN DAL context
10309 pEventData: pointer to the event information structure
10310
10311 @see
10312 @return Result of the function call
10313*/
10314WDI_Status
10315WDI_ProcessStartOemDataReq
10316(
10317 WDI_ControlBlockType* pWDICtx,
10318 WDI_EventInfoType* pEventData
10319)
10320{
10321 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10322 WDI_oemDataRspCb wdiOemDataRspCb;
10323 wpt_uint8* pSendBuffer = NULL;
10324 wpt_uint16 usDataOffset = 0;
10325 wpt_uint16 usSendSize = 0;
10326 wpt_uint16 reqLen;
10327 tStartOemDataReqParams* halStartOemDataReqParams;
10328
10329 /*-------------------------------------------------------------------------
10330 Sanity check
10331 -------------------------------------------------------------------------*/
10332 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10333 ( NULL == pEventData->pCBfnc ))
10334 {
10335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010336 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 WDI_ASSERT(0);
10338 return WDI_STATUS_E_FAILURE;
10339 }
10340
10341 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10342 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10343
10344 /*-----------------------------------------------------------------------
10345 Get message buffer
10346 -----------------------------------------------------------------------*/
10347
10348 reqLen = sizeof(tStartOemDataReqParams);
10349
10350 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10351 WDI_START_OEM_DATA_REQ, reqLen,
10352 &pSendBuffer, &usDataOffset, &usSendSize))||
10353 (usSendSize < (usDataOffset + reqLen)))
10354 {
10355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10356 "Unable to get send buffer in Start Oem Data req %x %x %x",
10357 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10358 WDI_ASSERT(0);
10359 return WDI_STATUS_E_FAILURE;
10360 }
10361
10362 //copying WDI OEM DATA REQ PARAMS to shared memory
10363 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10364
10365 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10366 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10367
10368 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10369 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10370
10371 /*-------------------------------------------------------------------------
10372 Send Start Request to HAL
10373 -------------------------------------------------------------------------*/
10374 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10375 wdiOemDataRspCb, pEventData->pUserData,
10376 WDI_START_OEM_DATA_RESP);
10377}/*WDI_ProcessStartOemDataReq*/
10378#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010379
10380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010383
10384 @param pWDICtx: pointer to the WLAN DAL context
10385 pEventData: pointer to the event information structure
10386
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 @see
10388 @return Result of the function call
10389*/
10390WDI_Status
10391WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010392(
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 WDI_ControlBlockType* pWDICtx,
10394 WDI_EventInfoType* pEventData
10395)
10396{
10397 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10398 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 wpt_uint16 usDataOffset = 0;
10401 wpt_uint16 usSendSize = 0;
10402 tHalWlanHostResumeReqParam halResumeReqParams;
10403
10404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10405
10406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 -------------------------------------------------------------------------*/
10409 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10410 ( NULL == pEventData->pCBfnc ))
10411 {
10412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010413 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 }
10417
10418 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10419 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10420
10421 /*-----------------------------------------------------------------------
10422 Get message buffer
10423 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10426 &pSendBuffer, &usDataOffset, &usSendSize))||
10427 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10428 {
10429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 }
10435
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010438
10439 wpalMemoryCopy( pSendBuffer+usDataOffset,
10440 &halResumeReqParams,
10441 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010442
10443 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010445
10446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10450 wdiHostResumeRspCb, pEventData->pUserData,
10451 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010452}/*WDI_ProcessHostResumeReq*/
10453
10454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010457
10458 @param pWDICtx: pointer to the WLAN DAL context
10459 pEventData: pointer to the event information structure
10460
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 @see
10462 @return Result of the function call
10463*/
10464WDI_Status
10465WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010466(
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 WDI_ControlBlockType* pWDICtx,
10468 WDI_EventInfoType* pEventData
10469)
10470{
10471 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10472 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 wpt_uint16 usDataOffset = 0;
10475 wpt_uint16 usSendSize = 0;
10476 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10478
10479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 -------------------------------------------------------------------------*/
10482 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10483 ( NULL == pEventData->pCBfnc ))
10484 {
10485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010486 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 }
10490
10491 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10492 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010493
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 /*-----------------------------------------------------------------------
10495 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 sizeof(halTxPerTrackingReqParam),
10500 &pSendBuffer, &usDataOffset, &usSendSize))||
10501 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10502 {
10503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10504 "Unable to get send buffer in set tx per tracking req %x %x %x",
10505 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010509
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10511 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10512 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10513 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010514
10515 wpalMemoryCopy( pSendBuffer+usDataOffset,
10516 &halTxPerTrackingReqParam,
10517 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010518
10519 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521
10522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10526 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010527}/*WDI_ProcessSetTxPerTrackingReq*/
10528
10529/*=========================================================================
10530 Indications
10531=========================================================================*/
10532
10533/**
10534 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010535
10536 @param pWDICtx: pointer to the WLAN DAL context
10537 pEventData: pointer to the event information structure
10538
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 @see
10540 @return Result of the function call
10541*/
10542WDI_Status
10543WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010544(
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 WDI_ControlBlockType* pWDICtx,
10546 WDI_EventInfoType* pEventData
10547)
10548{
10549 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 wpt_uint16 usDataOffset = 0;
10552 wpt_uint16 usSendSize = 0;
10553 WDI_Status wdiStatus;
10554 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10556
10557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 -------------------------------------------------------------------------*/
10560 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10561 {
10562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010563 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 }
10567
10568 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10569
10570 /*-----------------------------------------------------------------------
10571 Get message buffer
10572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10574 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 sizeof(halWlanSuspendIndparams),
10576 &pSendBuffer, &usDataOffset, &usSendSize))||
10577 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10578 {
10579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10580 "Unable to get send buffer in Suspend Ind ");
10581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 }
10584
10585 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10586 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10587
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010589 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10592 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010593
10594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 -------------------------------------------------------------------------*/
10597 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010599
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10602}/*WDI_ProcessHostSuspendInd*/
10603
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010604
10605
10606/**
10607 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10608
10609 @param pWDICtx: pointer to the WLAN DAL context
10610 pEventData: pointer to the event information structure
10611
10612 @see
10613 @return Result of the function call
10614*/
10615WDI_Status
10616WDI_ProcessTrafficStatsInd
10617(
10618 WDI_ControlBlockType* pWDICtx,
10619 WDI_EventInfoType* pEventData
10620)
10621{
10622 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10623 wpt_uint8* pSendBuffer = NULL;
10624 wpt_uint16 usDataOffset = 0;
10625 wpt_uint16 usSendSize = 0;
10626 WDI_Status wdiStatus;
10627 tStatsClassBIndParams* pStatsClassBIndParams;
10628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10629
10630 /*-------------------------------------------------------------------------
10631 Sanity check
10632 -------------------------------------------------------------------------*/
10633 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10634 {
10635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10636 "%s: Invalid parameters in Traffic Stats ind",__func__);
10637 WDI_ASSERT(0);
10638 return WDI_STATUS_E_FAILURE;
10639 }
10640
10641 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10642
10643 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10644 {
10645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10646 "%s: Invalid parameters in Traffic Stats ind",__func__);
10647 WDI_ASSERT(0);
10648 return WDI_STATUS_E_FAILURE;
10649 }
10650
10651 /*-----------------------------------------------------------------------
10652 Get message buffer
10653 -----------------------------------------------------------------------*/
10654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10655 WDI_TRAFFIC_STATS_IND,
10656 sizeof(tStatsClassBIndParams),
10657 &pSendBuffer, &usDataOffset, &usSendSize))||
10658 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10659 {
10660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10661 "Unable to get send buffer in Traffic Stats Ind ");
10662 WDI_ASSERT(0);
10663 return WDI_STATUS_E_FAILURE;
10664 }
10665
10666 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10667
10668 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10669
10670 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10671 pTrafficStatsIndParams->pTrafficStats,
10672 pTrafficStatsIndParams->length);
10673
10674 /*-------------------------------------------------------------------------
10675 Send Suspend Request to HAL
10676 -------------------------------------------------------------------------*/
10677 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10678 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10679
10680 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10681 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10682}/*WDI_ProcessTrafficStatsInd*/
10683
Chet Lanctota96bb432013-03-18 10:26:30 -070010684#ifdef WLAN_FEATURE_11W
10685/**
10686 @brief Process Exclude Unencrypted Indications function (called
10687 when Main FSM allows it)
10688
10689 @param pWDICtx: pointer to the WLAN DAL context
10690 pEventData: pointer to the event information structure
10691
10692 @see
10693 @return Result of the function call
10694*/
10695WDI_Status
10696WDI_ProcessExcludeUnencryptInd
10697(
10698 WDI_ControlBlockType* pWDICtx,
10699 WDI_EventInfoType* pEventData
10700)
10701{
10702 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10703 wpt_uint8* pSendBuffer = NULL;
10704 wpt_uint16 usDataOffset = 0;
10705 wpt_uint16 usSendSize = 0;
10706 WDI_Status wdiStatus;
10707 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10709
10710 /*-------------------------------------------------------------------------
10711 Sanity check
10712 -------------------------------------------------------------------------*/
10713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10714 {
10715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10716 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10717 WDI_ASSERT(0);
10718 return WDI_STATUS_E_FAILURE;
10719 }
10720
10721 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10722
10723 /*-----------------------------------------------------------------------
10724 Get message buffer
10725 -----------------------------------------------------------------------*/
10726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10727 WDI_EXCLUDE_UNENCRYPTED_IND,
10728 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10729 &pSendBuffer, &usDataOffset, &usSendSize))||
10730 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10731 {
10732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10733 "Unable to get send buffer in Exclude Unencrypted Ind ");
10734 WDI_ASSERT(0);
10735 return WDI_STATUS_E_FAILURE;
10736 }
10737
10738 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10739
10740 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10741
10742 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10743 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10744
10745 /*-------------------------------------------------------------------------
10746 Send Suspend Request to HAL
10747 -------------------------------------------------------------------------*/
10748 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10749 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10750
10751 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10752 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10753}/*WDI_ProcessExcludeUnencryptInd*/
10754#endif
10755
Jeff Johnson295189b2012-06-20 16:38:30 -070010756/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010758==========================================================================*/
10759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010762
10763 @param pWDICtx: pointer to the WLAN DAL context
10764 pEventData: pointer to the event information structure
10765
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 @see
10767 @return Result of the function call
10768*/
10769WDI_Status
10770WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010771(
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 WDI_ControlBlockType* pWDICtx,
10773 WDI_EventInfoType* pEventData
10774)
10775{
10776 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10777 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 wpt_uint16 usDataOffset = 0;
10780 wpt_uint16 usSendSize = 0;
10781 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10783
10784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 -------------------------------------------------------------------------*/
10787 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10788 ( NULL == pEventData->pCBfnc ))
10789 {
10790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 }
10795
10796 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10797 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10798 /*-----------------------------------------------------------------------
10799 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 sizeof(halSwitchChannelReq.switchChannelParams),
10804 &pSendBuffer, &usDataOffset, &usSendSize))||
10805 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10806 {
10807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10808 "Unable to get send buffer in channel switch req %x %x %x",
10809 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 }
10813
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010816#ifndef WLAN_FEATURE_VOWIFI
10817 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10819#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10822
10823#ifdef WLAN_FEATURE_VOWIFI
10824 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10827 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10828 WDI_MAC_ADDR_LEN);
10829 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10830 pwdiSwitchChParams->wdiChInfo.macBSSId,
10831 WDI_MAC_ADDR_LEN);
10832#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 wpalMemoryCopy( pSendBuffer+usDataOffset,
10834 &halSwitchChannelReq.switchChannelParams,
10835 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010836
10837 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010839
10840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10844 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010845}/*WDI_ProcessChannelSwitchReq*/
10846
10847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010850
10851 @param pWDICtx: pointer to the WLAN DAL context
10852 pEventData: pointer to the event information structure
10853
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 @see
10855 @return Result of the function call
10856*/
10857WDI_Status
10858WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010859(
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 WDI_ControlBlockType* pWDICtx,
10861 WDI_EventInfoType* pEventData
10862)
10863{
10864 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10865 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 wpt_uint16 usDataOffset = 0;
10870 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010872
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 tConfigStaReqMsg halConfigStaReqMsg;
10874 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10876
10877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 -------------------------------------------------------------------------*/
10880 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10881 ( NULL == pEventData->pCBfnc ))
10882 {
10883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 }
10888
10889 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10890 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10891 /*-------------------------------------------------------------------------
10892 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 -------------------------------------------------------------------------*/
10895 wpalMutexAcquire(&pWDICtx->wptMutex);
10896
10897 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010900 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10901 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10902 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10907 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10908 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010909
10910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 }
10913
10914 /*------------------------------------------------------------------------
10915 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 ------------------------------------------------------------------------*/
10918 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10919 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10921 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10922 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 }
10928
10929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010930
10931 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10932#ifdef WLAN_FEATURE_11AC
10933 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010934 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 else
10936#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010937 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010938
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 /*-----------------------------------------------------------------------
10940 Get message buffer
10941 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10943 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010946 {
10947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10948 "Unable to get send buffer in config sta req %x %x %x",
10949 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 }
10953
10954 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 &pwdiConfigSTAParams->wdiReqInfo);
10957
10958 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10959 {
10960 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 WDI_STATableFindStaidByAddr(pWDICtx,
10963 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 {
10966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10967 "This station does not exist in the WDI Station Table %d");
10968 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010969 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010971 }
10972 }
10973 else
10974 {
10975 /* Need to fill in the STA Index to invalid, since at this point we have not
10976 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070010977 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 }
10979
10980 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010982
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 wpalMemoryCopy( pSendBuffer+usDataOffset,
10984 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010985 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010986
10987 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010989
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10991 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 sizeof(pWDICtx->wdiCachedConfigStaReq));
10993
10994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10998 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010999}/*WDI_ProcessConfigStaReq*/
11000
11001
11002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011005
11006 @param pWDICtx: pointer to the WLAN DAL context
11007 pEventData: pointer to the event information structure
11008
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 @see
11010 @return Result of the function call
11011*/
11012WDI_Status
11013WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011014(
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 WDI_ControlBlockType* pWDICtx,
11016 WDI_EventInfoType* pEventData
11017)
11018{
11019 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11020 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011021 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011022 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 wpt_uint16 usDataOffset = 0;
11025 wpt_uint16 usSendSize = 0;
11026 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011027 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11029
11030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 -------------------------------------------------------------------------*/
11033 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11034 ( NULL == pEventData->pCBfnc ))
11035 {
11036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 }
11041
11042 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11043 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11044 /*-------------------------------------------------------------------------
11045 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 -------------------------------------------------------------------------*/
11048 wpalMutexAcquire(&pWDICtx->wptMutex);
11049
11050 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11054 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11055 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011056
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011060 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11061 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 }
11063 else
11064 {
11065 /*------------------------------------------------------------------------
11066 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011067 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 ------------------------------------------------------------------------*/
11069 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11070 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11072 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11073 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11074
11075 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 }
11079 }
11080 /* If the link is set to enter IDLE - the Session allocated for this BSS
11081 will be deleted on the Set Link State response coming from HAL
11082 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11085
11086 wpalMutexRelease(&pWDICtx->wptMutex);
11087 /*-----------------------------------------------------------------------
11088 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011091
11092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 sizeof(halLinkStateReqMsg),
11094 &pSendBuffer, &usDataOffset, &usSendSize))||
11095 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11096 {
11097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11098 "Unable to get send buffer in set bss key req %x %x %x",
11099 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 }
11103
11104 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11105 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11106
11107 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11108 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11109
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11112
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 wpalMemoryCopy( pSendBuffer+usDataOffset,
11114 &halLinkStateReqMsg,
11115 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011116
11117 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011119
11120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011121 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11124 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011125}/*WDI_ProcessSetLinkStateReq*/
11126
11127
11128/**
11129 @brief Process Get Stats Request function (called when Main FSM
11130 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011131
11132 @param pWDICtx: pointer to the WLAN DAL context
11133 pEventData: pointer to the event information structure
11134
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 @see
11136 @return Result of the function call
11137*/
11138WDI_Status
11139WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011140(
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 WDI_ControlBlockType* pWDICtx,
11142 WDI_EventInfoType* pEventData
11143)
11144{
11145 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11146 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 wpt_uint16 usDataOffset = 0;
11149 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 WDI_BSSSessionType* pBSSSes = NULL;
11152 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 tHalStatsReqMsg halStatsReqMsg;
11155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11156
11157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 -------------------------------------------------------------------------*/
11160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11161 ( NULL == pEventData->pCBfnc ) )
11162 {
11163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 }
11168
11169 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11170 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11171
11172 /*-------------------------------------------------------------------------
11173 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011175 -------------------------------------------------------------------------*/
11176 wpalMutexAcquire(&pWDICtx->wptMutex);
11177
11178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11182 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 &macBSSID))
11184 {
11185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11186 "This station does not exist in the WDI Station Table %d");
11187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 }
11190
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11192 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11195 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11196 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011197
11198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 }
11201
11202 /*------------------------------------------------------------------------
11203 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 ------------------------------------------------------------------------*/
11206 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11207 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11209 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11210 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 }
11216
11217
11218 wpalMutexRelease(&pWDICtx->wptMutex);
11219
11220 /*-----------------------------------------------------------------------
11221 Get message buffer
11222 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 sizeof(halStatsReqMsg.statsReqParams),
11225 &pSendBuffer, &usDataOffset, &usSendSize))||
11226 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11227 {
11228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11229 "Unable to get send buffer in set bss key req %x %x %x",
11230 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 }
11234
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011238 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 wpalMemoryCopy( pSendBuffer+usDataOffset,
11240 &halStatsReqMsg.statsReqParams,
11241 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011242
11243 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011245
11246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11250 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011251}/*WDI_ProcessGetStatsReq*/
11252
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011253#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11254/**
11255 @brief Process Get Roam Rssi Request function (called when Main FSM
11256 allows it)
11257
11258 @param pWDICtx: pointer to the WLAN DAL context
11259 pEventData: pointer to the event information structure
11260
11261 @see
11262 @return Result of the function call
11263*/
11264WDI_Status
11265WDI_ProcessGetRoamRssiReq
11266(
11267 WDI_ControlBlockType* pWDICtx,
11268 WDI_EventInfoType* pEventData
11269)
11270{
11271 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11272 WDI_GetStatsRspCb wdiGetStatsRspCb;
11273 wpt_uint8* pSendBuffer = NULL;
11274 wpt_uint16 usDataOffset = 0;
11275 wpt_uint16 usSendSize = 0;
11276 wpt_uint8 ucCurrentBSSSesIdx = 0;
11277 WDI_BSSSessionType* pBSSSes = NULL;
11278 wpt_macAddr macBSSID;
11279 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11280 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11282 /*-------------------------------------------------------------------------
11283 Sanity check
11284 -------------------------------------------------------------------------*/
11285 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11286 ( NULL == pEventData->pCBfnc ) )
11287 {
11288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11289 "%s: Invalid parameters", __func__);
11290 WDI_ASSERT(0);
11291 return WDI_STATUS_E_FAILURE;
11292 }
11293
11294 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11295 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11296
11297 /*-------------------------------------------------------------------------
11298 Check to see if we are in the middle of an association, if so queue, if
11299 not it means it is free to process request
11300 -------------------------------------------------------------------------*/
11301 wpalMutexAcquire(&pWDICtx->wptMutex);
11302
11303 /*------------------------------------------------------------------------
11304 Find the BSS for which the request is made
11305 ------------------------------------------------------------------------*/
11306 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11307 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11308 &macBSSID))
11309 {
11310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11311 "This station does not exist in the WDI Station Table %d");
11312 wpalMutexRelease(&pWDICtx->wptMutex);
11313 return WDI_STATUS_E_FAILURE;
11314 }
11315
11316 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11317 if ( NULL == pBSSSes )
11318 {
11319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11320 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11321 __func__, MAC_ADDR_ARRAY(macBSSID));
11322
11323 wpalMutexRelease(&pWDICtx->wptMutex);
11324 return WDI_STATUS_E_NOT_ALLOWED;
11325 }
11326
11327 /*------------------------------------------------------------------------
11328 Check if this BSS is being currently processed or queued,
11329 if queued - queue the new request as well
11330 ------------------------------------------------------------------------*/
11331 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11332 {
11333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11334 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11335 __func__, MAC_ADDR_ARRAY(macBSSID));
11336
11337 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11338 wpalMutexRelease(&pWDICtx->wptMutex);
11339 return wdiStatus;
11340 }
11341
11342 wpalMutexRelease(&pWDICtx->wptMutex);
11343
11344 /*-----------------------------------------------------------------------
11345 Get message buffer
11346 -----------------------------------------------------------------------*/
11347 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11348 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11349 &pSendBuffer, &usDataOffset, &usSendSize))||
11350 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11351 {
11352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11353 "Unable to get send buffer in set bss key req %x %x %x",
11354 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11355 WDI_ASSERT(0);
11356 return WDI_STATUS_E_FAILURE;
11357 }
11358
11359 halRssiRoamReqMsg.roamRssiReqParams.staId =
11360 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11361 wpalMemoryCopy( pSendBuffer+usDataOffset,
11362 &halRssiRoamReqMsg.roamRssiReqParams,
11363 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11364
11365 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11366 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11367
11368 /*-------------------------------------------------------------------------
11369 Send Get STA Request to HAL
11370 -------------------------------------------------------------------------*/
11371 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11372 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11373}/*WDI_ProcessGetRoamRssiReq*/
11374#endif
11375
Jeff Johnson295189b2012-06-20 16:38:30 -070011376/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011379
11380 @param pWDICtx: pointer to the WLAN DAL context
11381 pEventData: pointer to the event information structure
11382
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 @see
11384 @return Result of the function call
11385*/
11386WDI_Status
11387WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011388(
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 WDI_ControlBlockType* pWDICtx,
11390 WDI_EventInfoType* pEventData
11391)
11392{
11393 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11394 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11395
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011397 wpt_uint16 usDataOffset = 0;
11398 wpt_uint16 usSendSize = 0;
11399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11400
11401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 -------------------------------------------------------------------------*/
11404 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11405 ( NULL == pEventData->pCBfnc))
11406 {
11407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 }
11412
11413 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11414 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11415
11416 /*-----------------------------------------------------------------------
11417 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 -----------------------------------------------------------------------*/
11420
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11423 &pSendBuffer, &usDataOffset, &usSendSize))||
11424 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11425 {
11426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11427 "Unable to get send buffer in set bss key req %x %x %x",
11428 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 }
11432
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 wpalMemoryCopy( pSendBuffer+usDataOffset,
11434 &pwdiUpdateCfgParams->uConfigBufferLen,
11435 sizeof(wpt_uint32));
11436 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11437 pwdiUpdateCfgParams->pConfigBuffer,
11438 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011439
11440 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011442
11443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 -------------------------------------------------------------------------*/
11446
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11448 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011449
11450}/*WDI_ProcessUpdateCfgReq*/
11451
11452
11453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011456
11457 @param pWDICtx: pointer to the WLAN DAL context
11458 pEventData: pointer to the event information structure
11459
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 @see
11461 @return Result of the function call
11462*/
11463WDI_Status
11464WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011465(
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 WDI_ControlBlockType* pWDICtx,
11467 WDI_EventInfoType* pEventData
11468)
11469{
11470 WDI_AddBAReqParamsType* pwdiAddBAParams;
11471 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 wpt_uint16 usDataOffset = 0;
11476 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011477 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 wpt_macAddr macBSSID;
11479
11480 tAddBAReqMsg halAddBAReq;
11481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11482
11483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011485 -------------------------------------------------------------------------*/
11486 if (( NULL == pEventData ) ||
11487 ( NULL == pEventData->pEventData) ||
11488 ( NULL == pEventData->pCBfnc ))
11489 {
11490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 }
11495
11496 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11497 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11498
11499 /*-------------------------------------------------------------------------
11500 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011501 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 -------------------------------------------------------------------------*/
11503 wpalMutexAcquire(&pWDICtx->wptMutex);
11504
11505 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11509 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 &macBSSID))
11511 {
11512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11513 "This station does not exist in the WDI Station Table %d");
11514 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 }
11517
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11519 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11522 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11523 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011524
11525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 }
11528
11529 /*------------------------------------------------------------------------
11530 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 ------------------------------------------------------------------------*/
11533 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11534 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11536 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11537 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011538
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 }
11543
11544
11545 wpalMutexRelease(&pWDICtx->wptMutex);
11546 /*-----------------------------------------------------------------------
11547 Get message buffer
11548 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 sizeof(halAddBAReq.addBAParams),
11551 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11554 {
11555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11556 "Unable to get send buffer in Add BA req %x %x %x",
11557 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 }
11561
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11564 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11565#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11568#endif
11569
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 wpalMemoryCopy( pSendBuffer+usDataOffset,
11571 &halAddBAReq.addBAParams,
11572 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011573
11574 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011576
11577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011580 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11581 wdiAddBARspCb, pEventData->pUserData,
11582 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011583}/*WDI_ProcessAddBAReq*/
11584
11585
11586
11587/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011590
11591 @param pWDICtx: pointer to the WLAN DAL context
11592 pEventData: pointer to the event information structure
11593
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 @see
11595 @return Result of the function call
11596*/
11597WDI_Status
11598WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011599(
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 WDI_ControlBlockType* pWDICtx,
11601 WDI_EventInfoType* pEventData
11602)
11603{
11604 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11605 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 wpt_uint16 usDataOffset = 0;
11610 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 wpt_uint16 index;
11613 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011614
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 tTriggerBAReqMsg halTriggerBAReq;
11616 tTriggerBaReqCandidate* halTriggerBACandidate;
11617 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11619
11620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 -------------------------------------------------------------------------*/
11623 if (( NULL == pEventData ) ||
11624 ( NULL == pEventData->pEventData ) ||
11625 ( NULL == pEventData->pCBfnc ))
11626 {
11627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 }
11632
11633 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11634 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11635 /*-------------------------------------------------------------------------
11636 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 -------------------------------------------------------------------------*/
11639 wpalMutexAcquire(&pWDICtx->wptMutex);
11640
11641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11645 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 &macBSSID))
11647 {
11648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11649 "This station does not exist in the WDI Station Table %d");
11650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 }
11653
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11655 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11658 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11659 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011660
11661 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 }
11664
11665 /*------------------------------------------------------------------------
11666 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 ------------------------------------------------------------------------*/
11669 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11670 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11672 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11673 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011674
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 }
11679
11680
11681 wpalMutexRelease(&pWDICtx->wptMutex);
11682 /*-----------------------------------------------------------------------
11683 Get message buffer
11684 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11686 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011688 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011689 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11690 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011693 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11695 {
11696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11697 "Unable to get send buffer in Trigger BA req %x %x %x",
11698 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 }
11702
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11707
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 wpalMemoryCopy( pSendBuffer+usDataOffset,
11709 &halTriggerBAReq.triggerBAParams,
11710 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011711
Jeff Johnsone7245742012-09-05 17:12:55 -070011712 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11714 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11715 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011716
11717 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 index++)
11719 {
11720 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11721 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11722 halTriggerBACandidate++;
11723 wdiTriggerBACandidate++;
11724 }
11725
11726 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011727 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011728
11729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11733 wdiTriggerBARspCb, pEventData->pUserData,
11734 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011735}/*WDI_ProcessTriggerBAReq*/
11736
11737
11738
11739/**
11740 @brief Process Update Beacon Params Request function (called when Main FSM
11741 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011742
11743 @param pWDICtx: pointer to the WLAN DAL context
11744 pEventData: pointer to the event information structure
11745
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 @see
11747 @return Result of the function call
11748*/
11749WDI_Status
11750WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011751(
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 WDI_ControlBlockType* pWDICtx,
11753 WDI_EventInfoType* pEventData
11754)
11755{
11756 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11757 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 wpt_uint16 usDataOffset = 0;
11760 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11763
11764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 -------------------------------------------------------------------------*/
11767 if (( NULL == pEventData ) ||
11768 ( NULL == pEventData->pEventData) ||
11769 ( NULL == pEventData->pCBfnc))
11770 {
11771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011775 }
11776
11777 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11778 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11779 /*-----------------------------------------------------------------------
11780 Get message buffer
11781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 sizeof(halUpdateBeaconParams),
11784 &pSendBuffer, &usDataOffset, &usSendSize))||
11785 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11786 {
11787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11788 "Unable to get send buffer in set bss key req %x %x %x",
11789 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 }
11793
11794 /*BSS Index of the BSS*/
11795 halUpdateBeaconParams.bssIdx =
11796 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11797 /*shortPreamble mode. HAL should update all the STA rates when it
11798 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11801 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11804 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11807
11808 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011809 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011810 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011811 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11821 halUpdateBeaconParams.fRIFSMode =
11822 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11825
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11827 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011828
11829 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->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 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011837}/*WDI_ProcessUpdateBeaconParamsReq*/
11838
11839
11840
11841/**
11842 @brief Process Send Beacon template Request function (called when Main FSM
11843 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011844
11845 @param pWDICtx: pointer to the WLAN DAL context
11846 pEventData: pointer to the event information structure
11847
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 @see
11849 @return Result of the function call
11850*/
11851WDI_Status
11852WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011853(
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 WDI_ControlBlockType* pWDICtx,
11855 WDI_EventInfoType* pEventData
11856)
11857{
11858 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11859 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 wpt_uint16 usDataOffset = 0;
11862 wpt_uint16 usSendSize = 0;
11863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11864
11865 tSendBeaconReqMsg halSendBeaconReq;
11866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 -------------------------------------------------------------------------*/
11869 if (( NULL == pEventData ) ||
11870 ( NULL == pEventData->pEventData ) ||
11871 ( NULL == pEventData->pCBfnc ))
11872 {
11873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011877 }
11878
11879 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11880 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11881 /*-----------------------------------------------------------------------
11882 Get message buffer
11883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 sizeof(halSendBeaconReq.sendBeaconParam),
11886 &pSendBuffer, &usDataOffset, &usSendSize))||
11887 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11888 {
11889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11890 "Unable to get send buffer in send beacon req %x %x %x",
11891 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
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(halSendBeaconReq.sendBeaconParam.bssId,
11897 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11898 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11901 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11902 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11903 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011906 /* usP2PIeOffset should be atleast greater than timIeOffset */
11907 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11908 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11909 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11910 {
11911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11912 "Invalid usP2PIeOffset %hu",
11913 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11914 WDI_ASSERT(0);
11915 return WDI_STATUS_E_FAILURE;
11916 }
11917
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011919 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011920
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 wpalMemoryCopy( pSendBuffer+usDataOffset,
11922 &halSendBeaconReq.sendBeaconParam,
11923 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011924
11925 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011927
11928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11932 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011933}/*WDI_ProcessSendBeaconParamsReq*/
11934
11935/**
11936 @brief Process Update Beacon Params Request function (called when Main FSM
11937 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011938
11939 @param pWDICtx: pointer to the WLAN DAL context
11940 pEventData: pointer to the event information structure
11941
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 @see
11943 @return Result of the function call
11944*/
11945WDI_Status
11946WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011947(
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 WDI_ControlBlockType* pWDICtx,
11949 WDI_EventInfoType* pEventData
11950)
11951{
11952 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11953 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 wpt_uint16 usDataOffset = 0;
11956 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11959
11960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 -------------------------------------------------------------------------*/
11963 if (( NULL == pEventData ) ||
11964 ( NULL == pEventData->pEventData) ||
11965 ( NULL == pEventData->pCBfnc))
11966 {
11967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011971 }
11972
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11977 /*-----------------------------------------------------------------------
11978 Get message buffer
11979 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 sizeof(halUpdateProbeRspTmplParams),
11982 &pSendBuffer, &usDataOffset, &usSendSize))||
11983 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11984 {
11985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11986 "Unable to get send buffer in set bss key req %x %x %x",
11987 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 }
11991
11992 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 WDI_MAC_ADDR_LEN);
11995
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11998
11999 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12000 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012002
12003
12004 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12005 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12006 WDI_PROBE_REQ_BITMAP_IE_LEN);
12007
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 wpalMemoryCopy( pSendBuffer+usDataOffset,
12009 &halUpdateProbeRspTmplParams,
12010 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012011
12012 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014
12015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12019 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12020 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012021}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12022
12023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012026
12027 @param pWDICtx: pointer to the WLAN DAL context
12028 pEventData: pointer to the event information structure
12029
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 @see
12031 @return Result of the function call
12032*/
12033WDI_Status
12034WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012035(
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 WDI_ControlBlockType* pWDICtx,
12037 WDI_EventInfoType* pEventData
12038)
12039{
12040
12041 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12042 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12043
12044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 -------------------------------------------------------------------------*/
12047 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012050 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12052 {
12053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 }
12058
12059 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12062
12063 /*cache the wdi nv request message here if the the first fragment
12064 * To issue the request to HAL for the next fragment */
12065 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12066 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012067 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12068 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12070
12071 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12072 pWDICtx->pRspCBUserData = pEventData->pUserData;
12073 }
12074
12075 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12076}
12077
12078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012081
12082 @param pWDICtx: pointer to the WLAN DAL context
12083 pEventData: pointer to the event information structure
12084
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 @see
12086 @return Result of the function call
12087*/
12088WDI_Status WDI_ProcessSetMaxTxPowerReq
12089(
12090 WDI_ControlBlockType* pWDICtx,
12091 WDI_EventInfoType* pEventData
12092)
12093{
12094 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12095 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 wpt_uint16 usDataOffset = 0;
12098 wpt_uint16 usSendSize = 0;
12099 tSetMaxTxPwrReq halSetMaxTxPower;
12100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12101
12102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 -------------------------------------------------------------------------*/
12105 if (( NULL == pEventData ) ||
12106 ( NULL == pEventData->pEventData ) ||
12107 ( NULL == pEventData->pCBfnc ))
12108 {
12109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12118
12119 /*-----------------------------------------------------------------------
12120 Get message buffer
12121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012122if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12124 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012126)))
12127 {
12128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12129 "Unable to get Set Max Tx Power req %x %x %x",
12130 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 }
12134
12135 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12136 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12137 WDI_MAC_ADDR_LEN);
12138
12139 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12140 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12141 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012144
12145 wpalMemoryCopy( pSendBuffer+usDataOffset,
12146 &halSetMaxTxPower.setMaxTxPwrParams,
12147 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012148
12149 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012151
12152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12156 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12157 WDI_SET_MAX_TX_POWER_RESP);
12158
Jeff Johnson295189b2012-06-20 16:38:30 -070012159}
12160
schangd82195a2013-03-13 18:41:24 -070012161/**
12162 @brief Process Set Tx Power Request function (called when Main
12163 FSM allows it)
12164
12165 @param pWDICtx: pointer to the WLAN DAL context
12166 pEventData: pointer to the event information structure
12167
12168 @see
12169 @return Result of the function call
12170*/
12171WDI_Status WDI_ProcessSetTxPowerReq
12172(
12173 WDI_ControlBlockType* pWDICtx,
12174 WDI_EventInfoType* pEventData
12175)
12176{
12177 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12178 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12179 wpt_uint8* pSendBuffer = NULL;
12180 wpt_uint16 usDataOffset = 0;
12181 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012182 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12184
12185 /*-------------------------------------------------------------------------
12186 Sanity check
12187 -------------------------------------------------------------------------*/
12188 if (( NULL == pEventData ) ||
12189 ( NULL == pEventData->pEventData ) ||
12190 ( NULL == pEventData->pCBfnc ))
12191 {
12192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12193 "%s: Invalid parameters", __func__);
12194 WDI_ASSERT(0);
12195 return WDI_STATUS_E_FAILURE;
12196 }
12197
12198 pwdiSetTxPowerParams =
12199 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12200 wdiSetTxPowerRspCb =
12201 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12202
12203 /*-----------------------------------------------------------------------
12204 Get message buffer
12205 -----------------------------------------------------------------------*/
12206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12207 sizeof(tSetTxPwrReqParams),
12208 &pSendBuffer, &usDataOffset, &usSendSize))||
12209 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12210 )))
12211 {
12212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12213 "Unable to get Set Max Tx Power req %x %x %x",
12214 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12215 WDI_ASSERT(0);
12216 return WDI_STATUS_E_FAILURE;
12217 }
12218
Leo Changa37e2a92013-03-25 17:39:58 -070012219 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12220 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12221 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012222
12223 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12224 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12225
12226 /*-------------------------------------------------------------------------
12227 Send Set Tx Power Request to HAL
12228 -------------------------------------------------------------------------*/
12229 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12230 wdiSetTxPowerRspCb, pEventData->pUserData,
12231 WDI_SET_TX_POWER_RESP);
12232}
Jeff Johnson295189b2012-06-20 16:38:30 -070012233
12234/**
12235 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12236 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012237
12238 @param pWDICtx: pointer to the WLAN DAL context
12239 pEventData: pointer to the event information structure
12240
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 @see
12242 @return Result of the function call
12243*/
12244WDI_Status
12245WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012246(
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 WDI_ControlBlockType* pWDICtx,
12248 WDI_EventInfoType* pEventData
12249)
12250{
12251 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12252 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 wpt_uint16 usDataOffset = 0;
12255 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12258
12259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 -------------------------------------------------------------------------*/
12262 if (( NULL == pEventData ) ||
12263 ( NULL == pEventData->pEventData) ||
12264 ( NULL == pEventData->pCBfnc))
12265 {
12266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 }
12271
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12276 /*-----------------------------------------------------------------------
12277 Get message buffer
12278 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12280 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 sizeof(halSetP2PGONOAParams),
12282 &pSendBuffer, &usDataOffset, &usSendSize))||
12283 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12284 {
12285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12286 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12287 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 }
12291
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12296 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12305
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 wpalMemoryCopy( pSendBuffer+usDataOffset,
12307 &halSetP2PGONOAParams,
12308 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012309
12310 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012312
12313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12317 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12318 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012319}/*WDI_ProcessP2PGONOAReq*/
12320
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012321#ifdef FEATURE_WLAN_TDLS
12322
12323/**
12324 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12325 allows it)
12326
12327 @param pWDICtx: pointer to the WLAN DAL context
12328 pEventData: pointer to the event information structure
12329
12330 @see
12331 @return Result of the function call
12332*/
12333WDI_Status
12334WDI_ProcessTdlsLinkEstablishReq
12335(
12336 WDI_ControlBlockType* pWDICtx,
12337 WDI_EventInfoType* pEventData
12338)
12339{
12340 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12341 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12342 wpt_uint8* pSendBuffer = NULL;
12343 wpt_uint16 usDataOffset = 0;
12344 wpt_uint16 usSendSize = 0;
12345
12346 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12348
12349 /*-------------------------------------------------------------------------
12350 Sanity check
12351 -------------------------------------------------------------------------*/
12352 if (( NULL == pEventData ) ||
12353 ( NULL == pEventData->pEventData) ||
12354 ( NULL == pEventData->pCBfnc))
12355 {
12356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12357 "%s: Invalid parameters", __func__);
12358 WDI_ASSERT(0);
12359 return WDI_STATUS_E_FAILURE;
12360 }
12361 pwdiTDLSLinkEstablishReqParams =
12362 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12363 wdiTDLSLinkEstablishReqRspCb =
12364 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12365
12366
12367 /*-----------------------------------------------------------------------
12368 Get message buffer
12369 -----------------------------------------------------------------------*/
12370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12371 WDI_TDLS_LINK_ESTABLISH_REQ,
12372 sizeof(halSetTDLSLinkEstablishParams),
12373 &pSendBuffer, &usDataOffset, &usSendSize))||
12374 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12375 {
12376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12377 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12378 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12379 WDI_ASSERT(0);
12380 return WDI_STATUS_E_FAILURE;
12381 }
12382
12383 halSetTDLSLinkEstablishParams.staIdx =
12384 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12385 halSetTDLSLinkEstablishParams.bIsResponder =
12386 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12387 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12388 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12389 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12390 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12391 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12392 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12393 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12394 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12395 halSetTDLSLinkEstablishParams.aAck = 0;
12396 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12397 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12398 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12399
12400 wpalMemoryCopy( pSendBuffer+usDataOffset,
12401 &halSetTDLSLinkEstablishParams,
12402 sizeof(halSetTDLSLinkEstablishParams));
12403
12404 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12405 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12406
12407 /*-------------------------------------------------------------------------
12408 Send Update Probe Resp Template Request to HAL
12409 -------------------------------------------------------------------------*/
12410 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12411 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12412 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12413 return 0;
12414}/*WDI_ProcessTdlsLinkEstablishReq*/
12415
12416
12417#endif
12418
Jeff Johnson295189b2012-06-20 16:38:30 -070012419
12420
12421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 @param None
12425
12426 @see
12427 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012428*/
12429void
12430WDI_SetPowerStateCb
12431(
12432 wpt_status status,
12433 unsigned int dxePhyAddr,
12434 void *pContext
12435)
12436{
12437 wpt_status wptStatus;
12438 WDI_ControlBlockType *pCB = NULL;
12439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12440 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12441 {
12442 //it shouldn't happen, put an error msg
12443 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 /*
12445 * Trigger the event to bring the Enter BMPS req function to come
12446 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012447*/
12448 if( NULL != pContext )
12449 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 }
12452 else
12453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 pCB = &gWDICb;
12456 }
12457 pCB->dxePhyAddr = dxePhyAddr;
12458 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12459 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12460 {
12461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12462 "Failed to set an event");
12463
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 }
12466 return;
12467}
12468
12469
12470/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012473
12474 @param pWDICtx: pointer to the WLAN DAL context
12475 pEventData: pointer to the event information structure
12476
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 @see
12478 @return Result of the function call
12479*/
12480WDI_Status
12481WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012482(
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 WDI_ControlBlockType* pWDICtx,
12484 WDI_EventInfoType* pEventData
12485)
12486{
Jeff Johnson43971f52012-07-17 12:26:56 -070012487 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 wpt_uint16 usDataOffset = 0;
12491 wpt_uint16 usSendSize = 0;
12492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12493
12494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 -------------------------------------------------------------------------*/
12497 if (( NULL == pEventData ) ||
12498 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12499 {
12500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012503 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 }
12505
12506 /*-----------------------------------------------------------------------
12507 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 0,
12512 &pSendBuffer, &usDataOffset, &usSendSize))||
12513 ( usSendSize < (usDataOffset )))
12514 {
12515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12516 "Unable to get send buffer in Enter IMPS req %x %x",
12517 pEventData, wdiEnterImpsRspCb);
12518 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012519 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 }
12521
12522 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012523 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12524 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 {
12526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12527 "WDI Init failed to reset an event");
12528
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012530 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 }
12532
12533 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012534 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12535 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12537 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12538 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012539 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012540 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012541
12542 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012545 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12546 WDI_SET_POWER_STATE_TIMEOUT);
12547 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 {
12549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12550 "WDI Init failed to wait on an event");
12551
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012553 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 }
12555
12556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12560 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012561
12562fail:
12563 // Release the message buffer so we don't leak
12564 wpalMemoryFree(pSendBuffer);
12565
12566failRequest:
12567 //WDA should have failure check to avoid the memory leak
12568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012569}/*WDI_ProcessEnterImpsReq*/
12570
12571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012574
12575 @param pWDICtx: pointer to the WLAN DAL context
12576 pEventData: pointer to the event information structure
12577
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 @see
12579 @return Result of the function call
12580*/
12581WDI_Status
12582WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012583(
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 WDI_ControlBlockType* pWDICtx,
12585 WDI_EventInfoType* pEventData
12586)
12587{
12588 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 wpt_uint16 usDataOffset = 0;
12591 wpt_uint16 usSendSize = 0;
12592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12593
12594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 -------------------------------------------------------------------------*/
12597 if (( NULL == pEventData ) ||
12598 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12599 {
12600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 }
12605
12606 /*-----------------------------------------------------------------------
12607 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 0,
12612 &pSendBuffer, &usDataOffset, &usSendSize))||
12613 ( usSendSize < (usDataOffset )))
12614 {
12615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12616 "Unable to get send buffer in Exit IMPS req %x %x",
12617 pEventData, wdiExitImpsRspCb);
12618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 }
12621
12622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12626 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012627}/*WDI_ProcessExitImpsReq*/
12628
12629/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012632
12633 @param pWDICtx: pointer to the WLAN DAL context
12634 pEventData: pointer to the event information structure
12635
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 @see
12637 @return Result of the function call
12638*/
12639WDI_Status
12640WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012641(
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 WDI_ControlBlockType* pWDICtx,
12643 WDI_EventInfoType* pEventData
12644)
12645{
12646 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12647 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 wpt_uint16 usDataOffset = 0;
12650 wpt_uint16 usSendSize = 0;
12651 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012652 wpt_status wptStatus;
12653
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12661 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)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);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012666 goto failRequest;
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_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 sizeof(enterBmpsReq),
12675 &pSendBuffer, &usDataOffset, &usSendSize))||
12676 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12677 {
12678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12679 "Unable to get send buffer in Enter BMPS req %x %x %x",
12680 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12681 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012682 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 }
12684
12685 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012686 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12687 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 {
12689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12690 "WDI Init failed to reset an event");
12691
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012693 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 }
12695
12696 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012697 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12698 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12699 {
12700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12701 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12702 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012703 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012704 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012705
12706/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012709 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12710 WDI_SET_POWER_STATE_TIMEOUT);
12711 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 {
12713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12714 "WDI Init failed to wait on an event");
12715
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012717 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 }
12719
12720 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12721
12722 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12723 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12724 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12725 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12726
12727 // For CCX and 11R Roaming
12728 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12729 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12730 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12731
12732 wpalMemoryCopy( pSendBuffer+usDataOffset,
12733 &enterBmpsReq,
12734 sizeof(enterBmpsReq));
12735
12736 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012738
12739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12743 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012744
12745fail:
12746 // Release the message buffer so we don't leak
12747 wpalMemoryFree(pSendBuffer);
12748
12749failRequest:
12750 //WDA should have failure check to avoid the memory leak
12751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012752}/*WDI_ProcessEnterBmpsReq*/
12753
12754/**
12755 @brief Process Exit BMPS Request function (called when Main FSM
12756 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012757
12758 @param pWDICtx: pointer to the WLAN DAL context
12759 pEventData: pointer to the event information structure
12760
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 @see
12762 @return Result of the function call
12763*/
12764WDI_Status
12765WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012766(
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 WDI_ControlBlockType* pWDICtx,
12768 WDI_EventInfoType* pEventData
12769)
12770{
12771 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12772 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 wpt_uint16 usDataOffset = 0;
12775 wpt_uint16 usSendSize = 0;
12776 tHalExitBmpsReqParams exitBmpsReq;
12777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12778
12779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 -------------------------------------------------------------------------*/
12782 if (( NULL == pEventData ) ||
12783 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12784 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12785 {
12786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012790 }
12791
12792 /*-----------------------------------------------------------------------
12793 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 sizeof(exitBmpsReq),
12798 &pSendBuffer, &usDataOffset, &usSendSize))||
12799 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12800 {
12801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12802 "Unable to get send buffer in Exit BMPS req %x %x %x",
12803 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 }
12807 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12808
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12810
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 wpalMemoryCopy( pSendBuffer+usDataOffset,
12812 &exitBmpsReq,
12813 sizeof(exitBmpsReq));
12814
12815 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012817
12818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12822 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012823}/*WDI_ProcessExitBmpsReq*/
12824
12825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012827 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012828
12829 @param pWDICtx: pointer to the WLAN DAL context
12830 pEventData: pointer to the event information structure
12831
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 @see
12833 @return Result of the function call
12834*/
12835WDI_Status
12836WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012837(
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 WDI_ControlBlockType* pWDICtx,
12839 WDI_EventInfoType* pEventData
12840)
12841{
12842 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12843 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 wpt_uint16 usDataOffset = 0;
12846 wpt_uint16 usSendSize = 0;
12847 tUapsdReqParams enterUapsdReq;
12848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12849
12850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 -------------------------------------------------------------------------*/
12853 if (( NULL == pEventData ) ||
12854 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12855 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12856 {
12857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 }
12862
12863 /*-----------------------------------------------------------------------
12864 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 sizeof(enterUapsdReq),
12869 &pSendBuffer, &usDataOffset, &usSendSize))||
12870 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12871 {
12872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12873 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12874 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 }
12878
12879 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12880 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12881 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12882 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12883 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12884 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12885 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12886 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 wpalMemoryCopy( pSendBuffer+usDataOffset,
12890 &enterUapsdReq,
12891 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012892
12893 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895
12896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12900 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012901}/*WDI_ProcessEnterUapsdReq*/
12902
12903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012906
12907 @param pWDICtx: pointer to the WLAN DAL context
12908 pEventData: pointer to the event information structure
12909
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 @see
12911 @return Result of the function call
12912*/
12913WDI_Status
12914WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012915(
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 WDI_ControlBlockType* pWDICtx,
12917 WDI_EventInfoType* pEventData
12918)
12919{
12920 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 wpt_uint16 usDataOffset = 0;
12923 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012924 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12925 wpt_uint8 bssIdx = 0;
12926
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12928
12929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 -------------------------------------------------------------------------*/
12932 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012933 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12935 {
12936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 }
12941
12942 /*-----------------------------------------------------------------------
12943 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012947 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012949 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 {
12951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12952 "Unable to get send buffer in Exit UAPSD req %x %x",
12953 pEventData, wdiExitUapsdRspCb);
12954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 }
12957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012958 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12959
12960 wpalMemoryCopy( pSendBuffer+usDataOffset,
12961 &bssIdx,
12962 sizeof(wpt_uint8));
12963
12964 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12965 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12966
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012968 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012969 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012970 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12971 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012972}/*WDI_ProcessExitUapsdReq*/
12973
12974/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012975 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012977
12978 @param pWDICtx: pointer to the WLAN DAL context
12979 pEventData: pointer to the event information structure
12980
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 @see
12982 @return Result of the function call
12983*/
12984WDI_Status
12985WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012986(
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 WDI_ControlBlockType* pWDICtx,
12988 WDI_EventInfoType* pEventData
12989)
12990{
12991 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12992 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 wpt_uint16 usDataOffset = 0;
12995 wpt_uint16 usSendSize = 0;
12996 tUapsdInfo uapsdAcParamsReq;
12997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12998
12999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 -------------------------------------------------------------------------*/
13002 if (( NULL == pEventData ) ||
13003 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13004 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13005 {
13006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 }
13011
13012 /*-----------------------------------------------------------------------
13013 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 sizeof(uapsdAcParamsReq),
13018 &pSendBuffer, &usDataOffset, &usSendSize))||
13019 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13020 {
13021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13022 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13023 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 }
13027
13028 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13029 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13030 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13031 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13032 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13033 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13034
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 wpalMemoryCopy( pSendBuffer+usDataOffset,
13036 &uapsdAcParamsReq,
13037 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013038
13039 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013041
13042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13046 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013047}/*WDI_ProcessSetUapsdAcParamsReq*/
13048
13049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013052
13053 @param pWDICtx: pointer to the WLAN DAL context
13054 pEventData: pointer to the event information structure
13055
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 @see
13057 @return Result of the function call
13058*/
13059WDI_Status
13060WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013061(
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 WDI_ControlBlockType* pWDICtx,
13063 WDI_EventInfoType* pEventData
13064)
13065{
13066 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13067 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 wpt_uint16 usDataOffset = 0;
13070 wpt_uint16 usSendSize = 0;
13071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13072
13073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 -------------------------------------------------------------------------*/
13076 if (( NULL == pEventData ) ||
13077 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13078 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13079 {
13080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 }
13085
13086 /*-----------------------------------------------------------------------
13087 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13092 &pSendBuffer, &usDataOffset, &usSendSize))||
13093 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13094 {
13095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13096 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13097 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13098 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
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 wpalMemoryCopy( pSendBuffer+usDataOffset,
13103 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13104 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013105
13106 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013108
13109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13113 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013114}/*WDI_ProcessUpdateUapsdParamsReq*/
13115
13116/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013119
13120 @param pWDICtx: pointer to the WLAN DAL context
13121 pEventData: pointer to the event information structure
13122
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 @see
13124 @return Result of the function call
13125*/
13126WDI_Status
13127WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013128(
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 WDI_ControlBlockType* pWDICtx,
13130 WDI_EventInfoType* pEventData
13131)
13132{
13133 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13134 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 wpt_uint16 usDataOffset = 0;
13137 wpt_uint16 usSendSize = 0;
13138 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13139
13140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13141
13142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 -------------------------------------------------------------------------*/
13145 if (( NULL == pEventData ) ||
13146 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13147 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13148 {
13149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 }
13154
13155 /*-----------------------------------------------------------------------
13156 Get message buffer
13157 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 sizeof(halRxpFilterParams),
13160 &pSendBuffer, &usDataOffset, &usSendSize))||
13161 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13162 {
13163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13164 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13165 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 }
13169
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13174
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 wpalMemoryCopy( pSendBuffer+usDataOffset,
13176 &halRxpFilterParams,
13177 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013178
13179 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181
13182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13186 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013187}/*WDI_ProcessConfigureRxpFilterReq*/
13188
13189/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013192
13193 @param pWDICtx: pointer to the WLAN DAL context
13194 pEventData: pointer to the event information structure
13195
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 @see
13197 @return Result of the function call
13198*/
13199WDI_Status
13200WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013201(
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 WDI_ControlBlockType* pWDICtx,
13203 WDI_EventInfoType* pEventData
13204)
13205{
13206 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13207 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 wpt_uint16 usDataOffset = 0;
13210 wpt_uint16 usSendSize = 0;
13211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13212
13213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 -------------------------------------------------------------------------*/
13216 if (( NULL == pEventData ) ||
13217 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13218 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13219 {
13220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 }
13225
13226 /*-----------------------------------------------------------------------
13227 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13232 &pSendBuffer, &usDataOffset, &usSendSize))||
13233 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13234 {
13235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13236 "Unable to get send buffer in Set beacon filter req %x %x %x",
13237 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 }
13241
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 wpalMemoryCopy( pSendBuffer+usDataOffset,
13243 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13244 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13245 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13246 &pwdiBeaconFilterParams->aFilters[0],
13247 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013248
13249 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251
13252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13256 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013257}/*WDI_ProcessSetBeaconFilterReq*/
13258
13259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013262
13263 @param pWDICtx: pointer to the WLAN DAL context
13264 pEventData: pointer to the event information structure
13265
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 @see
13267 @return Result of the function call
13268*/
13269WDI_Status
13270WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013271(
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 WDI_ControlBlockType* pWDICtx,
13273 WDI_EventInfoType* pEventData
13274)
13275{
13276 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13277 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 wpt_uint16 usDataOffset = 0;
13280 wpt_uint16 usSendSize = 0;
13281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13282
13283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 -------------------------------------------------------------------------*/
13286 if (( NULL == pEventData ) ||
13287 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13288 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13289 {
13290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 }
13295
13296 /*-----------------------------------------------------------------------
13297 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13302 &pSendBuffer, &usDataOffset, &usSendSize))||
13303 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13304 {
13305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13306 "Unable to get send buffer in remove beacon filter req %x %x %x",
13307 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 }
13311
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 wpalMemoryCopy( pSendBuffer+usDataOffset,
13313 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13314 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013315
13316 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013318
13319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13323 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013324}
13325
13326/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013327 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013328 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013329
13330 @param pWDICtx: pointer to the WLAN DAL context
13331 pEventData: pointer to the event information structure
13332
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 @see
13334 @return Result of the function call
13335*/
13336WDI_Status
13337WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013338(
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 WDI_ControlBlockType* pWDICtx,
13340 WDI_EventInfoType* pEventData
13341)
13342{
13343 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13344 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 wpt_uint16 usDataOffset = 0;
13347 wpt_uint16 usSendSize = 0;
13348 tHalRSSIThresholds rssiThresholdsReq;
13349 WDI_Status ret_status = 0;
13350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13351
13352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 -------------------------------------------------------------------------*/
13355 if (( NULL == pEventData ) ||
13356 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13357 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13358 {
13359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 }
13364
13365 /*-----------------------------------------------------------------------
13366 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 sizeof(rssiThresholdsReq),
13371 &pSendBuffer, &usDataOffset, &usSendSize))||
13372 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13373 {
13374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13375 "Unable to get send buffer in remove beacon filter req %x %x %x",
13376 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 }
13380
Jeff Johnsone7245742012-09-05 17:12:55 -070013381 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013388 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013398 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13401
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 wpalMemoryCopy( pSendBuffer+usDataOffset,
13403 &rssiThresholdsReq,
13404 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013405
13406 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013408
13409 /*-------------------------------------------------------------------------
13410 Send Set threshold req to HAL
13411 -------------------------------------------------------------------------*/
13412 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13413 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13414 {
13415 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13416 // req. Then as a result of processing the threshold cross ind, we trigger
13417 // a Set threshold req, then we need to indicate to WDI that it needs to
13418 // go to busy state as a result of the indication as we sent a req in the
13419 // same WDI context.
13420 // Hence expected state transition is to busy.
13421 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13422 }
13423
13424 return ret_status;
13425}
13426
13427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013430
13431 @param pWDICtx: pointer to the WLAN DAL context
13432 pEventData: pointer to the event information structure
13433
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 @see
13435 @return Result of the function call
13436*/
13437WDI_Status
13438WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013439(
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 WDI_ControlBlockType* pWDICtx,
13441 WDI_EventInfoType* pEventData
13442)
13443{
13444 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13445 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 wpt_uint16 usDataOffset = 0;
13448 wpt_uint16 usSendSize = 0;
13449 tHalHostOffloadReq hostOffloadParams;
13450 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013451 wpt_uint8 ucCurrentBSSSesIdx = 0;
13452 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013453
13454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13455
13456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 -------------------------------------------------------------------------*/
13459 if (( NULL == pEventData ) ||
13460 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13461 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13462 {
13463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013466 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 }
13468
13469 /*-----------------------------------------------------------------------
13470 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13475 &pSendBuffer, &usDataOffset, &usSendSize))||
13476 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13477 {
13478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13479 "Unable to get send buffer in host offload req %x %x %x",
13480 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13481 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013482 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 }
13484
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013485 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13486 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13487 &pBSSSes);
13488 if ( NULL == pBSSSes )
13489 {
13490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013491 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13492 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013493 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013494 }
13495
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13497 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013498
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13500 {
13501 // ARP Offload
13502 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13503 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13504 4);
13505 }
13506 else
13507 {
13508 // NS Offload
13509 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13510 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13511 16);
13512
13513#ifdef WLAN_NS_OFFLOAD
13514 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13515 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13516 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13517 16);
13518 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13519 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13520 16);
13521 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13522 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13523 16);
13524 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13525 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13526 16);
13527 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13528 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13529 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013530 nsOffloadParams.srcIPv6AddrValid =
13531 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13532
13533 nsOffloadParams.targetIPv6Addr1Valid =
13534 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13535
13536 nsOffloadParams.targetIPv6Addr2Valid =
13537 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13538
13539 nsOffloadParams.slotIndex =
13540 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013541
Jeff Johnson295189b2012-06-20 16:38:30 -070013542#endif // WLAN_NS_OFFLOAD
13543 }
13544
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013545 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13546
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 // copy hostOffloadParams into pSendBuffer
13548 wpalMemoryCopy( pSendBuffer+usDataOffset,
13549 &hostOffloadParams,
13550 sizeof(hostOffloadParams));
13551
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013552 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013554 // copy nsOffloadParams into pSendBuffer
13555 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 &nsOffloadParams,
13557 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013558 }
13559 else
13560 {
13561#ifdef WLAN_NS_OFFLOAD
13562 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13563 {
13564 // copy nsOffloadParams into pSendBuffer
13565 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13566 &nsOffloadParams,
13567 sizeof(nsOffloadParams));
13568 }
13569#endif
13570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013571
13572 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013574
13575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13579 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013580
13581fail:
13582 // Release the message buffer so we don't leak
13583 wpalMemoryFree(pSendBuffer);
13584
13585failRequest:
13586 //WDA should have failure check to avoid the memory leak
13587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013588}/*WDI_ProcessHostOffloadReq*/
13589
13590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013593
13594 @param pWDICtx: pointer to the WLAN DAL context
13595 pEventData: pointer to the event information structure
13596
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 @see
13598 @return Result of the function call
13599*/
13600WDI_Status
13601WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013602(
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 WDI_ControlBlockType* pWDICtx,
13604 WDI_EventInfoType* pEventData
13605)
13606{
13607 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13608 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013609 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013610 wpt_uint16 usDataOffset = 0;
13611 wpt_uint16 usSendSize = 0;
13612 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013613 wpt_uint8 ucCurrentBSSSesIdx = 0;
13614 WDI_BSSSessionType* pBSSSes = NULL;
13615
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13617
13618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 -------------------------------------------------------------------------*/
13621 if (( NULL == pEventData ) ||
13622 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13623 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13624 {
13625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13626 "Invalid parameters in Keep Alive req");
13627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013628 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 }
13630
13631 /*-----------------------------------------------------------------------
13632 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013633 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 sizeof(keepAliveReq),
13637 &pSendBuffer, &usDataOffset, &usSendSize))||
13638 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13639 {
13640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13641 "Unable to get send buffer in keep alive req %x %x %x",
13642 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13643 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013644 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 }
13646
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013647 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13648 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13649 &pBSSSes);
13650 if ( NULL == pBSSSes )
13651 {
13652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013653 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013654 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013655 }
13656
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13658 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13659
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013660 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013661
Jeff Johnson295189b2012-06-20 16:38:30 -070013662 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13663 {
13664 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13665 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13666 HAL_IPV4_ADDR_LEN);
13667 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13668 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013669 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 wpalMemoryCopy(keepAliveReq.destMacAddr,
13671 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13672 HAL_MAC_ADDR_LEN);
13673 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013674
13675 wpalMemoryCopy( pSendBuffer+usDataOffset,
13676 &keepAliveReq,
13677 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013678
13679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13680 "Process keep alive req %d",sizeof(keepAliveReq));
13681
13682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13683 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13684
13685 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013687
13688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13689 "Sending keep alive req to HAL");
13690
13691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013692 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13695 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013696
13697fail:
13698 // Release the message buffer so we don't leak
13699 wpalMemoryFree(pSendBuffer);
13700
13701failRequest:
13702 //WDA should have failure check to avoid the memory leak
13703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013704}/*WDI_ProcessKeepAliveReq*/
13705
13706
13707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013710
13711 @param pWDICtx: pointer to the WLAN DAL context
13712 pEventData: pointer to the event information structure
13713
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 @see
13715 @return Result of the function call
13716*/
13717WDI_Status
13718WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013719(
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 WDI_ControlBlockType* pWDICtx,
13721 WDI_EventInfoType* pEventData
13722)
13723{
13724 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13725 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 wpt_uint16 usDataOffset = 0;
13728 wpt_uint16 usSendSize = 0;
13729 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013730 wpt_uint8 ucCurrentBSSSesIdx = 0;
13731 WDI_BSSSessionType* pBSSSes = NULL;
13732
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13734
13735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 -------------------------------------------------------------------------*/
13738 if (( NULL == pEventData ) ||
13739 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13740 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13741 {
13742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013745 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 }
13747
13748 /*-----------------------------------------------------------------------
13749 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 sizeof(wowlAddBcPtrnReq),
13754 &pSendBuffer, &usDataOffset, &usSendSize))||
13755 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13756 {
13757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13758 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13759 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13760 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013761 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 }
13763
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013764 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13765 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13766 &pBSSSes);
13767 if ( NULL == pBSSSes )
13768 {
13769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013770 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013771 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013772 }
13773
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13782
13783 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13784 {
13785 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13786 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13787 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13788 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13789 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13790 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13791 }
13792 else
13793 {
13794 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13795 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13796 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13797 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13798 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13799 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13800
13801 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13802 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13803 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13804 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13805 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13806 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13807 }
13808
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013809 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13810
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 wpalMemoryCopy( pSendBuffer+usDataOffset,
13812 &wowlAddBcPtrnReq,
13813 sizeof(wowlAddBcPtrnReq));
13814
13815 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817
13818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13822 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013823fail:
13824 // Release the message buffer so we don't leak
13825 wpalMemoryFree(pSendBuffer);
13826
13827failRequest:
13828 //WDA should have failure check to avoid the memory leak
13829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013830}/*WDI_ProcessWowlAddBcPtrnReq*/
13831
13832/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013835
13836 @param pWDICtx: pointer to the WLAN DAL context
13837 pEventData: pointer to the event information structure
13838
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 @see
13840 @return Result of the function call
13841*/
13842WDI_Status
13843WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013844(
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 WDI_ControlBlockType* pWDICtx,
13846 WDI_EventInfoType* pEventData
13847)
13848{
13849 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13850 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 wpt_uint16 usDataOffset = 0;
13853 wpt_uint16 usSendSize = 0;
13854 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013855 wpt_uint8 ucCurrentBSSSesIdx = 0;
13856 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13858
13859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 -------------------------------------------------------------------------*/
13862 if (( NULL == pEventData ) ||
13863 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13864 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13865 {
13866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013869 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 }
13871
13872 /*-----------------------------------------------------------------------
13873 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013876 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 sizeof(wowlDelBcPtrnReq),
13878 &pSendBuffer, &usDataOffset, &usSendSize))||
13879 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13880 {
13881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13882 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13883 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13884 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013885 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 }
13887
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013888 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13889 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13890 &pBSSSes);
13891 if ( NULL == pBSSSes )
13892 {
13893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013894 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013895 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013896 }
13897
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013900
13901 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13902
Jeff Johnsone7245742012-09-05 17:12:55 -070013903 wpalMemoryCopy( pSendBuffer+usDataOffset,
13904 &wowlDelBcPtrnReq,
13905 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013906
13907 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013909
13910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13914 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013915
13916fail:
13917 // Release the message buffer so we don't leak
13918 wpalMemoryFree(pSendBuffer);
13919
13920failRequest:
13921 //WDA should have failure check to avoid the memory leak
13922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013923}/*WDI_ProcessWowlDelBcPtrnReq*/
13924
13925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013928
13929 @param pWDICtx: pointer to the WLAN DAL context
13930 pEventData: pointer to the event information structure
13931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 @see
13933 @return Result of the function call
13934*/
13935WDI_Status
13936WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013937(
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 WDI_ControlBlockType* pWDICtx,
13939 WDI_EventInfoType* pEventData
13940)
13941{
13942 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13943 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 wpt_uint16 usDataOffset = 0;
13946 wpt_uint16 usSendSize = 0;
13947 tHalWowlEnterParams wowlEnterReq;
13948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13949
13950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013952 -------------------------------------------------------------------------*/
13953 if (( NULL == pEventData ) ||
13954 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13955 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13956 {
13957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 }
13962
13963 /*-----------------------------------------------------------------------
13964 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 sizeof(wowlEnterReq),
13969 &pSendBuffer, &usDataOffset, &usSendSize))||
13970 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13971 {
13972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13973 "Unable to get send buffer in Wowl enter req %x %x %x",
13974 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 }
13978
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13995
13996#ifdef WLAN_WAKEUP_EVENTS
13997 wowlEnterReq.ucWoWEAPIDRequestEnable =
13998 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13999
14000 wowlEnterReq.ucWoWEAPOL4WayEnable =
14001 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14002
14003 wowlEnterReq.ucWowNetScanOffloadMatch =
14004 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14005
14006 wowlEnterReq.ucWowGTKRekeyError =
14007 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14008
14009 wowlEnterReq.ucWoWBSSConnLoss =
14010 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14011#endif // WLAN_WAKEUP_EVENTS
14012
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014013 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14014
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14016 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14017 sizeof(tSirMacAddr));
14018
Jeff Johnsone7245742012-09-05 17:12:55 -070014019 wpalMemoryCopy( pSendBuffer+usDataOffset,
14020 &wowlEnterReq,
14021 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014022
14023 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014025
14026 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14030 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014031}/*WDI_ProcessWowlEnterReq*/
14032
14033/**
14034 @brief Process Wowl exit Request function (called when Main FSM
14035 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014036
14037 @param pWDICtx: pointer to the WLAN DAL context
14038 pEventData: pointer to the event information structure
14039
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 @see
14041 @return Result of the function call
14042*/
14043WDI_Status
14044WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014045(
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 WDI_ControlBlockType* pWDICtx,
14047 WDI_EventInfoType* pEventData
14048)
14049{
14050 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014051 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 wpt_uint16 usDataOffset = 0;
14054 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014055 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14057
14058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 -------------------------------------------------------------------------*/
14061 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014062 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14064 {
14065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 }
14070
14071 /*-----------------------------------------------------------------------
14072 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014076 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014078 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 {
14080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14081 "Unable to get send buffer in Wowl Exit req %x %x",
14082 pEventData, wdiWowlExitCb);
14083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 }
14086
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014087 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14088
14089 wpalMemoryCopy( pSendBuffer+usDataOffset,
14090 &wowlExitparams,
14091 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014093 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14096 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014097}/*WDI_ProcessWowlExitReq*/
14098
14099/**
14100 @brief Process Configure Apps Cpu Wakeup State Request function
14101 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014102
14103 @param pWDICtx: pointer to the WLAN DAL context
14104 pEventData: pointer to the event information structure
14105
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 @see
14107 @return Result of the function call
14108*/
14109WDI_Status
14110WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014111(
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 WDI_ControlBlockType* pWDICtx,
14113 WDI_EventInfoType* pEventData
14114)
14115{
14116 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14117 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 wpt_uint16 usDataOffset = 0;
14120 wpt_uint16 usSendSize = 0;
14121 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14123
14124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 -------------------------------------------------------------------------*/
14127 if (( NULL == pEventData ) ||
14128 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14129 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14130 {
14131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 }
14136
14137 /*-----------------------------------------------------------------------
14138 Get message buffer
14139 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 sizeof(halCfgAppsCpuWakeupStateReqParams),
14142 &pSendBuffer, &usDataOffset, &usSendSize))||
14143 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14144 {
14145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14146 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14147 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 }
14151
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14154
Jeff Johnsone7245742012-09-05 17:12:55 -070014155 wpalMemoryCopy( pSendBuffer+usDataOffset,
14156 &halCfgAppsCpuWakeupStateReqParams,
14157 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014158
14159 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014160 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014161
14162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14166 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14167 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014168}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14169
14170#ifdef WLAN_FEATURE_VOWIFI_11R
14171/**
14172 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14173 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014174
14175 @param pWDICtx: pointer to the WLAN DAL context
14176 pEventData: pointer to the event information structure
14177
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 @see
14179 @return Result of the function call
14180*/
14181WDI_Status
14182WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014183(
Jeff Johnson295189b2012-06-20 16:38:30 -070014184 WDI_ControlBlockType* pWDICtx,
14185 WDI_EventInfoType* pEventData
14186)
14187{
14188 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14189 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014192 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 wpt_uint16 usDataOffset = 0;
14194 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 wpt_macAddr macBSSID;
14197 tAggrAddTsReq halAggrAddTsReq;
14198 int i;
14199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14200
14201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 -------------------------------------------------------------------------*/
14204 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14205 ( NULL == pEventData->pCBfnc ))
14206 {
14207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 }
14212 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14213 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14214 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14215 /*-------------------------------------------------------------------------
14216 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 -------------------------------------------------------------------------*/
14219 wpalMutexAcquire(&pWDICtx->wptMutex);
14220
14221 /*------------------------------------------------------------------------
14222 Find the BSS for which the request is made and identify WDI session
14223 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014224 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14225 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 &macBSSID))
14227 {
14228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14229 "This station does not exist in the WDI Station Table %d");
14230 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 }
14233
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14235 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14238 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14239 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014240
14241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014244
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 /*------------------------------------------------------------------------
14246 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 ------------------------------------------------------------------------*/
14249 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14250 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14252 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14253 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014254
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 }
14259
14260 wpalMutexRelease(&pWDICtx->wptMutex);
14261 /*-----------------------------------------------------------------------
14262 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 sizeof(tAggrAddTsParams),
14267 &pSendBuffer, &usDataOffset, &usSendSize))||
14268 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14269 {
14270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14271 "Unable to get send buffer in set bss key req %x %x %x",
14272 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 }
14276
Jeff Johnsone7245742012-09-05 17:12:55 -070014277 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14281
14282 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14283 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014286 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14290 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14293 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14296 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14299 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14302 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14305 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14308 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14311 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014316
14317
14318 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014328 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014330 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014338 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14348 }
14349
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 wpalMemoryCopy( pSendBuffer+usDataOffset,
14351 &halAggrAddTsReq,
14352 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014353
14354 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014356
14357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014363}/*WDI_ProcessAggrAddTSpecReq*/
14364#endif /* WLAN_FEATURE_VOWIFI_11R */
14365
14366/**
14367 @brief Process Shutdown Request function (called when Main FSM
14368 allows it)
14369
14370 @param pWDICtx: pointer to the WLAN DAL context
14371 pEventData: pointer to the event information structure
14372
14373 @see
14374 @return Result of the function call
14375*/
14376WDI_Status
14377WDI_ProcessShutdownReq
14378(
14379 WDI_ControlBlockType* pWDICtx,
14380 WDI_EventInfoType* pEventData
14381 )
14382{
14383 wpt_status wptStatus;
14384
14385
14386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14387
14388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 -------------------------------------------------------------------------*/
14391 if ( NULL == pEventData )
14392 {
14393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 WDI_ASSERT(0);
14396 return WDI_STATUS_E_FAILURE;
14397 }
14398
14399 wpalMutexAcquire(&pWDICtx->wptMutex);
14400
14401
14402 gWDIInitialized = eWLAN_PAL_FALSE;
14403 /*! TO DO: stop the data services */
14404 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14405 {
14406 /*Stop the STA Table !UT- check this logic again
14407 It is safer to do it here than on the response - because a stop is imminent*/
14408 WDI_STATableStop(pWDICtx);
14409
14410 /* Stop Transport Driver, DXE */
14411 WDTS_Stop(pWDICtx);
14412 }
14413
14414 /*Clear all pending request*/
14415 WDI_ClearPendingRequests(pWDICtx);
14416 /* Close Data transport*/
14417 /* FTM mode does not open Data Path */
14418 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14419 {
14420 WDTS_Close(pWDICtx);
14421 }
14422 /*Close the STA Table !UT- check this logic again*/
14423 WDI_STATableClose(pWDICtx);
14424 /*close the PAL */
14425 wptStatus = wpalClose(pWDICtx->pPALContext);
14426 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14427 {
14428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14429 "Failed to wpal Close %d", wptStatus);
14430 WDI_ASSERT(0);
14431 }
14432
14433 /*Transition back to init state*/
14434 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14435
14436 wpalMutexRelease(&pWDICtx->wptMutex);
14437
14438 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440
14441
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014443}/*WDI_ProcessShutdownReq*/
14444
14445/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014447========================================================================*/
14448
14449/**
14450 @brief Process Start Response function (called when a response
14451 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014452
14453 @param pWDICtx: pointer to the WLAN DAL context
14454 pEventData: pointer to the event information structure
14455
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 @see
14457 @return Result of the function call
14458*/
14459WDI_Status
14460WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014461(
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 WDI_ControlBlockType* pWDICtx,
14463 WDI_EventInfoType* pEventData
14464)
14465{
14466 WDI_StartRspParamsType wdiRspParams;
14467 WDI_StartRspCb wdiStartRspCb = NULL;
14468
14469 tHalMacStartRspParams* startRspParams;
14470
14471#ifndef HAL_SELF_STA_PER_BSS
14472 WDI_AddStaParams wdiAddSTAParam = {0};
14473#endif
14474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14475
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 -------------------------------------------------------------------------*/
14480 if (( NULL == pEventData ) ||
14481 ( NULL == pEventData->pEventData) ||
14482 ( NULL == wdiStartRspCb ))
14483 {
14484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 }
14489
14490 /*-------------------------------------------------------------------------
14491 Extract response and send it to UMAC
14492 -------------------------------------------------------------------------*/
14493 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14494 {
14495 // not enough data was received
14496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14497 "Invalid response length in Start Resp Expect %x Rcvd %x",
14498 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 }
14502
14503 /*-------------------------------------------------------------------------
14504 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 -------------------------------------------------------------------------*/
14507 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14508
14509 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14510 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14511 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14512 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14513 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14514 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14515 wdiRspParams.wlanReportedVersion.major =
14516 startRspParams->wcnssWlanVersion.major;
14517 wdiRspParams.wlanReportedVersion.minor =
14518 startRspParams->wcnssWlanVersion.minor;
14519 wdiRspParams.wlanReportedVersion.version =
14520 startRspParams->wcnssWlanVersion.version;
14521 wdiRspParams.wlanReportedVersion.revision =
14522 startRspParams->wcnssWlanVersion.revision;
14523 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14524 startRspParams->wcnssCrmVersionString,
14525 sizeof(wdiRspParams.wcnssSoftwareVersion));
14526 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14527 startRspParams->wcnssWlanVersionString,
14528 sizeof(wdiRspParams.wcnssHardwareVersion));
14529 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14530
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014531 /*Save the HAL Version*/
14532 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14533
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 wpalMutexAcquire(&pWDICtx->wptMutex);
14535 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14536 {
14537 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14538
14539 /*Cache the start response for further use*/
14540 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 sizeof(pWDICtx->wdiCachedStartRspParams));
14543
14544 }
14545 else
14546 {
14547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14548 "Failed to start device with status %s(%d)",
14549 WDI_getHALStatusMsgString(startRspParams->status),
14550 startRspParams->status);
14551
14552 /*Set the expected state transition to stopped - because the start has
14553 failed*/
14554 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14555
14556 wpalMutexRelease(&pWDICtx->wptMutex);
14557
14558 /*Notify UMAC*/
14559 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014560
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14562
14563 /*Although the response is an error - it was processed by our function
14564 so as far as the caller is concerned this is a succesful reponse processing*/
14565 return WDI_STATUS_SUCCESS;
14566 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014567
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 wpalMutexRelease(&pWDICtx->wptMutex);
14569
14570 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14571 {
14572 /* FTM mode does not need to execute below */
14573 /* Notify UMAC */
14574 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14575 return WDI_STATUS_SUCCESS;
14576 }
14577
14578 /* START the Data transport */
14579 WDTS_startTransport(pWDICtx);
14580
14581 /*Start the STA Table !- check this logic again*/
14582 WDI_STATableStart(pWDICtx);
14583
14584#ifndef HAL_SELF_STA_PER_BSS
14585 /* Store the Self STA Index */
14586 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14587
14588 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14589 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14590 WDI_MAC_ADDR_LEN);
14591
14592 /* At this point add the self-STA */
14593
14594 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14595 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14596 /*! TO DO: wdiAddSTAParam.dpuSig */
14597 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14598 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14599 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14600
14601 //all DPU indices are the same for self STA
14602 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14603 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014604 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14606 WDI_MAC_ADDR_LEN);
14607 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14608 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14609
14610 /* Note: Since we don't get an explicit config STA request for self STA, we
14611 add the self STA upon receiving the Start response message. But the
14612 self STA entry in the table is deleted when WDI gets an explicit delete STA
14613 request */
14614 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14615#endif
14616
14617 /*Notify UMAC*/
14618 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014621}/*WDI_ProcessStartRsp*/
14622
14623
14624/**
14625 @brief Process Stop Response function (called when a response
14626 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014627
14628 @param pWDICtx: pointer to the WLAN DAL context
14629 pEventData: pointer to the event information structure
14630
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 @see
14632 @return Result of the function call
14633*/
14634WDI_Status
14635WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014636(
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 WDI_ControlBlockType* pWDICtx,
14638 WDI_EventInfoType* pEventData
14639)
14640{
14641 WDI_Status wdiStatus;
14642 WDI_StopRspCb wdiStopRspCb = NULL;
14643
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14646
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 -------------------------------------------------------------------------*/
14651 if (( NULL == pEventData ) ||
14652 ( NULL == pEventData->pEventData) ||
14653 ( NULL == wdiStopRspCb ))
14654 {
14655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 }
14660
14661 /*-------------------------------------------------------------------------
14662 Extract response and send it to UMAC
14663 -------------------------------------------------------------------------*/
14664 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14665 {
14666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14667 "Invalid response length in Stop Resp %x %x",
14668 pEventData->uEventDataSize);
14669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-------------------------------------------------------------------------
14674 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14678 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 sizeof(halMacStopRspMsg.stopRspParams));
14680
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014682
14683 wpalMutexAcquire(&pWDICtx->wptMutex);
14684
14685 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 --------------------------------------------------------------------------*/
14688 if ( WDI_STATUS_SUCCESS != wdiStatus )
14689 {
14690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14691 "Failed to stop the device with status %s (%d)",
14692 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14693 halMacStopRspMsg.stopRspParams.status);
14694
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14696
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014700
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14702
14703 /*Transition now as WDI may get preempted imediately after it sends
14704 up the Stop Response and it will not get to process the state transition
14705 from Main Rsp function*/
14706 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14707 wpalMutexRelease(&pWDICtx->wptMutex);
14708
14709 /*! TO DO: - STOP the Data transport */
14710
14711 /*Notify UMAC*/
14712 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14713
Jeff Johnsone7245742012-09-05 17:12:55 -070014714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014715}/*WDI_ProcessStopRsp*/
14716
14717/**
14718 @brief Process Close Rsp function (called when a response
14719 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014720
14721 @param pWDICtx: pointer to the WLAN DAL context
14722 pEventData: pointer to the event information structure
14723
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 @see
14725 @return Result of the function call
14726*/
14727WDI_Status
14728WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014729(
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 WDI_ControlBlockType* pWDICtx,
14731 WDI_EventInfoType* pEventData
14732)
14733{
14734 /*There is no close response comming from HAL - function just kept for
14735 simmetry */
14736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014738}/*WDI_ProcessCloseRsp*/
14739
14740
14741/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014743============================================================================*/
14744
14745/**
14746 @brief Process Init Scan Rsp function (called when a response
14747 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014748
14749 @param pWDICtx: pointer to the WLAN DAL context
14750 pEventData: pointer to the event information structure
14751
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 @see
14753 @return Result of the function call
14754*/
14755WDI_Status
14756WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014757(
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 WDI_ControlBlockType* pWDICtx,
14759 WDI_EventInfoType* pEventData
14760)
14761{
14762 WDI_Status wdiStatus;
14763 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014765 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14767
14768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 -------------------------------------------------------------------------*/
14771 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14772 ( NULL == pEventData->pEventData))
14773 {
14774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 }
14779
14780 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14781 if( NULL == wdiInitScanRspCb)
14782 {
14783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014784 "%s: call back function is NULL", __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 /*-------------------------------------------------------------------------
14790 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14794 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 sizeof(halInitScanRspMsg.initScanRspParams));
14796
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014798
14799 if ( pWDICtx->bInBmps )
14800 {
14801 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014802 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14803 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14805 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14806 WDI_ASSERT(0);
14807 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 }
14809
14810 /*Notify UMAC*/
14811 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14812
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014814}/*WDI_ProcessInitScanRsp*/
14815
14816
14817/**
14818 @brief Process Start Scan Rsp function (called when a response
14819 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014820
14821 @param pWDICtx: pointer to the WLAN DAL context
14822 pEventData: pointer to the event information structure
14823
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 @see
14825 @return Result of the function call
14826*/
14827WDI_Status
14828WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014829(
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 WDI_ControlBlockType* pWDICtx,
14831 WDI_EventInfoType* pEventData
14832)
14833{
14834 WDI_StartScanRspParamsType wdiStartScanParams;
14835 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014836
14837 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14839
14840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 -------------------------------------------------------------------------*/
14843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14844 ( NULL == pEventData->pEventData))
14845 {
14846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 }
14851
14852 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14853 if( NULL == wdiStartScanRspCb)
14854 {
14855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014856 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 }
14860
14861 /*-------------------------------------------------------------------------
14862 Extract response and send it to UMAC
14863 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14865 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 sizeof(halStartScanRspMsg.startScanRspParams));
14867
14868 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14869 halStartScanRspMsg.startScanRspParams.status);
14870#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014873 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 halStartScanRspMsg.startScanRspParams.startTSF,
14875 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014876#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014877
14878 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14879 {
14880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14881 "Start scan failed with status %s (%d)",
14882 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14883 halStartScanRspMsg.startScanRspParams.status);
14884 /* send the status to UMAC, don't return from here*/
14885 }
14886
14887 /*Notify UMAC*/
14888 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14889
Jeff Johnsone7245742012-09-05 17:12:55 -070014890 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014891
14892}/*WDI_ProcessStartScanRsp*/
14893
14894
14895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014898
14899 @param pWDICtx: pointer to the WLAN DAL context
14900 pEventData: pointer to the event information structure
14901
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 @see
14903 @return Result of the function call
14904*/
14905WDI_Status
14906WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014907(
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 WDI_ControlBlockType* pWDICtx,
14909 WDI_EventInfoType* pEventData
14910)
14911{
14912 WDI_Status wdiStatus;
14913 tHalEndScanRspMsg halEndScanRspMsg;
14914 WDI_EndScanRspCb wdiEndScanRspCb;
14915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14916
14917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 -------------------------------------------------------------------------*/
14920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14921 ( NULL == pEventData->pEventData))
14922 {
14923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 }
14928
14929 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14930
14931 /*-------------------------------------------------------------------------
14932 Extract response and send it to UMAC
14933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14935 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 sizeof(halEndScanRspMsg.endScanRspParams));
14937
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014939
14940 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14941 {
14942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14943 "End Scan failed with status %s (%d )",
14944 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14945 halEndScanRspMsg.endScanRspParams.status);
14946 /* send the status to UMAC, don't return from here*/
14947 }
14948
14949 /*Notify UMAC*/
14950 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14951
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014953}/*WDI_ProcessEndScanRsp*/
14954
14955
14956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014957 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014959
14960 @param pWDICtx: pointer to the WLAN DAL context
14961 pEventData: pointer to the event information structure
14962
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 @see
14964 @return Result of the function call
14965*/
14966WDI_Status
14967WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014968(
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 WDI_ControlBlockType* pWDICtx,
14970 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014971)
Jeff Johnson295189b2012-06-20 16:38:30 -070014972{
14973 WDI_Status wdiStatus;
14974 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014975
14976 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14978
14979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 -------------------------------------------------------------------------*/
14982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14983 ( NULL == pEventData->pEventData))
14984 {
14985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 }
14990
14991 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14992
14993 /*-------------------------------------------------------------------------
14994 Extract response and send it to UMAC
14995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14997 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14999
Jeff Johnsone7245742012-09-05 17:12:55 -070015000 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015001
15002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 halFinishScanRspMsg.finishScanRspParams.status);
15005
15006 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15007 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15008 {
15009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15010 "Finish Scan failed with status %s (%d)",
15011 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15012 halFinishScanRspMsg.finishScanRspParams.status);
15013 /* send the status to UMAC, don't return from here*/
15014 }
15015
15016 /*Notify UMAC*/
15017 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15018
Jeff Johnsone7245742012-09-05 17:12:55 -070015019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015020}/*WDI_ProcessFinishScanRsp*/
15021
15022/**
15023 @brief Process Join Response function (called when a response
15024 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015025
15026 @param pWDICtx: pointer to the WLAN DAL context
15027 pEventData: pointer to the event information structure
15028
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 @see
15030 @return Result of the function call
15031*/
15032WDI_Status
15033WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015034(
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 WDI_ControlBlockType* pWDICtx,
15036 WDI_EventInfoType* pEventData
15037)
15038{
15039 WDI_Status wdiStatus;
15040 WDI_JoinRspCb wdiJoinRspCb;
15041 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015042
15043 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15045
15046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 -------------------------------------------------------------------------*/
15049 if (( NULL == pWDICtx ) ||
15050 ( NULL == pWDICtx->pfncRspCB ) ||
15051 ( NULL == pEventData ) ||
15052 ( NULL == pEventData->pEventData))
15053 {
15054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 }
15059
15060 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15061
15062 /*-------------------------------------------------------------------------
15063 Extract response and send it to UMAC
15064 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15066 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 sizeof(halJoinRspMsg.joinRspParams));
15068
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015070
15071 wpalMutexAcquire(&pWDICtx->wptMutex);
15072
15073 /*-----------------------------------------------------------------------
15074 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15079 {
15080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15082 "association no longer in progress %d - mysterious HAL response",
15083 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015084
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 }
15089
15090 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15091
15092 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015093 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 -----------------------------------------------------------------------*/
15095 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15096 {
15097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15098 "Join only allowed in Joining state - failure state is %d "
15099 "strange HAL response", pBSSSes->wdiAssocState);
15100
Jeff Johnsone7245742012-09-05 17:12:55 -070015101 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15102
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015105 }
15106
15107
15108 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 -----------------------------------------------------------------------*/
15111 if ( WDI_STATUS_SUCCESS != wdiStatus )
15112 {
15113 /*Association was failed by HAL - remove session*/
15114 WDI_DeleteSession(pWDICtx, pBSSSes);
15115
15116 /*Association no longer in progress */
15117 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15118
15119 /*Association no longer in progress - prepare pending assoc for processing*/
15120 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015121
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 }
15123 else
15124 {
15125 /*Transition to state Joining - this may be redundant as we are supposed
15126 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 }
15129
15130 wpalMutexRelease(&pWDICtx->wptMutex);
15131
15132 /*Notify UMAC*/
15133 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15134
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015136}/*WDI_ProcessJoinRsp*/
15137
15138
15139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015142
15143 @param pWDICtx: pointer to the WLAN DAL context
15144 pEventData: pointer to the event information structure
15145
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 @see
15147 @return Result of the function call
15148*/
15149WDI_Status
15150WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015151(
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 WDI_ControlBlockType* pWDICtx,
15153 WDI_EventInfoType* pEventData
15154)
15155{
15156 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15157 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015158 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 WDI_BSSSessionType* pBSSSes = NULL;
15160
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15163 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015164
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15166
15167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 -------------------------------------------------------------------------*/
15170 if (( NULL == pEventData ) ||
15171 ( NULL == pEventData->pEventData))
15172 {
15173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 }
15178
15179 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15180
15181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015184 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15185 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 sizeof(halConfigBssRspMsg.configBssRspParams));
15187
15188 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15189 halConfigBssRspMsg.configBssRspParams.status);
15190 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15191 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15194 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015195
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015197
15198 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
15201 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015203
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15209 #endif
15210 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15211 halConfigBssRspMsg.configBssRspParams.staMac,
15212 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015213
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 wpalMutexAcquire(&pWDICtx->wptMutex);
15215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15219 wdiConfigBSSParams.macBSSID,
15220 &pBSSSes);
15221
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 /*-----------------------------------------------------------------------
15223 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 -----------------------------------------------------------------------*/
15226 if ( NULL == pBSSSes )
15227 {
15228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15229 "Association sequence for this BSS does not yet exist "
15230 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015231
15232 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15233
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015237
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 /*Save data for this BSS*/
15239 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15240 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15251 pBSSSes->bcastStaIdx =
15252 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015253
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015255
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 /*-------------------------------------------------------------------------
15257 Add Peer STA
15258 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15261 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015262
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 wdiAddSTAParam.ucHTCapable =
15267 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15268 wdiAddSTAParam.ucStaType =
15269 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15270
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15273 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015275
15276 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15277 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15278 WDI_MAC_ADDR_LEN);
15279
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015293
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15295 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15298 /*-------------------------------------------------------------------------
15299 Add Broadcast STA only in AP mode
15300 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015302 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 {
15304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15305 "Add BCAST STA to table for index: %d",
15306 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015307
15308 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015310
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15312 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15313 }
15314 wpalMutexRelease(&pWDICtx->wptMutex);
15315 }
15316 else
15317 {
15318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15319 "Config BSS RSP failed with status : %s(%d)",
15320 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015321 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 halConfigBssRspMsg.configBssRspParams.status);
15323
Jeff Johnsone7245742012-09-05 17:12:55 -070015324
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 /*Association was failed by HAL - remove session*/
15326 WDI_DeleteSession(pWDICtx, pBSSSes);
15327
15328 /*Association no longer in progress */
15329 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15330
15331 /*Association no longer in progress - prepare pending assoc for processing*/
15332 WDI_DequeueAssocRequest(pWDICtx);
15333
15334 }
15335
15336 /*Notify UMAC*/
15337 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15338
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015340}/*WDI_ProcessConfigBSSRsp*/
15341
15342
15343/**
15344 @brief Process Del BSS Response function (called when a response
15345 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015346
15347 @param pWDICtx: pointer to the WLAN DAL context
15348 pEventData: pointer to the event information structure
15349
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 @see
15351 @return Result of the function call
15352*/
15353WDI_Status
15354WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015355(
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 WDI_ControlBlockType* pWDICtx,
15357 WDI_EventInfoType* pEventData
15358)
15359{
15360 WDI_DelBSSRspParamsType wdiDelBSSParams;
15361 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 WDI_BSSSessionType* pBSSSes = NULL;
15364
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15367
15368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 -------------------------------------------------------------------------*/
15371 if (( NULL == pEventData ) ||
15372 ( NULL == pEventData->pEventData))
15373 {
15374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 }
15379
15380 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15381
15382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15386 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 sizeof(halDelBssRspMsg.deleteBssRspParams));
15388
15389
15390 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015392
15393 wpalMutexAcquire(&pWDICtx->wptMutex);
15394
15395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15399 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15400 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015401
15402 /*-----------------------------------------------------------------------
15403 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 -----------------------------------------------------------------------*/
15406 if ( NULL == pBSSSes )
15407 {
15408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15409 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015410 "association no longer in progress - mysterious HAL response");
15411
15412 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15413
15414 wpalMutexRelease(&pWDICtx->wptMutex);
15415 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015417
15418 /*Extract BSSID for the response to UMAC*/
15419 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15420 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15421
15422 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15423
15424 /*-----------------------------------------------------------------------
15425 The current session will be deleted
15426 -----------------------------------------------------------------------*/
15427 WDI_DeleteSession(pWDICtx, pBSSSes);
15428
15429
15430 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15431 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015433 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015434 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015435
15436 /* Delete the STA's in this BSS */
15437 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15438
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 wpalMutexRelease(&pWDICtx->wptMutex);
15440
15441 /*Notify UMAC*/
15442 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15443
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015445}/*WDI_ProcessDelBSSRsp*/
15446
15447/**
15448 @brief Process Post Assoc Rsp function (called when a response
15449 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015450
15451 @param pWDICtx: pointer to the WLAN DAL context
15452 pEventData: pointer to the event information structure
15453
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 @see
15455 @return Result of the function call
15456*/
15457WDI_Status
15458WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015459(
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 WDI_ControlBlockType* pWDICtx,
15461 WDI_EventInfoType* pEventData
15462)
15463{
15464 WDI_PostAssocRspParamsType wdiPostAssocParams;
15465 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015466 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015468 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15470
15471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 -------------------------------------------------------------------------*/
15474 if (( NULL == pEventData ) ||
15475 ( NULL == pEventData->pEventData))
15476 {
15477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 }
15482
15483 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15484
15485 /*-------------------------------------------------------------------------
15486 Extract response and send it to UMAC
15487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15489 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015490 sizeof(halPostAssocRspMsg.postAssocRspParams));
15491
15492 /*Extract the Post Assoc STA Params */
15493
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15500
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 wdiPostAssocParams.wdiStatus =
15502 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015503
15504 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15505 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15507 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_MAC_ADDR_LEN);
15509
15510 /* Extract Post Assoc BSS Params */
15511
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15513 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15514 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015515
15516 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15517 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15520 .macSTA, WDI_MAC_ADDR_LEN);
15521
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15524
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15527
15528 wdiPostAssocParams.bssParams.ucBSSIdx =
15529 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15530
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15533
15534 wpalMutexAcquire(&pWDICtx->wptMutex);
15535
15536 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542
15543 /*-----------------------------------------------------------------------
15544 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 -----------------------------------------------------------------------*/
15547 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15550 {
15551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15552 "Association sequence for this BSS does not yet exist or "
15553 "association no longer in progress - mysterious HAL response");
15554
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15556
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 }
15560
15561 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 -----------------------------------------------------------------------*/
15564 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15565 {
15566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15567 "Post Assoc not allowed before JOIN - failing request "
15568 "strange HAL response");
15569
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15571
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 }
15575
15576 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 -----------------------------------------------------------------------*/
15579 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15580 {
15581 /*Association was failed by HAL - remove session*/
15582 WDI_DeleteSession(pWDICtx, pBSSSes);
15583 }
15584 else
15585 {
15586 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015587 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015588
15589 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015590 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015592 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15598
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15601 }
15602
15603 /*Association no longer in progress */
15604 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15605
15606 /*Association no longer in progress - prepare pending assoc for processing*/
15607 WDI_DequeueAssocRequest(pWDICtx);
15608
15609 wpalMutexRelease(&pWDICtx->wptMutex);
15610
15611 /*Notify UMAC*/
15612 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15613
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015615}/*WDI_ProcessPostAssocRsp*/
15616
15617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015620
15621 @param pWDICtx: pointer to the WLAN DAL context
15622 pEventData: pointer to the event information structure
15623
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 @see
15625 @return Result of the function call
15626*/
15627WDI_Status
15628WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015629(
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 WDI_ControlBlockType* pWDICtx,
15631 WDI_EventInfoType* pEventData
15632)
15633{
15634 WDI_DelSTARspParamsType wdiDelSTARsp;
15635 WDI_DelSTARspCb wdiDelSTARspCb;
15636 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15639
15640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 -------------------------------------------------------------------------*/
15643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15644 ( NULL == pEventData->pEventData))
15645 {
15646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 }
15651
15652 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15653
15654 /*-------------------------------------------------------------------------
15655 Extract response and send it to UMAC
15656 -------------------------------------------------------------------------*/
15657 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 sizeof(halDelStaRspMsg.delStaRspParams));
15660
15661 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015662 wdiDelSTARsp.wdiStatus =
15663 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015664
15665 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15666
15667 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15668 if(staType == WDI_STA_ENTRY_SELF)
15669 {
15670 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15671
15672 /* At this point add the self-STA */
15673
15674 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15675 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15676 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15677
15678#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15679#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15680
15681 //all DPU indices are the same for self STA
15682 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15683 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15684 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15685 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15686 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15687 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015688
15689 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 }
15691 else
15692 {
15693 //Delete the station in the table
15694 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15695 }
15696
15697 /*Notify UMAC*/
15698 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15699
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015701}/*WDI_ProcessDelSTARsp*/
15702
15703
15704/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015706==========================================================================*/
15707
15708/**
15709 @brief Process Set BSS Key Rsp function (called when a response
15710 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015711
15712 @param pWDICtx: pointer to the WLAN DAL context
15713 pEventData: pointer to the event information structure
15714
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 @see
15716 @return Result of the function call
15717*/
15718WDI_Status
15719WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015720(
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 WDI_ControlBlockType* pWDICtx,
15722 WDI_EventInfoType* pEventData
15723)
15724{
15725 WDI_Status wdiStatus;
15726 eHalStatus halStatus;
15727 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15729
15730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 -------------------------------------------------------------------------*/
15733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15734 ( NULL == pEventData->pEventData))
15735 {
15736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 }
15741
15742 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15743
15744 /*-------------------------------------------------------------------------
15745 Extract response and send it to UMAC
15746 -------------------------------------------------------------------------*/
15747 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015749
15750 if ( eHAL_STATUS_SUCCESS != halStatus )
15751 {
15752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15753 "Set BSS Key failed with status %s (%d)",
15754 WDI_getHALStatusMsgString(halStatus),
15755 halStatus);
15756 /* send the status to UMAC, don't return from here*/
15757 }
15758
15759 /*Notify UMAC*/
15760 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15761
Jeff Johnsone7245742012-09-05 17:12:55 -070015762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015763}/*WDI_ProcessSetBssKeyRsp*/
15764
15765/**
15766 @brief Process Remove BSS Key Rsp function (called when a response
15767 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015768
15769 @param pWDICtx: pointer to the WLAN DAL context
15770 pEventData: pointer to the event information structure
15771
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 @see
15773 @return Result of the function call
15774*/
15775WDI_Status
15776WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015777(
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 WDI_ControlBlockType* pWDICtx,
15779 WDI_EventInfoType* pEventData
15780)
15781{
15782 WDI_Status wdiStatus;
15783 eHalStatus halStatus;
15784 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15786
15787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 -------------------------------------------------------------------------*/
15790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15791 ( NULL == pEventData->pEventData))
15792 {
15793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 }
15798
15799 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15800
15801 /*-------------------------------------------------------------------------
15802 Extract response and send it to UMAC
15803 -------------------------------------------------------------------------*/
15804 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015806
15807 if ( eHAL_STATUS_SUCCESS != halStatus )
15808 {
15809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15810 "Remove BSS Key failed with status %s (%d )",
15811 WDI_getHALStatusMsgString(halStatus),
15812 halStatus);
15813 /* send the status to UMAC, don't return from here*/
15814 }
15815
15816 /*Notify UMAC*/
15817 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15818
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015820}/*WDI_ProcessSetBssKeyRsp*/
15821
15822
15823/**
15824 @brief Process Set STA Key Rsp function (called when a response
15825 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015826
15827 @param pWDICtx: pointer to the WLAN DAL context
15828 pEventData: pointer to the event information structure
15829
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 @see
15831 @return Result of the function call
15832*/
15833WDI_Status
15834WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015835(
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 WDI_ControlBlockType* pWDICtx,
15837 WDI_EventInfoType* pEventData
15838)
15839{
15840 WDI_Status wdiStatus;
15841 eHalStatus halStatus;
15842 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15844
15845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 -------------------------------------------------------------------------*/
15848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15849 ( NULL == pEventData->pEventData))
15850 {
15851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 }
15856
15857 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15858
15859 /*-------------------------------------------------------------------------
15860 Extract response and send it to UMAC
15861 -------------------------------------------------------------------------*/
15862 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015864
15865 if ( eHAL_STATUS_SUCCESS != halStatus )
15866 {
15867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15868 "Set STA Key failed with status %s (%d)",
15869 WDI_getHALStatusMsgString(halStatus),
15870 halStatus);
15871 /* send the status to UMAC, don't return from here*/
15872 }
15873
15874 /*Notify UMAC*/
15875 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15876
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015878}/*WDI_ProcessSetSTAKeyRsp*/
15879
15880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015883
15884 @param pWDICtx: pointer to the WLAN DAL context
15885 pEventData: pointer to the event information structure
15886
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 @see
15888 @return Result of the function call
15889*/
15890WDI_Status
15891WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015892(
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 WDI_ControlBlockType* pWDICtx,
15894 WDI_EventInfoType* pEventData
15895)
15896{
15897 WDI_Status wdiStatus;
15898 eHalStatus halStatus;
15899 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15901
15902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 -------------------------------------------------------------------------*/
15905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15906 ( NULL == pEventData->pEventData))
15907 {
15908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 }
15913
15914 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15915
15916 /*-------------------------------------------------------------------------
15917 Extract response and send it to UMAC
15918 -------------------------------------------------------------------------*/
15919 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015921
15922 if ( eHAL_STATUS_SUCCESS != halStatus )
15923 {
15924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15925 "Remove STA Key failed with status %s (%d)",
15926 WDI_getHALStatusMsgString(halStatus),
15927 halStatus);
15928 /* send the status to UMAC, don't return from here*/
15929 }
15930
15931 /*Notify UMAC*/
15932 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15933
Jeff Johnsone7245742012-09-05 17:12:55 -070015934 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015935}/*WDI_ProcessRemoveStaKeyRsp*/
15936
15937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015940
15941 @param pWDICtx: pointer to the WLAN DAL context
15942 pEventData: pointer to the event information structure
15943
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 @see
15945 @return Result of the function call
15946*/
15947WDI_Status
15948WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015949(
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 WDI_ControlBlockType* pWDICtx,
15951 WDI_EventInfoType* pEventData
15952)
15953{
15954 WDI_Status wdiStatus;
15955 eHalStatus halStatus;
15956 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15958
15959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 -------------------------------------------------------------------------*/
15962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15963 ( NULL == pEventData->pEventData))
15964 {
15965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 }
15970
15971 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15972
15973 /*-------------------------------------------------------------------------
15974 Extract response and send it to UMAC
15975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 wpalMemoryCopy( &halStatus,
15977 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 sizeof(halStatus));
15979
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015981
15982 if ( eHAL_STATUS_SUCCESS != halStatus )
15983 {
15984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15985 "Set STA Key failed with status %s (%d)",
15986 WDI_getHALStatusMsgString(halStatus),
15987 halStatus);
15988 /* send the status to UMAC, don't return from here*/
15989 }
15990
15991 /*Notify UMAC*/
15992 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15993
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015995}/*WDI_ProcessSetSTABcastKeyRsp*/
15996
15997/**
15998 @brief Process Remove STA Bcast Key Rsp function (called when a
15999 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016000
16001 @param pWDICtx: pointer to the WLAN DAL context
16002 pEventData: pointer to the event information structure
16003
Jeff Johnson295189b2012-06-20 16:38:30 -070016004 @see
16005 @return Result of the function call
16006*/
16007WDI_Status
16008WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016009(
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 WDI_ControlBlockType* pWDICtx,
16011 WDI_EventInfoType* pEventData
16012)
16013{
16014 WDI_Status wdiStatus;
16015 eHalStatus halStatus;
16016 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16018
16019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016021 -------------------------------------------------------------------------*/
16022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16023 ( NULL == pEventData->pEventData))
16024 {
16025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 }
16030
16031 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16032
16033 /*-------------------------------------------------------------------------
16034 Extract response and send it to UMAC
16035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 wpalMemoryCopy( &halStatus,
16037 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 sizeof(halStatus));
16039
Jeff Johnsone7245742012-09-05 17:12:55 -070016040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016041
16042 if ( eHAL_STATUS_SUCCESS != halStatus )
16043 {
16044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16045 "Remove STA Key failed with status %s (%d)",
16046 WDI_getHALStatusMsgString(halStatus),
16047 halStatus);
16048 /* send the status to UMAC, don't return from here*/
16049 }
16050
16051 /*Notify UMAC*/
16052 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16053
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016055}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16056
16057
16058/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016060==========================================================================*/
16061
16062/**
16063 @brief Process Add TSpec Rsp function (called when a response
16064 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016065
16066 @param pWDICtx: pointer to the WLAN DAL context
16067 pEventData: pointer to the event information structure
16068
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 @see
16070 @return Result of the function call
16071*/
16072WDI_Status
16073WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016074(
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 WDI_ControlBlockType* pWDICtx,
16076 WDI_EventInfoType* pEventData
16077)
16078{
16079 WDI_Status wdiStatus;
16080 eHalStatus halStatus;
16081 WDI_AddTsRspCb wdiAddTsRspCb;
16082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16083
16084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 -------------------------------------------------------------------------*/
16087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16088 ( NULL == pEventData->pEventData))
16089 {
16090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 }
16095
16096 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16097
16098 /*-------------------------------------------------------------------------
16099 Extract response and send it to UMAC
16100 -------------------------------------------------------------------------*/
16101 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016103
16104 /*Notify UMAC*/
16105 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16106
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016108}/*WDI_ProcessAddTSpecRsp*/
16109
16110
16111/**
16112 @brief Process Del TSpec Rsp function (called when a response
16113 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016114
16115 @param pWDICtx: pointer to the WLAN DAL context
16116 pEventData: pointer to the event information structure
16117
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 @see
16119 @return Result of the function call
16120*/
16121WDI_Status
16122WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016123(
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 WDI_ControlBlockType* pWDICtx,
16125 WDI_EventInfoType* pEventData
16126)
16127{
16128 WDI_Status wdiStatus;
16129 eHalStatus halStatus;
16130 WDI_DelTsRspCb wdiDelTsRspCb;
16131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16132
16133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 -------------------------------------------------------------------------*/
16136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16137 ( NULL == pEventData->pEventData))
16138 {
16139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 }
16144
16145 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16146
16147 /*-------------------------------------------------------------------------
16148 Extract response and send it to UMAC
16149 -------------------------------------------------------------------------*/
16150 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016152
16153 /*Notify UMAC*/
16154 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16155
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016157}/*WDI_ProcessDelTSpecRsp*/
16158
16159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016162
16163 @param pWDICtx: pointer to the WLAN DAL context
16164 pEventData: pointer to the event information structure
16165
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 @see
16167 @return Result of the function call
16168*/
16169WDI_Status
16170WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016171(
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 WDI_ControlBlockType* pWDICtx,
16173 WDI_EventInfoType* pEventData
16174)
16175{
16176 WDI_Status wdiStatus;
16177 eHalStatus halStatus;
16178 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16180
16181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 -------------------------------------------------------------------------*/
16184 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16185 ( NULL == pEventData->pEventData))
16186 {
16187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 }
16192
16193 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16194
16195 /*-------------------------------------------------------------------------
16196 Extract response and send it to UMAC
16197 -------------------------------------------------------------------------*/
16198 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016200
16201 /*Notify UMAC*/
16202 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16203
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016205}/*WDI_ProcessUpdateEDCAParamsRsp*/
16206
16207
16208/**
16209 @brief Process Add BA Rsp function (called when a response
16210 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016211
16212 @param pWDICtx: pointer to the WLAN DAL context
16213 pEventData: pointer to the event information structure
16214
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 @see
16216 @return Result of the function call
16217*/
16218WDI_Status
16219WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016220(
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 WDI_ControlBlockType* pWDICtx,
16222 WDI_EventInfoType* pEventData
16223)
16224{
16225 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16226
16227 tAddBASessionRspParams halBASessionRsp;
16228 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16229
Jeff Johnsone7245742012-09-05 17:12:55 -070016230
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16232
16233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 -------------------------------------------------------------------------*/
16236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16237 ( NULL == pEventData->pEventData))
16238 {
16239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 }
16244
16245 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16246
16247 /*-------------------------------------------------------------------------
16248 Extract response and send it to UMAC
16249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 wpalMemoryCopy( &halBASessionRsp,
16251 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 sizeof(halBASessionRsp));
16253
16254 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16255
Jeff Johnson43971f52012-07-17 12:26:56 -070016256 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 {
16258 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16259 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16260 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16261 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16262 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16263 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16264 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16265 }
16266
16267 /*Notify UMAC*/
16268 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16269
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016271}/*WDI_ProcessAddSessionBARsp*/
16272
16273
16274/**
16275 @brief Process Del BA Rsp function (called when a response
16276 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016277
16278 @param pWDICtx: pointer to the WLAN DAL context
16279 pEventData: pointer to the event information structure
16280
Jeff Johnson295189b2012-06-20 16:38:30 -070016281 @see
16282 @return Result of the function call
16283*/
16284WDI_Status
16285WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016286(
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 WDI_ControlBlockType* pWDICtx,
16288 WDI_EventInfoType* pEventData
16289)
16290{
16291 WDI_Status wdiStatus;
16292 eHalStatus halStatus;
16293 WDI_DelBARspCb wdiDelBARspCb;
16294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16295
16296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 -------------------------------------------------------------------------*/
16299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16300 ( NULL == pEventData->pEventData))
16301 {
16302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 }
16307
16308 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16309
16310 /*-------------------------------------------------------------------------
16311 Extract response and send it to UMAC
16312 -------------------------------------------------------------------------*/
16313 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016315
16316 if ( eHAL_STATUS_SUCCESS == halStatus )
16317 {
16318 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16319 }
16320
16321 /*Notify UMAC*/
16322 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16323
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016325}/*WDI_ProcessDelBARsp*/
16326
16327#ifdef FEATURE_WLAN_CCX
16328/**
16329 @brief Process TSM Stats Rsp function (called when a response
16330 is being received over the bus from HAL)
16331
16332 @param pWDICtx: pointer to the WLAN DAL context
16333 pEventData: pointer to the event information structure
16334
16335 @see
16336 @return Result of the function call
16337*/
16338WDI_Status
16339WDI_ProcessTsmStatsRsp
16340(
16341 WDI_ControlBlockType* pWDICtx,
16342 WDI_EventInfoType* pEventData
16343)
16344{
16345 WDI_TsmRspCb wdiTsmStatsRspCb;
16346 tTsmStatsRspMsg halTsmStatsRspMsg;
16347 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16349
16350 /*-------------------------------------------------------------------------
16351 Sanity check
16352 -------------------------------------------------------------------------*/
16353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16354 ( NULL == pEventData->pEventData))
16355 {
16356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 WDI_ASSERT(0);
16359 return WDI_STATUS_E_FAILURE;
16360 }
16361
16362 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16363
16364 /*-------------------------------------------------------------------------
16365 Unpack HAL Response Message - the header was already extracted by the
16366 main Response Handling procedure
16367 -------------------------------------------------------------------------*/
16368 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16369 pEventData->pEventData,
16370 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16371
16372 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16373 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16374 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16375 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16376 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16377 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16378 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16379 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16380 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16381 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16382 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16383 halTsmStatsRspMsg.tsmStatsRspParams.status);
16384
16385 /*Notify UMAC*/
16386 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16387
16388 return WDI_STATUS_SUCCESS;
16389}/*WDI_ProcessTsmStatsRsp*/
16390
16391#endif
16392
16393
16394
16395/**
16396 @brief Process Flush AC Rsp function (called when a response
16397 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016398
16399 @param pWDICtx: pointer to the WLAN DAL context
16400 pEventData: pointer to the event information structure
16401
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 @see
16403 @return Result of the function call
16404*/
16405WDI_Status
16406WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016407(
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 WDI_ControlBlockType* pWDICtx,
16409 WDI_EventInfoType* pEventData
16410)
16411{
16412 WDI_Status wdiStatus;
16413 eHalStatus halStatus;
16414 WDI_FlushAcRspCb wdiFlushAcRspCb;
16415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16416
16417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 -------------------------------------------------------------------------*/
16420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16421 ( NULL == pEventData->pEventData))
16422 {
16423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 }
16428
16429 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16430
16431 /*-------------------------------------------------------------------------
16432 Extract response and send it to UMAC
16433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 wpalMemoryCopy( &halStatus,
16435 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 sizeof(halStatus));
16437
Jeff Johnsone7245742012-09-05 17:12:55 -070016438 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016439
16440 /*Notify UMAC*/
16441 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16442
Jeff Johnsone7245742012-09-05 17:12:55 -070016443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016444}/*WDI_ProcessFlushAcRsp*/
16445
16446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016449
16450 @param pWDICtx: pointer to the WLAN DAL context
16451 pEventData: pointer to the event information structure
16452
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 @see
16454 @return Result of the function call
16455*/
16456WDI_Status
16457WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016458(
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 WDI_ControlBlockType* pWDICtx,
16460 WDI_EventInfoType* pEventData
16461)
16462{
16463 WDI_Status wdiStatus;
16464 eHalStatus halStatus;
16465 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16467
16468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 -------------------------------------------------------------------------*/
16471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16472 ( NULL == pEventData->pEventData))
16473 {
16474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016478 }
16479
16480 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16481
16482 /*-------------------------------------------------------------------------
16483 Extract response and send it to UMAC
16484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 wpalMemoryCopy( &halStatus,
16486 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 sizeof(halStatus));
16488
Jeff Johnsone7245742012-09-05 17:12:55 -070016489 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016490
16491 /*Notify UMAC*/
16492 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16493
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016495}/*WDI_ProcessBtAmpEventRsp*/
16496
16497
16498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016500 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016501
16502 @param pWDICtx: pointer to the WLAN DAL context
16503 pEventData: pointer to the event information structure
16504
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 @see
16506 @return Result of the function call
16507*/
16508WDI_Status
16509WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016510(
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ControlBlockType* pWDICtx,
16512 WDI_EventInfoType* pEventData
16513)
16514{
16515 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16516 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16517 tAddStaSelfRspMsg halAddStaSelfRsp;
16518 WDI_AddStaParams wdiAddSTAParam = {0};
16519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16520
16521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 -------------------------------------------------------------------------*/
16524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16525 ( NULL == pEventData->pEventData))
16526 {
16527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 }
16532
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16535
16536 /*-------------------------------------------------------------------------
16537 Extract response and send it to UMAC
16538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16540 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016541 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16542
16543
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 wdiAddSTASelfParams.wdiStatus =
16545 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016546
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16553
16554 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16555 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16556 WDI_MAC_ADDR_LEN);
16557
16558
16559#ifdef HAL_SELF_STA_PER_BSS
16560
16561 /* At this point add the self-STA */
16562
16563 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16564 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16565 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16566
16567 //all DPU indices are the same for self STA
16568
16569 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16572 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16573 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16574 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16575 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16576
16577 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16578 WDI_MAC_ADDR_LEN);
16579
16580 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16581 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16582
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16585 {
16586 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16587 }
16588#endif
16589
16590 /*Notify UMAC*/
16591 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016594}/*WDI_ProcessAddSTASelfRsp*/
16595
16596
16597
16598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016601
16602 @param pWDICtx: pointer to the WLAN DAL context
16603 pEventData: pointer to the event information structure
16604
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 @see
16606 @return Result of the function call
16607*/
16608WDI_Status
16609WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016610(
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WDI_ControlBlockType* pWDICtx,
16612 WDI_EventInfoType* pEventData
16613)
16614{
16615 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16616 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16617 tDelStaSelfRspParams delStaSelfRspParams;
16618 wpt_uint8 ucStaIdx;
16619
16620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16621
16622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 -------------------------------------------------------------------------*/
16625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16626 ( NULL == pEventData->pEventData))
16627 {
16628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 }
16633
16634 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16635
16636 /*-------------------------------------------------------------------------
16637 Extract response and send it to UMAC
16638 -------------------------------------------------------------------------*/
16639
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 (wpt_uint8*)pEventData->pEventData,
16642 sizeof(tDelStaSelfRspParams));
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 wdiDelStaSelfRspParams.wdiStatus =
16645 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016646
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16649 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16650 {
16651 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016652 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 delStaSelfRspParams.selfMacAddr,
16654 &ucStaIdx);
16655 if(WDI_STATUS_E_FAILURE == wdiStatus)
16656 {
16657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016658 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 }
16662 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16663 }
16664
16665 /*Notify UMAC*/
16666 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16667
16668 return WDI_STATUS_SUCCESS;
16669}
16670
Jeff Johnsone7245742012-09-05 17:12:55 -070016671#ifdef FEATURE_OEM_DATA_SUPPORT
16672/**
16673 @brief Start Oem Data Rsp function (called when a
16674 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016675
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 @param pWDICtx: pointer to the WLAN DAL context
16677 pEventData: pointer to the event information structure
16678
16679 @see
16680 @return Result of the function call
16681*/
16682#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16683
16684WDI_Status
16685WDI_ProcessStartOemDataRsp
16686(
16687 WDI_ControlBlockType* pWDICtx,
16688 WDI_EventInfoType* pEventData
16689)
16690{
16691 WDI_oemDataRspCb wdiOemDataRspCb;
16692 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16693 tStartOemDataRspParams* halStartOemDataRspParams;
16694
16695 /*-------------------------------------------------------------------------
16696 Sanity check
16697 -------------------------------------------------------------------------*/
16698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16699 ( NULL == pEventData->pEventData))
16700 {
16701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016702 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 WDI_ASSERT(0);
16704 return WDI_STATUS_E_FAILURE;
16705 }
16706
16707 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16708
16709 /*-------------------------------------------------------------------------
16710 Extract response and send it to UMAC
16711 -------------------------------------------------------------------------*/
16712 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16713
16714
16715 //It is the responsibility of the application code to check for failure
16716 //conditions!
16717
16718 //Allocate memory for WDI OEM DATA RSP structure
16719 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16720
16721 if(NULL == wdiOemDataRspParams)
16722 {
16723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16724 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16725 pWDICtx, pEventData, pEventData->pEventData);
16726 WDI_ASSERT(0);
16727 return WDI_STATUS_E_FAILURE;
16728 }
16729
16730 /* Populate WDI structure members */
16731 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16732
16733 /*Notify UMAC*/
16734 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16735
16736 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16737 wpalMemoryFree(wdiOemDataRspParams);
16738
16739 return WDI_STATUS_SUCCESS;
16740}/*WDI_PrcoessStartOemDataRsp*/
16741#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016742
16743/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016744 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016745===========================================================================*/
16746
16747/**
16748 @brief Process Channel Switch Rsp function (called when a response
16749 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016750
16751 @param pWDICtx: pointer to the WLAN DAL context
16752 pEventData: pointer to the event information structure
16753
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 @see
16755 @return Result of the function call
16756*/
16757WDI_Status
16758WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016759(
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 WDI_ControlBlockType* pWDICtx,
16761 WDI_EventInfoType* pEventData
16762)
16763{
16764 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16765 WDI_SwitchChRspCb wdiChSwitchRspCb;
16766 tSwitchChannelRspParams halSwitchChannelRsp;
16767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16768
16769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 -------------------------------------------------------------------------*/
16772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16773 ( NULL == pEventData->pEventData))
16774 {
16775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 }
16780
16781 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16782
16783 /*-------------------------------------------------------------------------
16784 Extract response and send it to UMAC
16785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 (wpt_uint8*)pEventData->pEventData,
16788 sizeof(halSwitchChannelRsp));
16789
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 wdiSwitchChRsp.wdiStatus =
16791 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16793
16794#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016796#endif
16797
16798 /*Notify UMAC*/
16799 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16800
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016802}/*WDI_ProcessChannelSwitchRsp*/
16803
16804
16805/**
16806 @brief Process Config STA Rsp function (called when a response
16807 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016808
16809 @param pWDICtx: pointer to the WLAN DAL context
16810 pEventData: pointer to the event information structure
16811
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 @see
16813 @return Result of the function call
16814*/
16815WDI_Status
16816WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016817(
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 WDI_ControlBlockType* pWDICtx,
16819 WDI_EventInfoType* pEventData
16820)
16821{
16822 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16823 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16824 WDI_AddStaParams wdiAddSTAParam;
16825
16826 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016827 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016828
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16831
16832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 -------------------------------------------------------------------------*/
16835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16836 ( NULL == pEventData->pEventData))
16837 {
16838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 }
16843
16844 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16845
16846 /*-------------------------------------------------------------------------
16847 Extract response and send it to UMAC
16848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16850 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 sizeof(halConfigStaRsp.configStaRspParams));
16852
16853
16854 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16855 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16856 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16857 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16858 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16859
16860 /* MAC Address of STA - take from cache as it does not come back in the
16861 response*/
16862 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016865
16866 wdiCfgSTAParams.wdiStatus =
16867 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016868
16869 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16870 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16871 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16872
16873 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16874 {
16875 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16876 {
16877 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16880 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016881
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 wdiAddSTAParam.ucHTCapable =
16886 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16887 wdiAddSTAParam.ucStaType =
16888 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070016889 wdiAddSTAParam.ucRmfEnabled =
16890 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016891
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16894 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016896
16897 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16898 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16899 WDI_MAC_ADDR_LEN);
16900
16901 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16902 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16903 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016904
16905 if ( NULL == pBSSSes )
16906 {
16907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16908 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016909
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 }
16913
16914 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016924
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16926 }
16927 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16928 {
16929 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16930
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016935 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016942 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 halConfigStaRsp.configStaRspParams.ucUcastSig;
16945 }
16946 }
16947
16948 /*Notify UMAC*/
16949 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16950
Jeff Johnsone7245742012-09-05 17:12:55 -070016951 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016952}/*WDI_ProcessConfigStaRsp*/
16953
16954
16955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016956 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016958
16959 @param pWDICtx: pointer to the WLAN DAL context
16960 pEventData: pointer to the event information structure
16961
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 @see
16963 @return Result of the function call
16964*/
16965WDI_Status
16966WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016967(
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 WDI_ControlBlockType* pWDICtx,
16969 WDI_EventInfoType* pEventData
16970)
16971{
16972 WDI_Status wdiStatus;
16973 eHalStatus halStatus;
16974 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16975
16976 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016977 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16979
16980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016982 -------------------------------------------------------------------------*/
16983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16984 ( NULL == pEventData->pEventData))
16985 {
16986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 }
16991
16992 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16993
16994 wpalMutexAcquire(&pWDICtx->wptMutex);
16995
16996 /*If the link is being transitioned to idle - the BSS is to be deleted
16997 - this type of ending a session is possible when UMAC has failed an
16998 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016999 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17001 {
17002 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017003 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17006 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17007 &pBSSSes);
17008
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 /*-----------------------------------------------------------------------
17010 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 -----------------------------------------------------------------------*/
17013 if ( NULL == pBSSSes )
17014 {
17015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17016 "Set link response received outside association session");
17017 }
17018 else
17019 {
17020 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17021 will be del BSS coming after this to stop the beaconing & cleaning up the
17022 sessions*/
17023 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17024 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17025 {
17026 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 -----------------------------------------------------------------------*/
17029 WDI_DeleteSession(pWDICtx, pBSSSes);
17030
17031 /*-----------------------------------------------------------------------
17032 Check to see if this association is in progress - if so disable the
17033 flag as this has ended
17034 -----------------------------------------------------------------------*/
17035 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 /*Association no longer in progress */
17038 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17039 /*Association no longer in progress - prepare pending assoc for processing*/
17040 WDI_DequeueAssocRequest(pWDICtx);
17041 }
17042 }
17043 }
17044 }
17045 /* If the link state has been set to POST ASSOC, reset the "association in
17046 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17049 {
17050 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17051 WDI_DequeueAssocRequest(pWDICtx);
17052 }
17053
17054 wpalMutexRelease(&pWDICtx->wptMutex);
17055
17056 /*-------------------------------------------------------------------------
17057 Extract response and send it to UMAC
17058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 wpalMemoryCopy( &halStatus,
17060 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 sizeof(halStatus));
17062
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017064
17065 /*Notify UMAC*/
17066 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17067
Jeff Johnsone7245742012-09-05 17:12:55 -070017068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017069}/*WDI_ProcessSetLinkStateRsp*/
17070
17071/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017072 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017074
17075 @param pWDICtx: pointer to the WLAN DAL context
17076 pEventData: pointer to the event information structure
17077
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 @see
17079 @return Result of the function call
17080*/
17081WDI_Status
17082WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017083(
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 WDI_ControlBlockType* pWDICtx,
17085 WDI_EventInfoType* pEventData
17086)
17087{
17088 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17089 WDI_GetStatsRspCb wdiGetStatsRspCb;
17090 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017091
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17093
17094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017096 -------------------------------------------------------------------------*/
17097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17098 ( NULL == pEventData->pEventData))
17099 {
17100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 }
17105
17106 /*-------------------------------------------------------------------------
17107 Extract response and send it to UMAC
17108 -------------------------------------------------------------------------*/
17109 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17110
17111 /*allocate the stats response buffer */
17112 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17113 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17114 + sizeof(WDI_GetStatsRspParamsType));
17115
17116 if(NULL == wdiGetStatsRsp)
17117 {
17118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17119 "Failed to allocate memory in Get Stats Response %x %x %x ",
17120 pWDICtx, pEventData, pEventData->pEventData);
17121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 }
17124
17125 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17126
17127 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17128 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17129 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17130 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17131 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17132 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17133
17134 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17135 wpalMemoryCopy(wdiGetStatsRsp + 1,
17136 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17137 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17138
17139 /*Notify UMAC*/
17140 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17141
17142 wpalMemoryFree(wdiGetStatsRsp);
17143
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017145}/*WDI_ProcessGetStatsRsp*/
17146
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017147#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17148/**
17149 @brief Process Get Roam Rssi Rsp function (called when a response is
17150 being received over the bus from HAL)
17151
17152 @param pWDICtx: pointer to the WLAN DAL context
17153 pEventData: pointer to the event information structure
17154
17155 @see
17156 @return Result of the function call
17157*/
17158WDI_Status
17159WDI_ProcessGetRoamRssiRsp
17160(
17161 WDI_ControlBlockType* pWDICtx,
17162 WDI_EventInfoType* pEventData
17163)
17164{
17165 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17166 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17167 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17169
17170 /*-------------------------------------------------------------------------
17171 Sanity check
17172 -------------------------------------------------------------------------*/
17173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17174 ( NULL == pEventData->pEventData))
17175 {
17176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17177 "%s: Invalid parameters", __func__);
17178 WDI_ASSERT(0);
17179 return WDI_STATUS_E_FAILURE;
17180 }
17181
17182 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17183 if(NULL == wdiGetRoamRssiRspCb)
17184 {
17185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17186 "%s: call back function is NULL", __func__);
17187 WDI_ASSERT(0);
17188 return WDI_STATUS_E_FAILURE;
17189 }
17190
17191 /*-------------------------------------------------------------------------
17192 Extract response and send it to UMAC
17193 -------------------------------------------------------------------------*/
17194 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17195 pEventData->pEventData,
17196 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17197
17198 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17199 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17200 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17201
17202 /*Notify UMAC*/
17203 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17204
17205 return WDI_STATUS_SUCCESS;
17206}/*WDI_ProcessGetRoamRssiRsp*/
17207#endif
17208
Jeff Johnson295189b2012-06-20 16:38:30 -070017209
17210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017213
17214 @param pWDICtx: pointer to the WLAN DAL context
17215 pEventData: pointer to the event information structure
17216
Jeff Johnson295189b2012-06-20 16:38:30 -070017217 @see
17218 @return Result of the function call
17219*/
17220WDI_Status
17221WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017222(
Jeff Johnson295189b2012-06-20 16:38:30 -070017223 WDI_ControlBlockType* pWDICtx,
17224 WDI_EventInfoType* pEventData
17225)
17226{
17227 WDI_Status wdiStatus;
17228 eHalStatus halStatus;
17229 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17231
17232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 -------------------------------------------------------------------------*/
17235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17236 ( NULL == pEventData->pEventData))
17237 {
17238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 }
17243
17244 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17245
17246 /*-------------------------------------------------------------------------
17247 Extract response and send it to UMAC
17248 -------------------------------------------------------------------------*/
17249 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017251
17252 /*Notify UMAC*/
17253 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17254
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017256}/*WDI_ProcessUpdateCfgRsp*/
17257
17258
17259
17260/**
17261 @brief Process Add BA Rsp function (called when a response
17262 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017263
17264 @param pWDICtx: pointer to the WLAN DAL context
17265 pEventData: pointer to the event information structure
17266
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 @see
17268 @return Result of the function call
17269*/
17270WDI_Status
17271WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017272(
Jeff Johnson295189b2012-06-20 16:38:30 -070017273 WDI_ControlBlockType* pWDICtx,
17274 WDI_EventInfoType* pEventData
17275)
17276{
17277 WDI_AddBARspCb wdiAddBARspCb;
17278
17279 tAddBARspParams halAddBARsp;
17280 WDI_AddBARspinfoType wdiAddBARsp;
17281
17282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17283
17284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 -------------------------------------------------------------------------*/
17287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17288 ( NULL == pEventData->pEventData))
17289 {
17290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 }
17295
17296 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17297
17298 /*-------------------------------------------------------------------------
17299 Extract response and send it to UMAC
17300 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017301 wpalMemoryCopy( &halAddBARsp,
17302 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 sizeof(halAddBARsp));
17304
17305 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17306
Jeff Johnson43971f52012-07-17 12:26:56 -070017307 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 {
17309 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17310 }
17311
17312 /*Notify UMAC*/
17313 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17314
Jeff Johnsone7245742012-09-05 17:12:55 -070017315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017316}/*WDI_ProcessAddSessionBARsp*/
17317
17318/**
17319 @brief Process Add BA Rsp function (called when a response
17320 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017321
17322 @param pWDICtx: pointer to the WLAN DAL context
17323 pEventData: pointer to the event information structure
17324
Jeff Johnson295189b2012-06-20 16:38:30 -070017325 @see
17326 @return Result of the function call
17327*/
17328WDI_Status
17329WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017330(
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 WDI_ControlBlockType* pWDICtx,
17332 WDI_EventInfoType* pEventData
17333)
17334{
17335 WDI_TriggerBARspCb wdiTriggerBARspCb;
17336
17337 tTriggerBARspParams* halTriggerBARsp;
17338 tTriggerBaRspCandidate* halBaCandidate;
17339 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17340 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17341 wpt_uint16 index;
17342 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017343 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17345
17346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 -------------------------------------------------------------------------*/
17349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17350 ( NULL == pEventData->pEventData))
17351 {
17352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 }
17357
17358 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17359
17360 /*-------------------------------------------------------------------------
17361 Extract response and send it to UMAC
17362 -------------------------------------------------------------------------*/
17363 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17364
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017365 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17366
17367 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17368 {
17369 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017372
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017373 if(NULL == wdiTriggerBARsp)
17374 {
17375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17376 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17377 pWDICtx, pEventData, pEventData->pEventData);
17378 WDI_ASSERT(0);
17379 return WDI_STATUS_E_FAILURE;
17380 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017381
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017382 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17383
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17387
17388 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17389 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17390
17391 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17392 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017393 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17395 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17396 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017399 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17401 }
17402 wdiTriggerBARspCandidate++;
17403 halBaCandidate++;
17404 }
17405 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017406 else
17407 {
17408 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17409
17410 if(NULL == wdiTriggerBARsp)
17411 {
17412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17413 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17414 pWDICtx, pEventData, pEventData->pEventData);
17415 WDI_ASSERT(0);
17416 return WDI_STATUS_E_FAILURE;
17417 }
17418
17419 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17420
17421 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017422
17423 /*Notify UMAC*/
17424 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17425
17426 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017427 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017428}/*WDI_ProcessAddSessionBARsp*/
17429
17430/**
17431 @brief Process Update Beacon Params Rsp function (called when a response
17432 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017433
17434 @param pWDICtx: pointer to the WLAN DAL context
17435 pEventData: pointer to the event information structure
17436
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 @see
17438 @return Result of the function call
17439*/
17440WDI_Status
17441WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017442(
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 WDI_ControlBlockType* pWDICtx,
17444 WDI_EventInfoType* pEventData
17445)
17446{
17447 WDI_Status wdiStatus;
17448 eHalStatus halStatus;
17449 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17451
17452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 -------------------------------------------------------------------------*/
17455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17456 ( NULL == pEventData->pEventData))
17457 {
17458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017462 }
17463
17464 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17465
17466 /*-------------------------------------------------------------------------
17467 Extract response and send it to UMAC
17468 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 wpalMemoryCopy( &halStatus,
17470 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 sizeof(halStatus));
17472
Jeff Johnsone7245742012-09-05 17:12:55 -070017473 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017474
17475 /*Notify UMAC*/
17476 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17477
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017479}/*WDI_ProcessUpdateBeaconParamsRsp*/
17480
17481/**
17482 @brief Process Send Beacon template Rsp function (called when a response
17483 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017484
17485 @param pWDICtx: pointer to the WLAN DAL context
17486 pEventData: pointer to the event information structure
17487
Jeff Johnson295189b2012-06-20 16:38:30 -070017488 @see
17489 @return Result of the function call
17490*/
17491WDI_Status
17492WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017493(
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 WDI_ControlBlockType* pWDICtx,
17495 WDI_EventInfoType* pEventData
17496)
17497{
17498 WDI_Status wdiStatus;
17499 eHalStatus halStatus;
17500 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17502
17503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017505 -------------------------------------------------------------------------*/
17506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17507 ( NULL == pEventData->pEventData))
17508 {
17509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 }
17514
17515 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17516
17517 /*-------------------------------------------------------------------------
17518 Extract response and send it to UMAC
17519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 wpalMemoryCopy( &halStatus,
17521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 sizeof(halStatus));
17523
Jeff Johnsone7245742012-09-05 17:12:55 -070017524 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017525
17526 /*Notify UMAC*/
17527 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17528
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017530}/*WDI_ProcessSendBeaconParamsRsp*/
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532
Jeff Johnson295189b2012-06-20 16:38:30 -070017533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017536
17537 @param pWDICtx: pointer to the WLAN DAL context
17538 pEventData: pointer to the event information structure
17539
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 @see
17541 @return Result of the function call
17542*/
17543WDI_Status
17544WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017545(
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 WDI_ControlBlockType* pWDICtx,
17547 WDI_EventInfoType* pEventData
17548)
17549{
17550 WDI_Status wdiStatus;
17551 eHalStatus halStatus;
17552 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17554
17555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017557 -------------------------------------------------------------------------*/
17558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17559 ( NULL == pEventData->pEventData))
17560 {
17561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 }
17566
17567 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17568
17569 /*-------------------------------------------------------------------------
17570 Extract response and send it to UMAC
17571 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 wpalMemoryCopy( &halStatus,
17573 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017574 sizeof(halStatus));
17575
Jeff Johnsone7245742012-09-05 17:12:55 -070017576 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017577
17578 /*Notify UMAC*/
17579 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17580
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017582}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17583
17584 /**
17585 @brief Process Set Max Tx Power Rsp function (called when a response
17586 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017587
17588 @param pWDICtx: pointer to the WLAN DAL context
17589 pEventData: pointer to the event information structure
17590
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 @see
17592 @return Result of the function call
17593*/
17594WDI_Status
17595WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017596(
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 WDI_ControlBlockType* pWDICtx,
17598 WDI_EventInfoType* pEventData
17599)
17600{
17601 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017602
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017604
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17607
17608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 -------------------------------------------------------------------------*/
17611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17612 ( NULL == pEventData->pEventData))
17613 {
17614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 }
17619
17620 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17621
17622 /*-------------------------------------------------------------------------
17623 Extract response and send it to UMAC
17624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017625 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17626 pEventData->pEventData,
17627 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017628
17629 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17630 {
17631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17632 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017633 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 }
17636
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017639 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017640
17641 /*Notify UMAC*/
17642 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17643
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017645}
17646
schangd82195a2013-03-13 18:41:24 -070017647 /**
17648 @brief Process Set Tx Power Rsp function (called when a response
17649 is being received over the bus from HAL)
17650
17651 @param pWDICtx: pointer to the WLAN DAL context
17652 pEventData: pointer to the event information structure
17653
17654 @see
17655 @return Result of the function call
17656*/
17657WDI_Status
17658WDI_ProcessSetTxPowerRsp
17659(
17660 WDI_ControlBlockType* pWDICtx,
17661 WDI_EventInfoType* pEventData
17662)
17663{
17664 tSetTxPwrRspMsg halTxpowerrsp;
17665 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17666 WDA_SetTxPowerRspCb wdiReqStatusCb;
17667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17668
17669 /*-------------------------------------------------------------------------
17670 Sanity check
17671 -------------------------------------------------------------------------*/
17672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17673 ( NULL == pEventData->pEventData))
17674 {
17675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17676 "%s: Invalid parameters", __func__);
17677 WDI_ASSERT(0);
17678 return WDI_STATUS_E_FAILURE;
17679 }
17680
17681 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17682
17683 /*-------------------------------------------------------------------------
17684 Extract response and send it to UMAC
17685 -------------------------------------------------------------------------*/
17686 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17687 pEventData->pEventData,
17688 sizeof(halTxpowerrsp.setTxPwrRspParams));
17689
17690 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17691 {
17692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17693 "Error status returned in Set Tx Power Response ");
17694 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17695 return WDI_STATUS_E_FAILURE;
17696 }
17697
17698 wdiSetTxPowerRspMsg.wdiStatus =
17699 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17700
17701 /*Notify UMAC*/
17702 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17703
17704 return WDI_STATUS_SUCCESS;
17705}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017706#ifdef FEATURE_WLAN_TDLS
17707/**
17708 @brief Process TDLS Link Establish Rsp function (called
17709 when a response is being received over the bus from HAL)
17710
17711 @param pWDICtx: pointer to the WLAN DAL context
17712 pEventData: pointer to the event information structure
17713
17714 @see
17715 @return Result of the function call
17716*/
17717WDI_Status
17718WDI_ProcessLinkEstablishReqRsp
17719(
17720 WDI_ControlBlockType* pWDICtx,
17721 WDI_EventInfoType* pEventData
17722)
17723{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017724 eHalStatus halStatus;
17725 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017726 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
17727 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
17728
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17730
17731 /*-------------------------------------------------------------------------
17732 Sanity check
17733 -------------------------------------------------------------------------*/
17734 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17735 ( NULL == pEventData->pEventData))
17736 {
17737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17738 "%s: Invalid parameters", __func__);
17739 WDI_ASSERT(0);
17740 return WDI_STATUS_E_FAILURE;
17741 }
17742
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017743 /*-------------------------------------------------------------------------
17744 Extract indication and send it to UMAC
17745 -------------------------------------------------------------------------*/
17746 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
17747 pEventData->pEventData,
17748 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
17749
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017750 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17751
17752 /*-------------------------------------------------------------------------
17753 Extract response and send it to UMAC
17754 -------------------------------------------------------------------------*/
17755 wpalMemoryCopy( &halStatus,
17756 pEventData->pEventData,
17757 sizeof(halStatus));
17758
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017759 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17760 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017761
17762 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017763 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017764
17765 return WDI_STATUS_SUCCESS;
17766}/*WDI_ProcessLinkEstablishReqRsp*/
17767#endif
schangd82195a2013-03-13 18:41:24 -070017768
Jeff Johnson295189b2012-06-20 16:38:30 -070017769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017772
17773 @param pWDICtx: pointer to the WLAN DAL context
17774 pEventData: pointer to the event information structure
17775
Jeff Johnson295189b2012-06-20 16:38:30 -070017776 @see
17777 @return Result of the function call
17778*/
17779WDI_Status
17780WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017781(
Jeff Johnson295189b2012-06-20 16:38:30 -070017782 WDI_ControlBlockType* pWDICtx,
17783 WDI_EventInfoType* pEventData
17784)
17785{
17786 WDI_Status wdiStatus;
17787 eHalStatus halStatus;
17788 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17790
17791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 -------------------------------------------------------------------------*/
17794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17795 ( NULL == pEventData->pEventData))
17796 {
17797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 }
17802
17803 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17804
17805 /*-------------------------------------------------------------------------
17806 Extract response and send it to UMAC
17807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017808 wpalMemoryCopy( &halStatus,
17809 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 sizeof(halStatus));
17811
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017813
17814 /*Notify UMAC*/
17815 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17816
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017818}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017820 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017822
17823 @param pWDICtx: pointer to the WLAN DAL context
17824 pEventData: pointer to the event information structure
17825
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 @see
17827 @return Result of the function call
17828*/
17829WDI_Status
17830WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017831(
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 WDI_ControlBlockType* pWDICtx,
17833 WDI_EventInfoType* pEventData
17834)
17835{
17836 WDI_Status wdiStatus;
17837 eHalStatus halStatus;
17838 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017839 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17841
17842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 -------------------------------------------------------------------------*/
17845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17846 ( NULL == pEventData->pEventData))
17847 {
17848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 }
17853
17854 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17855
17856 /*-------------------------------------------------------------------------
17857 Extract response and send it to UMAC
17858 -------------------------------------------------------------------------*/
17859 halStatus = *((eHalStatus*)pEventData->pEventData);
17860
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017862
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017863 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17864 * Other module states are taken care by PMC.
17865 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17866 */
17867 if (wdiStatus != WDI_STATUS_SUCCESS) {
17868
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17870 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17871 halStatus);
17872 /* Call Back is not required as we are putting the DXE in FULL
17873 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017874 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17875
17876 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17878 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17879 WDI_ASSERT(0);
17880 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017881 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 /*Notify UMAC*/
17883 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17884
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017886}/*WDI_ProcessEnterImpsRsp*/
17887
17888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017891
17892 @param pWDICtx: pointer to the WLAN DAL context
17893 pEventData: pointer to the event information structure
17894
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 @see
17896 @return Result of the function call
17897*/
17898WDI_Status
17899WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017900(
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 WDI_ControlBlockType* pWDICtx,
17902 WDI_EventInfoType* pEventData
17903)
17904{
17905 WDI_Status wdiStatus;
17906 eHalStatus halStatus;
17907 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017908 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17910
17911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 -------------------------------------------------------------------------*/
17914 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17915 ( NULL == pEventData->pEventData))
17916 {
17917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 }
17922
17923 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17924
17925 /*-------------------------------------------------------------------------
17926 Extract response and send it to UMAC
17927 -------------------------------------------------------------------------*/
17928 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017929 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017930
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053017931 if (halStatus != eHAL_STATUS_SUCCESS)
17932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17933 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
17934
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017936 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17937 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17938 {
17939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17940 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17941 WDI_ASSERT(0);
17942 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 /*Notify UMAC*/
17944 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17945
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947}/*WDI_ProcessExitImpsRsp*/
17948
17949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017952
17953 @param pWDICtx: pointer to the WLAN DAL context
17954 pEventData: pointer to the event information structure
17955
Jeff Johnson295189b2012-06-20 16:38:30 -070017956 @see
17957 @return Result of the function call
17958*/
17959WDI_Status
17960WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017961(
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 WDI_ControlBlockType* pWDICtx,
17963 WDI_EventInfoType* pEventData
17964)
17965{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017966 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17967 tHalEnterBmpsRspParams halEnterBmpsRsp;
17968 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17969 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017970 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17972
17973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 -------------------------------------------------------------------------*/
17976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17977 ( NULL == pEventData->pEventData))
17978 {
17979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017983 }
17984
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017986 Extract response and send it to UMAC
17987 -------------------------------------------------------------------------*/
17988 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17989 {
17990 wpalMemoryCopy( &halEnterBmpsRsp,
17991 pEventData->pEventData,
17992 sizeof(halEnterBmpsRsp));
17993
17994 //Used to print debug message
17995 halStatus = halEnterBmpsRsp.status;
17996 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17997 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17998 }
17999 else
18000 {
18001 halStatus = *((eHalStatus*)pEventData->pEventData);
18002 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18003 }
18004
18005 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018006
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018007 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18008 * Other module states are taken care by PMC.
18009 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18010 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018011 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18012 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018013
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018015 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18016 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018017 /* Call Back is not required as we are putting the DXE in FULL
18018 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018019 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18020 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18021 {
18022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18023 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18024 WDI_ASSERT(0);
18025 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018026 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018027 }
18028
Jeff Johnson295189b2012-06-20 16:38:30 -070018029 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018030 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018031
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018033}/*WDI_ProcessEnterBmpsRsp*/
18034
18035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018038
18039 @param pWDICtx: pointer to the WLAN DAL context
18040 pEventData: pointer to the event information structure
18041
Jeff Johnson295189b2012-06-20 16:38:30 -070018042 @see
18043 @return Result of the function call
18044*/
18045WDI_Status
18046WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018047(
Jeff Johnson295189b2012-06-20 16:38:30 -070018048 WDI_ControlBlockType* pWDICtx,
18049 WDI_EventInfoType* pEventData
18050)
18051{
Jeff Johnson295189b2012-06-20 16:38:30 -070018052 eHalStatus halStatus;
18053 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018054 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018055 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18056 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18058
18059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 -------------------------------------------------------------------------*/
18062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18063 ( NULL == pEventData->pEventData))
18064 {
18065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018069 }
18070
18071 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18072
18073 /*-------------------------------------------------------------------------
18074 Extract response and send it to UMAC
18075 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018076
18077 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18078 {
18079 wpalMemoryCopy( &halExitBmpsRsp,
18080 pEventData->pEventData,
18081 sizeof(halExitBmpsRsp));
18082
18083 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18084 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18085 }
18086 else
18087 {
18088 halStatus = *((eHalStatus*)pEventData->pEventData);
18089 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18090 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018091
18092 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018093 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18094 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18095 {
18096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18097 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18098 WDI_ASSERT(0);
18099 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018100 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18101
18102 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018103 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018104
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018106}/*WDI_ProcessExitBmpsRsp*/
18107
18108/**
18109 @brief Process Enter UAPSD Rsp function (called when a response
18110 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018111
18112 @param pWDICtx: pointer to the WLAN DAL context
18113 pEventData: pointer to the event information structure
18114
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 @see
18116 @return Result of the function call
18117*/
18118WDI_Status
18119WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018120(
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 WDI_ControlBlockType* pWDICtx,
18122 WDI_EventInfoType* pEventData
18123)
18124{
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018126 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018128 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18129
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18131
18132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 -------------------------------------------------------------------------*/
18135 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18136 ( NULL == pEventData->pEventData))
18137 {
18138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 }
18143
18144 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18145
18146 /*-------------------------------------------------------------------------
18147 Extract response and send it to UMAC
18148 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018149 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18150 {
18151 wpalMemoryCopy( &halEnterUapsdRsp,
18152 pEventData->pEventData,
18153 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018154
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018155 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18156 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18157 }
18158 else
18159 {
18160 halStatus = *((eHalStatus*)pEventData->pEventData);
18161 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18162 }
18163
18164 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 {
18166 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18167 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18168 // the traffic to decide when to suspend the trigger frames when there is no traffic
18169 // activity on the trigger enabled ACs
18170 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18171
18172#ifdef WLAN_PERF
18173 // Increment the BD signature to refresh the fast path BD utilization
18174 pWDICtx->uBdSigSerialNum++;
18175#endif
18176 }
18177
18178 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018179 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018180
Jeff Johnsone7245742012-09-05 17:12:55 -070018181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018182}/*WDI_ProcessEnterUapsdRsp*/
18183
18184/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018185 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018186 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018187
18188 @param pWDICtx: pointer to the WLAN DAL context
18189 pEventData: pointer to the event information structure
18190
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 @see
18192 @return Result of the function call
18193*/
18194WDI_Status
18195WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018196(
Jeff Johnson295189b2012-06-20 16:38:30 -070018197 WDI_ControlBlockType* pWDICtx,
18198 WDI_EventInfoType* pEventData
18199)
18200{
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 eHalStatus halStatus;
18202 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018203 tHalExitUapsdRspParams halExitUapsdRsp;
18204 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18206
18207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 -------------------------------------------------------------------------*/
18210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18211 ( NULL == pEventData->pEventData))
18212 {
18213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 }
18218
18219 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18220
18221 /*-------------------------------------------------------------------------
18222 Extract response and send it to UMAC
18223 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018224 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18225 {
18226 wpalMemoryCopy( &halExitUapsdRsp,
18227 pEventData->pEventData,
18228 sizeof(halExitUapsdRsp));
18229
18230 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18231 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18232 }
18233 else
18234 {
18235 halStatus = *((eHalStatus*)pEventData->pEventData);
18236 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18237 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18239 // directly instead of the FW WQ.
18240 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18241
18242#ifdef WLAN_PERF
18243 // Increment the BD signature to refresh the fast path BD utilization
18244 pWDICtx->uBdSigSerialNum++;
18245#endif
18246
18247 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018248 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251}/*WDI_ProcessExitUapsdRsp*/
18252
18253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018254 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018255 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018256
18257 @param pWDICtx: pointer to the WLAN DAL context
18258 pEventData: pointer to the event information structure
18259
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 @see
18261 @return Result of the function call
18262*/
18263WDI_Status
18264WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018265(
Jeff Johnson295189b2012-06-20 16:38:30 -070018266 WDI_ControlBlockType* pWDICtx,
18267 WDI_EventInfoType* pEventData
18268)
18269{
18270 WDI_Status wdiStatus;
18271 eHalStatus halStatus;
18272 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18274
18275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 -------------------------------------------------------------------------*/
18278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18279 ( NULL == pEventData->pEventData))
18280 {
18281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 }
18286
18287 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18288
18289 /*-------------------------------------------------------------------------
18290 Extract response and send it to UMAC
18291 -------------------------------------------------------------------------*/
18292 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018293 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018294
18295 /*Notify UMAC*/
18296 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18297
Jeff Johnsone7245742012-09-05 17:12:55 -070018298 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018299}/*WDI_ProcessSetUapsdAcParamsRsp*/
18300
18301/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018302 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018303 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018304
18305 @param pWDICtx: pointer to the WLAN DAL context
18306 pEventData: pointer to the event information structure
18307
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 @see
18309 @return Result of the function call
18310*/
18311WDI_Status
18312WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018313(
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 WDI_ControlBlockType* pWDICtx,
18315 WDI_EventInfoType* pEventData
18316)
18317{
18318 WDI_Status wdiStatus;
18319 eHalStatus halStatus;
18320 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18322
18323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018325 -------------------------------------------------------------------------*/
18326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18327 ( NULL == pEventData->pEventData))
18328 {
18329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 }
18334
18335 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18336
18337 /*-------------------------------------------------------------------------
18338 Extract response and send it to UMAC
18339 -------------------------------------------------------------------------*/
18340 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018341 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018342
18343 /*Notify UMAC*/
18344 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18345
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347}/*WDI_ProcessUpdateUapsdParamsRsp*/
18348
18349/**
18350 @brief Process Configure RXP filter Rsp function (called when a
18351 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018352
18353 @param pWDICtx: pointer to the WLAN DAL context
18354 pEventData: pointer to the event information structure
18355
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 @see
18357 @return Result of the function call
18358*/
18359WDI_Status
18360WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018361(
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 WDI_ControlBlockType* pWDICtx,
18363 WDI_EventInfoType* pEventData
18364)
18365{
18366 WDI_Status wdiStatus;
18367 eHalStatus halStatus;
18368 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18370
18371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 -------------------------------------------------------------------------*/
18374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18375 ( NULL == pEventData->pEventData))
18376 {
18377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018381 }
18382
18383 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18384
18385 /*-------------------------------------------------------------------------
18386 Extract response and send it to UMAC
18387 -------------------------------------------------------------------------*/
18388 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018390
18391 /*Notify UMAC*/
18392 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18393
Jeff Johnsone7245742012-09-05 17:12:55 -070018394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018395}/*WDI_ProcessConfigureRxpFilterRsp*/
18396
18397/**
18398 @brief Process Set beacon filter Rsp function (called when a
18399 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018400
18401 @param pWDICtx: pointer to the WLAN DAL context
18402 pEventData: pointer to the event information structure
18403
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 @see
18405 @return Result of the function call
18406*/
18407WDI_Status
18408WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018409(
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 WDI_ControlBlockType* pWDICtx,
18411 WDI_EventInfoType* pEventData
18412)
18413{
18414 WDI_Status wdiStatus;
18415 eHalStatus halStatus;
18416 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18418
18419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 -------------------------------------------------------------------------*/
18422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18423 ( NULL == pEventData->pEventData))
18424 {
18425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 }
18430
18431 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18432
18433 /*-------------------------------------------------------------------------
18434 Extract response and send it to UMAC
18435 -------------------------------------------------------------------------*/
18436 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018437 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018438
18439 /*Notify UMAC*/
18440 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18441
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018443}/*WDI_ProcessSetBeaconFilterRsp*/
18444
18445/**
18446 @brief Process remove beacon filter Rsp function (called when a
18447 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018448
18449 @param pWDICtx: pointer to the WLAN DAL context
18450 pEventData: pointer to the event information structure
18451
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 @see
18453 @return Result of the function call
18454*/
18455WDI_Status
18456WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018457(
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 WDI_ControlBlockType* pWDICtx,
18459 WDI_EventInfoType* pEventData
18460)
18461{
18462 WDI_Status wdiStatus;
18463 eHalStatus halStatus;
18464 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18466
18467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 -------------------------------------------------------------------------*/
18470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18471 ( NULL == pEventData->pEventData))
18472 {
18473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018477 }
18478
18479 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18480
18481 /*-------------------------------------------------------------------------
18482 Extract response and send it to UMAC
18483 -------------------------------------------------------------------------*/
18484 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018486
18487 /*Notify UMAC*/
18488 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18489
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018491}/*WDI_ProcessRemBeaconFilterRsp*/
18492
18493/**
18494 @brief Process set RSSI thresholds Rsp function (called when a
18495 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018496
18497 @param pWDICtx: pointer to the WLAN DAL context
18498 pEventData: pointer to the event information structure
18499
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 @see
18501 @return Result of the function call
18502*/
18503WDI_Status
18504WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018505(
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 WDI_ControlBlockType* pWDICtx,
18507 WDI_EventInfoType* pEventData
18508)
18509{
18510 WDI_Status wdiStatus;
18511 eHalStatus halStatus;
18512 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18514
18515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 -------------------------------------------------------------------------*/
18518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18519 ( NULL == pEventData->pEventData))
18520 {
18521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 }
18526
18527 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18528
18529 /*-------------------------------------------------------------------------
18530 Extract response and send it to UMAC
18531 -------------------------------------------------------------------------*/
18532 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018534
18535 /*Notify UMAC*/
18536 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18537
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018539}/*WDI_ProcessSetRSSIThresoldsRsp*/
18540
18541/**
18542 @brief Process host offload Rsp function (called when a
18543 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018544
18545 @param pWDICtx: pointer to the WLAN DAL context
18546 pEventData: pointer to the event information structure
18547
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 @see
18549 @return Result of the function call
18550*/
18551WDI_Status
18552WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018553(
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 WDI_ControlBlockType* pWDICtx,
18555 WDI_EventInfoType* pEventData
18556)
18557{
18558 WDI_Status wdiStatus;
18559 eHalStatus halStatus;
18560 WDI_HostOffloadCb wdiHostOffloadCb;
18561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18562
18563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 -------------------------------------------------------------------------*/
18566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18567 ( NULL == pEventData->pEventData))
18568 {
18569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 }
18574
18575 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18576
18577 /*-------------------------------------------------------------------------
18578 Extract response and send it to UMAC
18579 -------------------------------------------------------------------------*/
18580 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018581 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018582
18583 /*Notify UMAC*/
18584 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18585
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018587}/*WDI_ProcessHostOffloadRsp*/
18588
18589/**
18590 @brief Process keep alive Rsp function (called when a
18591 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018592
18593 @param pWDICtx: pointer to the WLAN DAL context
18594 pEventData: pointer to the event information structure
18595
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 @see
18597 @return Result of the function call
18598*/
18599WDI_Status
18600WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018601(
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 WDI_ControlBlockType* pWDICtx,
18603 WDI_EventInfoType* pEventData
18604)
18605{
18606 WDI_Status wdiStatus;
18607 eHalStatus halStatus;
18608 WDI_KeepAliveCb wdiKeepAliveCb;
18609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18611 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18612
18613
18614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 -------------------------------------------------------------------------*/
18617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18618 ( NULL == pEventData->pEventData))
18619 {
18620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 }
18625
Jeff Johnsone7245742012-09-05 17:12:55 -070018626 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18627
Jeff Johnson295189b2012-06-20 16:38:30 -070018628 /*-------------------------------------------------------------------------
18629 Extract response and send it to UMAC
18630 -------------------------------------------------------------------------*/
18631 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018633
18634 /*Notify UMAC*/
18635 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18636
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018638}/*WDI_ProcessKeepAliveRsp*/
18639
18640/**
18641 @brief Process wowl add ptrn Rsp function (called when a
18642 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018643
18644 @param pWDICtx: pointer to the WLAN DAL context
18645 pEventData: pointer to the event information structure
18646
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 @see
18648 @return Result of the function call
18649*/
18650WDI_Status
18651WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018652(
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 WDI_ControlBlockType* pWDICtx,
18654 WDI_EventInfoType* pEventData
18655)
18656{
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 eHalStatus halStatus;
18658 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018659 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18660 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18661
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18663
18664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 -------------------------------------------------------------------------*/
18667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18668 ( NULL == pEventData->pEventData))
18669 {
18670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 }
18675
18676 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18677
18678 /*-------------------------------------------------------------------------
18679 Extract response and send it to UMAC
18680 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018681 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18682 {
18683 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18684 pEventData->pEventData,
18685 sizeof(halAddWowlBcastPtrRsp));
18686
18687 wdiWowlAddBcPtrRsp.wdiStatus =
18688 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18689 }
18690 else
18691 {
18692 halStatus = *((eHalStatus*)pEventData->pEventData);
18693 wdiWowlAddBcPtrRsp.wdiStatus =
18694 WDI_HAL_2_WDI_STATUS(halStatus);
18695 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018696
18697 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018698 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018699
Jeff Johnsone7245742012-09-05 17:12:55 -070018700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018701}/*WDI_ProcessWowlAddBcPtrnRsp*/
18702
18703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018706
18707 @param pWDICtx: pointer to the WLAN DAL context
18708 pEventData: pointer to the event information structure
18709
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 @see
18711 @return Result of the function call
18712*/
18713WDI_Status
18714WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018715(
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 WDI_ControlBlockType* pWDICtx,
18717 WDI_EventInfoType* pEventData
18718)
18719{
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 eHalStatus halStatus;
18721 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018722 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18723 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18725
18726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 -------------------------------------------------------------------------*/
18729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18730 ( NULL == pEventData->pEventData))
18731 {
18732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 }
18737
18738 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18739
18740 /*-------------------------------------------------------------------------
18741 Extract response and send it to UMAC
18742 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018743 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18744 {
18745 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18746 pEventData->pEventData,
18747 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018749 wdiWowlDelBcstPtrRsp.wdiStatus =
18750 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18751 }
18752 else
18753 {
18754 halStatus = *((eHalStatus*)pEventData->pEventData);
18755 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18756 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018758 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018759
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018761}/*WDI_ProcessWowlDelBcPtrnRsp*/
18762
18763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018766
18767 @param pWDICtx: pointer to the WLAN DAL context
18768 pEventData: pointer to the event information structure
18769
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 @see
18771 @return Result of the function call
18772*/
18773WDI_Status
18774WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018775(
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 WDI_ControlBlockType* pWDICtx,
18777 WDI_EventInfoType* pEventData
18778)
18779{
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 eHalStatus halStatus;
18781 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018782 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18783 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18785
18786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 -------------------------------------------------------------------------*/
18789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18790 ( NULL == pEventData->pEventData))
18791 {
18792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 }
18797
18798 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18799
18800 /*-------------------------------------------------------------------------
18801 Extract response and send it to UMAC
18802 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018803 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18804 {
18805 wpalMemoryCopy( &halEnterWowlRspParams,
18806 (wpt_uint8*)pEventData->pEventData,
18807 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018808
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018809 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18810 wdiwowlEnterRsp.status =
18811 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18812 }
18813 else
18814 {
18815 halStatus = *((eHalStatus*)pEventData->pEventData);
18816 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18817 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018819 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018820
Jeff Johnsone7245742012-09-05 17:12:55 -070018821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018822}/*WDI_ProcessWowlEnterRsp*/
18823
18824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018827
18828 @param pWDICtx: pointer to the WLAN DAL context
18829 pEventData: pointer to the event information structure
18830
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 @see
18832 @return Result of the function call
18833*/
18834WDI_Status
18835WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018836(
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 WDI_ControlBlockType* pWDICtx,
18838 WDI_EventInfoType* pEventData
18839)
18840{
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 eHalStatus halStatus;
18842 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018843 tHalExitWowlRspParams halExitWowlRspParams;
18844 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18845
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18847
18848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 -------------------------------------------------------------------------*/
18851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18852 ( NULL == pEventData->pEventData))
18853 {
18854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018858 }
18859
18860 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18861
18862 /*-------------------------------------------------------------------------
18863 Extract response and send it to UMAC
18864 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018865 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18866 {
18867 wpalMemoryCopy( &halExitWowlRspParams,
18868 pEventData->pEventData,
18869 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018870
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018871 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18872 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18873
18874 }
18875 else
18876 {
18877 halStatus = *((eHalStatus*)pEventData->pEventData);
18878 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18879 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018881 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018882
Jeff Johnsone7245742012-09-05 17:12:55 -070018883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018884}/*WDI_ProcessWowlExitRsp*/
18885
18886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018887 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018888 (called when a response is being received over the bus
18889 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018890
18891 @param pWDICtx: pointer to the WLAN DAL context
18892 pEventData: pointer to the event information structure
18893
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 @see
18895 @return Result of the function call
18896*/
18897WDI_Status
18898WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018899(
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 WDI_ControlBlockType* pWDICtx,
18901 WDI_EventInfoType* pEventData
18902)
18903{
18904 WDI_Status wdiStatus;
18905 eHalStatus halStatus;
18906 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18908
18909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 -------------------------------------------------------------------------*/
18912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18913 ( NULL == pEventData->pEventData))
18914 {
18915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 }
18920
18921 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18922
18923 /*-------------------------------------------------------------------------
18924 Extract response and send it to UMAC
18925 -------------------------------------------------------------------------*/
18926 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018928
18929 /*Notify UMAC*/
18930 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18931
Jeff Johnsone7245742012-09-05 17:12:55 -070018932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018933}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18934
18935
18936/**
18937 @brief Process Nv download(called when a response
18938 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018939
18940 @param pWDICtx: pointer to the WLAN DAL context
18941 pEventData: pointer to the event information structure
18942
Jeff Johnson295189b2012-06-20 16:38:30 -070018943 @see
18944 @return Result of the function call
18945*/
18946WDI_Status
18947WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018948(
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 WDI_ControlBlockType* pWDICtx,
18950 WDI_EventInfoType* pEventData
18951)
18952{
18953
18954 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18955 tHalNvImgDownloadRspParams halNvDownloadRsp;
18956 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18957
18958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 -------------------------------------------------------------------------*/
18961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18962 ( NULL == pEventData->pEventData))
18963 {
18964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 }
18969
18970 /*-------------------------------------------------------------------------
18971 Extract response and send it to UMAC
18972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 wpalMemoryCopy( &halNvDownloadRsp,
18974 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 sizeof(halNvDownloadRsp));
18976
18977 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18978
18979 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18981 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 {
18983 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 }
18986 else
18987 {
18988 /*Reset the Nv related global information in WDI context information */
18989 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18990 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18991 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18992 /*call WDA callback function for last fragment */
18993 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18994 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18995 }
18996
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018998}
18999#ifdef WLAN_FEATURE_VOWIFI_11R
19000/**
19001 @brief Process Add TSpec Rsp function (called when a response
19002 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019003
19004 @param pWDICtx: pointer to the WLAN DAL context
19005 pEventData: pointer to the event information structure
19006
Jeff Johnson295189b2012-06-20 16:38:30 -070019007 @see
19008 @return Result of the function call
19009*/
19010WDI_Status
19011WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019012(
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 WDI_ControlBlockType* pWDICtx,
19014 WDI_EventInfoType* pEventData
19015)
19016{
19017 WDI_Status wdiStatus;
19018 tAggrAddTsRspParams aggrAddTsRsp;
19019 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19021
19022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 -------------------------------------------------------------------------*/
19025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19026 ( NULL == pEventData->pEventData))
19027 {
19028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 }
19033
19034 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19035
19036 /*-------------------------------------------------------------------------
19037 Extract response and send it to UMAC
19038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 wpalMemoryCopy( &aggrAddTsRsp,
19040 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 sizeof(aggrAddTsRsp));
19042
19043 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019045
19046 /*Notify UMAC*/
19047 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19048
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019050}/*WDI_ProcessAddTSpecRsp*/
19051#endif /* WLAN_FEATURE_VOWIFI_11R */
19052
19053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019056
19057 @param pWDICtx: pointer to the WLAN DAL context
19058 pEventData: pointer to the event information structure
19059
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 @see
19061 @return Result of the function call
19062*/
19063WDI_Status
19064WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019065(
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 WDI_ControlBlockType* pWDICtx,
19067 WDI_EventInfoType* pEventData
19068)
19069{
19070 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19071 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19072 tHalHostResumeRspParams hostResumeRspMsg;
19073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19074
19075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 -------------------------------------------------------------------------*/
19078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19079 ( NULL == pEventData->pEventData))
19080 {
19081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019085 }
19086
19087 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19088
19089 /*-------------------------------------------------------------------------
19090 Extract response and send it to UMAC
19091 -------------------------------------------------------------------------*/
19092
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019094 (wpt_uint8*)pEventData->pEventData,
19095 sizeof(hostResumeRspMsg));
19096
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 wdiResumeRspParams.wdiStatus =
19098 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019099
19100 /*Notify UMAC*/
19101 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19102
19103 return WDI_STATUS_SUCCESS;
19104}
19105
19106/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019107 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019109
19110 @param pWDICtx: pointer to the WLAN DAL context
19111 pEventData: pointer to the event information structure
19112
Jeff Johnson295189b2012-06-20 16:38:30 -070019113 @see
19114 @return Result of the function call
19115*/
19116WDI_Status
19117WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019118(
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 WDI_ControlBlockType* pWDICtx,
19120 WDI_EventInfoType* pEventData
19121)
19122{
19123 WDI_Status wdiStatus;
19124 eHalStatus halStatus;
19125 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19127
19128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 -------------------------------------------------------------------------*/
19131 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19132 ( NULL == pEventData->pEventData))
19133 {
19134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019139
19140 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019141
19142 /*-------------------------------------------------------------------------
19143 Extract response and send it to UMAC
19144 -------------------------------------------------------------------------*/
19145 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019147
19148 /*Notify UMAC*/
19149 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19150
Jeff Johnsone7245742012-09-05 17:12:55 -070019151 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019152}/*WDI_ProcessSetTxPerTrackingRsp*/
19153
19154/*==========================================================================
19155 Indications from HAL
19156 ==========================================================================*/
19157/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019158 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 indication of this kind is being received over the bus
19160 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019161
19162 @param pWDICtx: pointer to the WLAN DAL context
19163 pEventData: pointer to the event information structure
19164
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 @see
19166 @return Result of the function call
19167*/
19168WDI_Status
19169WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019170(
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 WDI_ControlBlockType* pWDICtx,
19172 WDI_EventInfoType* pEventData
19173)
19174{
19175 WDI_LowLevelIndType wdiInd;
19176 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19178
19179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019181 -------------------------------------------------------------------------*/
19182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19183 ( NULL == pEventData->pEventData))
19184 {
19185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 }
19190
19191 /*-------------------------------------------------------------------------
19192 Extract indication and send it to UMAC
19193 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019194 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19195 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 sizeof(tHalRSSINotification));
19197
19198 /*Fill in the indication parameters*/
19199 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19200 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19201 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19202 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19203 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19204 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19205 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19206 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19207 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19208 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19209 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19210 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19211 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019212 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19213 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019214
ltimariu034f7d62013-01-24 18:54:33 -080019215 if ( pWDICtx->wdiLowLevelIndCB )
19216 {
19217 /*Notify UMAC of indication*/
19218 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19219 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
19221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019222}/*WDI_ProcessLowRSSIInd*/
19223
19224
19225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 an indication of this kind is being received over the
19228 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019229
19230 @param pWDICtx: pointer to the WLAN DAL context
19231 pEventData: pointer to the event information structure
19232
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 @see
19234 @return Result of the function call
19235*/
19236WDI_Status
19237WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019238(
Jeff Johnson295189b2012-06-20 16:38:30 -070019239 WDI_ControlBlockType* pWDICtx,
19240 WDI_EventInfoType* pEventData
19241)
19242{
19243 WDI_Status wdiStatus;
19244 eHalStatus halStatus;
19245 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019246 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19248
19249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019251 -------------------------------------------------------------------------*/
19252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19253 ( NULL == pEventData->pEventData))
19254 {
19255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019259 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019260 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019261 /*-------------------------------------------------------------------------
19262 Extract indication and send it to UMAC
19263 -------------------------------------------------------------------------*/
19264 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19265 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019266 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019267
19268 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019270 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19271 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019272 if ( pWDICtx->wdiLowLevelIndCB )
19273 {
19274 /*Notify UMAC*/
19275 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19276 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019277
19278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019279}/*WDI_ProcessMissedBeaconInd*/
19280
19281
19282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 an indication of this kind is being received over the
19285 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019286
19287 @param pWDICtx: pointer to the WLAN DAL context
19288 pEventData: pointer to the event information structure
19289
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 @see
19291 @return Result of the function call
19292*/
19293WDI_Status
19294WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019295(
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 WDI_ControlBlockType* pWDICtx,
19297 WDI_EventInfoType* pEventData
19298)
19299{
19300 WDI_Status wdiStatus;
19301 eHalStatus halStatus;
19302 WDI_LowLevelIndType wdiInd;
19303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19304
19305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 -------------------------------------------------------------------------*/
19308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19309 ( NULL == pEventData->pEventData))
19310 {
19311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 }
19316
19317 /*-------------------------------------------------------------------------
19318 Extract indication and send it to UMAC
19319 -------------------------------------------------------------------------*/
19320 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19321 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019323
19324 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 /* ! TO DO - fill in from HAL struct:
19327 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19328
ltimariu034f7d62013-01-24 18:54:33 -080019329 if ( pWDICtx->wdiLowLevelIndCB )
19330 {
19331 /*Notify UMAC*/
19332 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19333 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019334
19335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019336}/*WDI_ProcessUnkAddrFrameInd*/
19337
19338
19339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019340 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 indication of this kind is being received over the bus
19342 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_ProcessMicFailureInd
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 tpSirMicFailureInd pHalMicFailureInd;
19359
19360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19361
19362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 -------------------------------------------------------------------------*/
19365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19366 ( NULL == pEventData->pEventData))
19367 {
19368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019373
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19375 /*-------------------------------------------------------------------------
19376 Extract indication and send it to UMAC
19377 -------------------------------------------------------------------------*/
19378
19379 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019380 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19382 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19383 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19384 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19385 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19386 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19387 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19388 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019393 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019394 pHalMicFailureInd->info.keyId;
19395 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19396 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19397 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19398 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019399
19400 if ( pWDICtx->wdiLowLevelIndCB )
19401 {
19402 /*Notify UMAC*/
19403 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19404 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019405
19406 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019407}/*WDI_ProcessMicFailureInd*/
19408
19409
19410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019411 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019412 an indication of this kind is being received over the
19413 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019414
19415 @param pWDICtx: pointer to the WLAN DAL context
19416 pEventData: pointer to the event information structure
19417
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 @see
19419 @return Result of the function call
19420*/
19421WDI_Status
19422WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019423(
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 WDI_ControlBlockType* pWDICtx,
19425 WDI_EventInfoType* pEventData
19426)
19427{
19428 WDI_Status wdiStatus;
19429 eHalStatus halStatus;
19430 WDI_LowLevelIndType wdiInd;
19431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19432
19433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019435 -------------------------------------------------------------------------*/
19436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19437 ( NULL == pEventData->pEventData))
19438 {
19439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 }
19444
19445 /*-------------------------------------------------------------------------
19446 Extract indication and send it to UMAC
19447 -------------------------------------------------------------------------*/
19448
19449 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19450 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019451 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019452
19453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19454 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019455
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19458 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019459
ltimariu034f7d62013-01-24 18:54:33 -080019460 if ( pWDICtx->wdiLowLevelIndCB )
19461 {
19462 /*Notify UMAC*/
19463 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19464 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019465
19466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019467}/*WDI_ProcessFatalErrorInd*/
19468
19469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019470 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 an indication of this kind is being received over the
19472 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019473
19474 @param pWDICtx: pointer to the WLAN DAL context
19475 pEventData: pointer to the event information structure
19476
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 @see
19478 @return Result of the function call
19479*/
19480WDI_Status
19481WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019482(
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 WDI_ControlBlockType* pWDICtx,
19484 WDI_EventInfoType* pEventData
19485)
19486{
19487 tDeleteStaContextParams halDelSTACtx;
19488 WDI_LowLevelIndType wdiInd;
19489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19490
19491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019493 -------------------------------------------------------------------------*/
19494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19495 ( NULL == pEventData->pEventData))
19496 {
19497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 }
19502
19503 /*-------------------------------------------------------------------------
19504 Extract indication and send it to UMAC
19505 -------------------------------------------------------------------------*/
19506
19507 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019508 wpalMemoryCopy( &halDelSTACtx,
19509 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 sizeof(halDelSTACtx));
19511
19512 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019514
19515 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19516 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19517 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19518 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19519
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019522 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19525 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019526
ltimariu034f7d62013-01-24 18:54:33 -080019527 if ( pWDICtx->wdiLowLevelIndCB )
19528 {
19529 /*Notify UMAC*/
19530 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019532
19533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019534}/*WDI_ProcessDelSTAInd*/
19535
19536/**
19537*@brief Process Coex Indication function (called when
19538 an indication of this kind is being received over the
19539 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019540
19541 @param pWDICtx: pointer to the WLAN DAL context
19542 pEventData: pointer to the event information structure
19543
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 @see
19545 @return Result of the function call
19546*/
19547WDI_Status
19548WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019549(
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 WDI_ControlBlockType* pWDICtx,
19551 WDI_EventInfoType* pEventData
19552)
19553{
19554 WDI_LowLevelIndType wdiInd;
19555 tCoexIndMsg halCoexIndMsg;
19556 wpt_uint32 index;
19557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19558
19559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019561 -------------------------------------------------------------------------*/
19562 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19563 ( NULL == pEventData->pEventData ))
19564 {
19565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 }
19570
19571 /*-------------------------------------------------------------------------
19572 Extract indication and send it to UMAC
19573 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19575 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 sizeof(halCoexIndMsg.coexIndParams) );
19577
19578 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019579 wdiInd.wdiIndicationType = WDI_COEX_IND;
19580 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19582 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019583 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 }
19585
19586 // DEBUG
19587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19588 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19590 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19591 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19592 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19593 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019594
ltimariu034f7d62013-01-24 18:54:33 -080019595 if ( pWDICtx->wdiLowLevelIndCB )
19596 {
19597 /*Notify UMAC*/
19598 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19599 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019600
19601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019602}/*WDI_ProcessCoexInd*/
19603
19604/**
19605*@brief Process Tx Complete Indication function (called when
19606 an indication of this kind is being received over the
19607 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019608
19609 @param pWDICtx: pointer to the WLAN DAL context
19610 pEventData: pointer to the event information structure
19611
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 @see
19613 @return Result of the function call
19614*/
19615WDI_Status
19616WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019617(
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 WDI_ControlBlockType* pWDICtx,
19619 WDI_EventInfoType* pEventData
19620)
19621{
19622 WDI_LowLevelIndType wdiInd;
19623 tTxComplIndMsg halTxComplIndMsg;
19624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19625
19626 /*-------------------------------------------------------------------------
19627 Sanity check
19628 -------------------------------------------------------------------------*/
19629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19630 ( NULL == pEventData->pEventData ))
19631 {
19632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 WDI_ASSERT( 0 );
19635 return WDI_STATUS_E_FAILURE;
19636 }
19637
19638 /*-------------------------------------------------------------------------
19639 Extract indication and send it to UMAC
19640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19642 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 sizeof(halTxComplIndMsg.txComplParams) );
19644
19645 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19647 wdiInd.wdiIndicationData.tx_complete_status
19648 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019649
ltimariu034f7d62013-01-24 18:54:33 -080019650 if ( pWDICtx->wdiLowLevelIndCB )
19651 {
19652 /*Notify UMAC*/
19653 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19654 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019655
19656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019657}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019658#ifdef FEATURE_WLAN_TDLS
19659/**
19660*@brief Process TDLS Indication function (called when
19661 an indication of this kind is being received over the
19662 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019663
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019664 @param pWDICtx: pointer to the WLAN DAL context
19665 pEventData: pointer to the event information structure
19666
19667 @see
19668 @return Result of the function call
19669*/
19670WDI_Status
19671WDI_ProcessTdlsInd
19672(
19673 WDI_ControlBlockType* pWDICtx,
19674 WDI_EventInfoType* pEventData
19675)
19676{
19677 WDI_LowLevelIndType wdiInd;
19678 tTdlsIndMsg halTdlsIndMsg;
19679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19680
19681 /*-------------------------------------------------------------------------
19682 Sanity check
19683 -------------------------------------------------------------------------*/
19684 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19685 ( NULL == pEventData->pEventData ))
19686 {
19687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19688 "%s: Invalid parameters", __func__);
19689 WDI_ASSERT( 0 );
19690 return WDI_STATUS_E_FAILURE;
19691 }
19692
19693 /*-------------------------------------------------------------------------
19694 Extract indication and send it to UMAC
19695 -------------------------------------------------------------------------*/
19696 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19697 pEventData->pEventData,
19698 sizeof(halTdlsIndMsg.tdlsIndParams) );
19699
19700 /*Fill in the indication parameters*/
19701 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19702
19703 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19704 = halTdlsIndMsg.tdlsIndParams.status;
19705
19706 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19707 = halTdlsIndMsg.tdlsIndParams.staIdx;
19708
19709 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19710 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19711
19712 /*Notify UMAC*/
19713 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19714
19715 return WDI_STATUS_SUCCESS;
19716}/*WDI_ProcessTdlsInd*/
19717#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019718/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019719*@brief Process Noa Start Indication function (called when
19720 an indication of this kind is being received over the
19721 bus from HAL)
19722
19723 @param pWDICtx: pointer to the WLAN DAL context
19724 pEventData: pointer to the event information structure
19725
19726 @see
19727 @return Result of the function call
19728*/
19729WDI_Status
19730WDI_ProcessP2pNoaStartInd
19731(
19732 WDI_ControlBlockType* pWDICtx,
19733 WDI_EventInfoType* pEventData
19734)
19735{
19736 WDI_LowLevelIndType wdiInd;
19737 tNoaStartIndMsg halNoaStartIndMsg;
19738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19739
19740 /*-------------------------------------------------------------------------
19741 Sanity check
19742 -------------------------------------------------------------------------*/
19743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19744 ( NULL == pEventData->pEventData ))
19745 {
19746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19747 "%s: Invalid parameters", __func__);
19748 WDI_ASSERT( 0 );
19749 return WDI_STATUS_E_FAILURE;
19750 }
19751
19752 /*-------------------------------------------------------------------------
19753 Extract indication and send it to UMAC
19754 -------------------------------------------------------------------------*/
19755 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19756 pEventData->pEventData,
19757 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19758
19759 /*Fill in the indication parameters*/
19760 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19761
19762 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19763 = halNoaStartIndMsg.noaStartIndParams.status;
19764
19765 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19766 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19767
19768 /*Notify UMAC*/
19769 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19770
19771 return WDI_STATUS_SUCCESS;
19772}/*WDI_ProcessNoaAttrInd*/
19773
19774/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019775*@brief Process Noa Attr Indication function (called when
19776 an indication of this kind is being received over the
19777 bus from HAL)
19778
19779 @param pWDICtx: pointer to the WLAN DAL context
19780 pEventData: pointer to the event information structure
19781
19782 @see
19783 @return Result of the function call
19784*/
19785WDI_Status
19786WDI_ProcessP2pNoaAttrInd
19787(
19788 WDI_ControlBlockType* pWDICtx,
19789 WDI_EventInfoType* pEventData
19790)
19791{
19792 WDI_LowLevelIndType wdiInd;
19793 tNoaAttrIndMsg halNoaAttrIndMsg;
19794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19795
19796 /*-------------------------------------------------------------------------
19797 Sanity check
19798 -------------------------------------------------------------------------*/
19799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19800 ( NULL == pEventData->pEventData ))
19801 {
19802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 WDI_ASSERT( 0 );
19805 return WDI_STATUS_E_FAILURE;
19806 }
19807
19808 /*-------------------------------------------------------------------------
19809 Extract indication and send it to UMAC
19810 -------------------------------------------------------------------------*/
19811 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19812 pEventData->pEventData,
19813 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19814
19815 /*Fill in the indication parameters*/
19816 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019817
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19819 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019820
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19822 = halNoaAttrIndMsg.noaAttrIndParams.index;
19823 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19824 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19825 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19826 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019827
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19829 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19830 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19831 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19832 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19833 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19834 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19835 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019836
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19838 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19839 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19840 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19841 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19842 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19843 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19844 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19845
ltimariu034f7d62013-01-24 18:54:33 -080019846 if ( pWDICtx->wdiLowLevelIndCB )
19847 {
19848 /*Notify UMAC*/
19849 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19850 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019851
19852 return WDI_STATUS_SUCCESS;
19853}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019854
19855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 an indication of this kind is being received over the
19858 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019859
19860 @param pWDICtx: pointer to the WLAN DAL context
19861 pEventData: pointer to the event information structure
19862
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 @see
19864 @return Result of the function call
19865*/
19866WDI_Status
19867WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019868(
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 WDI_ControlBlockType* pWDICtx,
19870 WDI_EventInfoType* pEventData
19871)
19872{
19873 WDI_LowLevelIndType wdiInd;
19874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019875
Jeff Johnson295189b2012-06-20 16:38:30 -070019876 /*-------------------------------------------------------------------------
19877 Extract indication and send it to UMAC
19878 -------------------------------------------------------------------------*/
19879 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19881
ltimariu034f7d62013-01-24 18:54:33 -080019882 if ( pWDICtx->wdiLowLevelIndCB )
19883 {
19884 /*Notify UMAC*/
19885 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19886 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019887
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019889}/*WDI_ProcessTxPerHitInd*/
19890
Jeff Johnson295189b2012-06-20 16:38:30 -070019891/**
19892 @brief WDI_ProcessFTMCommandReq
19893 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019894
19895 @param pWDICtx: pointer to the WLAN DAL context
19896 pEventData: pointer to the event information structure
19897
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 @see
19899 @return Result of the function call
19900*/
19901WDI_Status
19902WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019903(
Jeff Johnson295189b2012-06-20 16:38:30 -070019904 WDI_ControlBlockType* pWDICtx,
19905 WDI_EventInfoType* pEventData
19906)
19907{
19908 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19909 wpt_uint8 *ftmCommandBuffer = NULL;
19910 wpt_uint16 dataOffset;
19911 wpt_uint16 bufferSize;
19912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 -------------------------------------------------------------------------*/
19915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19916 ( NULL == pEventData->pEventData))
19917
19918 {
19919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 }
19924
19925 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19926
19927 /* Get MSG Buffer */
19928 WDI_GetMessageBuffer(pWDICtx,
19929 WDI_FTM_CMD_REQ,
19930 ftmCommandReq->bodyLength,
19931 &ftmCommandBuffer,
19932 &dataOffset,
19933 &bufferSize);
19934
19935 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19936 ftmCommandReq->FTMCommandBody,
19937 ftmCommandReq->bodyLength);
19938
19939 /* Send MSG */
19940 return WDI_SendMsg(pWDICtx,
19941 ftmCommandBuffer,
19942 bufferSize,
19943 pEventData->pCBfnc,
19944 pEventData->pUserData,
19945 WDI_FTM_CMD_RESP);
19946}
19947
19948/**
19949 @brief WDI_ProcessFTMCommandRsp
19950 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019951
19952 @param pWDICtx: pointer to the WLAN DAL context
19953 pEventData: pointer to the event information structure
19954
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 @see
19956 @return Result of the function call
19957*/
19958WDI_Status
19959WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019960(
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 WDI_ControlBlockType* pWDICtx,
19962 WDI_EventInfoType* pEventData
19963)
19964{
19965 WDI_FTMCommandRspCb ftmCMDRspCb;
19966 tProcessPttRspParams *ftmCMDRspData = NULL;
19967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19968
19969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 -------------------------------------------------------------------------*/
19972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19973 ( NULL == pEventData->pEventData))
19974 {
19975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 }
19980
19981 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19982
19983 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19984
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19986 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19988
19989 /*Notify UMAC*/
19990 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19991
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993}
Jeff Johnson295189b2012-06-20 16:38:30 -070019994/**
19995 @brief WDI_ProcessHalDumpCmdReq
19996 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019997
19998 @param pWDICtx: pointer to the WLAN DAL context
19999 pEventData: pointer to the event information structure
20000
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 @see
20002 @return Result of the function call
20003*/
20004WDI_Status
20005WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020006(
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 WDI_ControlBlockType* pWDICtx,
20008 WDI_EventInfoType* pEventData
20009)
20010{
20011 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20012 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20013 wpt_uint16 usDataOffset = 0;
20014 wpt_uint16 usSendSize = 0;
20015 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020016 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020017
20018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 -------------------------------------------------------------------------*/
20021 if (( NULL == pEventData ) ||
20022 ( NULL == pEventData->pEventData) ||
20023 ( NULL == pEventData->pCBfnc ))
20024 {
20025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020029 }
20030
20031 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20032 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20033
20034 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020039 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020040 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020045
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 /*-----------------------------------------------------------------------
20047 Get message buffer
20048 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020049 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20051 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020052 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20054 {
20055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20056 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20057 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 }
20061
Jeff Johnsone7245742012-09-05 17:12:55 -070020062 wpalMemoryCopy( pSendBuffer+usDataOffset,
20063 &halDumpCmdReqMsg.dumpCmdReqParams,
20064 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020065
20066 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020068
20069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20073 wdiHALDumpCmdRspCb, pEventData->pUserData,
20074 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020075}
20076
20077/**
20078 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 Process hal Dump Command Response from HAL, simply route to HDD
20080
20081 @param pWDICtx: pointer to the WLAN DAL context
20082 pEventData: pointer to the event information structure
20083
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 @see
20085 @return Result of the function call
20086*/
20087WDI_Status
20088WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020089(
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 WDI_ControlBlockType* pWDICtx,
20091 WDI_EventInfoType* pEventData
20092)
20093{
20094 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020095 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20097
20098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 -------------------------------------------------------------------------*/
20101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20102 ( NULL == pEventData->pEventData))
20103 {
20104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 }
20109
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020111
20112 /*Initialize the WDI Response structure */
20113 wdiHALDumpCmdRsp.usBufferLen = 0;
20114 wdiHALDumpCmdRsp.pBuffer = NULL;
20115
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020116 wpalMemoryCopy( &halDumpCmdRspParams,
20117 pEventData->pEventData,
20118 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020119
20120 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020121 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020122
20123 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020124 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 {
20126 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020127 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20128 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20129
20130 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20131 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020132 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 /*Notify UMAC*/
20136 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20137
20138 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20139 {
20140 /* Free the allocated buffer */
20141 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20142 }
20143 return WDI_STATUS_SUCCESS;
20144}
20145
20146/*==========================================================================
20147 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020148
Jeff Johnson295189b2012-06-20 16:38:30 -070020149 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020150 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020151==========================================================================*/
20152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020153 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 when it wishes to send up a notification like the ones
20155 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020156
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020158
20159 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 wctsNotifyCBData: the callback data of the user
20162
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020164
20165 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020166*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020167void
Jeff Johnson295189b2012-06-20 16:38:30 -070020168WDI_NotifyMsgCTSCB
20169(
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 WCTS_NotifyEventType wctsEvent,
20172 void* wctsNotifyCBData
20173)
20174{
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20177
20178 if (NULL == pWDICtx )
20179 {
20180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 }
20185
20186 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20187 {
20188 /* callback presumably occurred after close */
20189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020190 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020192 }
20193
20194 if ( WCTS_EVENT_OPEN == wctsEvent )
20195 {
20196 /*Flag must be set atomically as it is checked from incoming request
20197 functions*/
20198 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020199 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020200
20201 /*Nothing to do - so try to dequeue any pending request that may have
20202 occurred while we were trying to establish this*/
20203 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020206 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 {
20208 /*Flag must be set atomically as it is checked from incoming request
20209 functions*/
20210 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020212
20213 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 wpalMutexRelease(&pWDICtx->wptMutex);
20216
20217 /*Notify that the Control Channel is closed */
20218 wpalEventSet(&pWDICtx->wctsActionEvent);
20219 }
20220
20221}/*WDI_NotifyMsgCTSCB*/
20222
20223
20224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 when it wishes to send up a packet received over the
20227 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020228
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020230
20231 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 pMsg: the packet
20233 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020234 wctsRxMsgCBData: the callback data of the user
20235
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020237
20238 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020239*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020240void
20241WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020242(
Jeff Johnsone7245742012-09-05 17:12:55 -070020243 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 void* pMsg,
20245 wpt_uint32 uLen,
20246 void* wctsRxMsgCBData
20247)
20248{
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 tHalMsgHeader *pHalMsgHeader;
20250 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20253
20254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 ( uLen < sizeof(tHalMsgHeader)))
20259 {
20260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020263 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 }
20265
20266 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20267 {
20268 /* callback presumably occurred after close */
20269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020270 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020271 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020272 }
20273
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 context - so no serialization is necessary here
20276 ! - revisit this assumption */
20277
20278 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20279
20280 if ( uLen != pHalMsgHeader->msgLen )
20281 {
20282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20283 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020284 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20285 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 }
20287
20288 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20289
20290 /*The message itself starts after the header*/
20291 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20292 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20293 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20294 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20295
20296
20297 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20298 {
20299 /*Stop the timer as the response was received */
20300 /*!UT - check for potential race conditions between stop and response */
20301 wpalTimerStop(&pWDICtx->wptResponseTimer);
20302 }
20303 /* Check if we receive a response message which is not expected */
20304 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20305 {
20306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20307 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20308 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20311 pWDICtx->wdiExpectedResponse);
20312 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20313 return;
20314 }
20315
20316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20317 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20318
20319 /*Post response event to the state machine*/
20320 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20321
20322}/*WDI_RXMsgCTSCB*/
20323
20324
20325/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020327========================================================================*/
20328
20329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020330 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020332
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 @param pWDICtx - pointer to the control block
20334
20335 @return Result of the function call
20336*/
20337WPT_INLINE WDI_Status
20338WDI_CleanCB
20339(
20340 WDI_ControlBlockType* pWDICtx
20341)
20342{
20343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20344
20345 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020346 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020347
Jeff Johnsone7245742012-09-05 17:12:55 -070020348 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20350 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20351
20352 WDI_ResetAssocSessions( pWDICtx );
20353
20354 return WDI_STATUS_SUCCESS;
20355}/*WDI_CleanCB*/
20356
20357
20358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020359 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020360
Jeff Johnsone7245742012-09-05 17:12:55 -070020361
20362 @param pWDICtx: pointer to the WLAN DAL context
20363 pEventData: pointer to the event information structure
20364
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 @see
20366 @return Result of the function call
20367*/
20368WPT_INLINE WDI_Status
20369WDI_ProcessRequest
20370(
20371 WDI_ControlBlockType* pWDICtx,
20372 WDI_EventInfoType* pEventData
20373)
20374{
20375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20376
Jeff Johnsone7245742012-09-05 17:12:55 -070020377 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 already checked these pointers*/
20379
20380 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20381 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020382 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20384 "Calling request processing function for req %s (%d) %x",
20385 WDI_getReqMsgString(pEventData->wdiRequest),
20386 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20387 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20388 }
20389 else
20390 {
20391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020393 pEventData->wdiRequest);
20394 return WDI_STATUS_E_NOT_IMPLEMENT;
20395 }
20396}/*WDI_ProcessRequest*/
20397
20398
20399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020400 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 prefixes it with a send message header
20403
20404 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 wdiReqType: type of the request being sent
20406 uBufferLen: message buffer len
20407 pMsgBuffer: resulting allocated buffer
20408 pusDataOffset: offset in the buffer where the caller
20409 can start copying its message data
20410 puBufferSize: the resulting buffer size (offset+buff
20411 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020412
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 @see
20414 @return Result of the function call
20415*/
20416WDI_Status
20417WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020418(
20419 WDI_ControlBlockType* pWDICtx,
20420 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 wpt_uint8** pMsgBuffer,
20423 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020424 wpt_uint16* pusBufferSize
20425)
20426{
20427 tHalMsgHeader halMsgHeader;
20428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20429
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 again*/
20432
20433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020434 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020436 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20438 if ( NULL == *pMsgBuffer )
20439 {
20440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20441 "Unable to allocate message buffer for req %s (%d)",
20442 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 }
20447
20448 /*-------------------------------------------------------------------------
20449 Fill in the message header
20450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020451 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20452 /* Fill msgVersion */
20453#ifdef WLAN_FEATURE_11AC
20454 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020455 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 else
20457#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020458 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020459
Jeff Johnsone7245742012-09-05 17:12:55 -070020460 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20461 *pusDataOffset = sizeof(halMsgHeader);
20462 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20463
20464 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020465}/*WDI_GetMessageBuffer*/
20466
20467
20468/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020471 the CB
20472
20473 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020474 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 usSendSize size of the buffer to be sent
20477 pRspCb: response callback - save in the WDI
20478 CB
20479 pUserData: user data associated with the
20480 callback
20481 wdiExpectedResponse: the code of the response that is
20482 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020483
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 @see
20485 @return Result of the function call
20486*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020488WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020489(
20490 WDI_ControlBlockType* pWDICtx,
20491 wpt_uint8* pSendBuffer,
20492 wpt_uint32 usSendSize,
20493 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 void* pUserData,
20495 WDI_ResponseEnumType wdiExpectedResponse
20496)
20497{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020498 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020499 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20501
20502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 ------------------------------------------------------------------------*/
20505 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 pWDICtx->pfncRspCB = pRspCb;
20507 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020508
20509 /*-----------------------------------------------------------------------
20510 Call the CTS to send this message over - free message afterwards
20511 - notify transport failure
20512 Note: CTS is reponsible for freeing the message buffer.
20513 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020514 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20515 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20516 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020517 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 "Failed to send message over the bus - catastrophic failure");
20520
Jeff Johnsond13512a2012-07-17 11:42:19 -070020521 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020523 else
20524 {
20525 /* even when message was placed in CTS deferred Q, we will treat it
20526 success but log this info
20527 */
20528 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20529 {
20530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20531 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20532 "response %s (%d)",
20533 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20534 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020535 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020536 }
20537 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020538
Jeff Johnsond13512a2012-07-17 11:42:19 -070020539 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 if ( NULL != pWDICtx->wdiReqStatusCB )
20541 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020542 /*Inform originator whether request went through or not*/
20543 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20544 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 pWDICtx->wdiReqStatusCB = NULL;
20546 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020547 callback(wdiStatus, callbackContext);
20548
20549 /*For WDI requests which have registered a request callback,
20550 inform the WDA caller of the same via setting the return value
20551 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20552 end up repeating the functonality in the req callback for the
20553 WDI_STATUS_E_FAILURE case*/
20554 if (wdiStatus == WDI_STATUS_E_FAILURE)
20555 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 }
20557
Jeff Johnsond13512a2012-07-17 11:42:19 -070020558 if ( wdiStatus == WDI_STATUS_SUCCESS )
20559 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 /*Start timer for the expected response */
20561 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020562
20563 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020564 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020565 }
20566 else
20567 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020568 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020569 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020571
Jeff Johnsond13512a2012-07-17 11:42:19 -070020572 return wdiStatus;
20573
Jeff Johnson295189b2012-06-20 16:38:30 -070020574}/*WDI_SendMsg*/
20575
20576
20577
20578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 the bus using the control transport and saves some info
20581 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020582
20583 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020584 pSendBuffer: buffer to be sent
20585 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020586
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 @see
20588 @return Result of the function call
20589*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020591WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020592(
20593 WDI_ControlBlockType* pWDICtx,
20594 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 wpt_uint32 usSendSize
20596)
20597{
20598 wpt_uint32 uStatus ;
20599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20600
20601 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 Note: CTS is reponsible for freeing the message buffer.
20604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 (void*)pSendBuffer, usSendSize );
20607
20608 /*Inform Upper MAC about the outcome of the request*/
20609 if ( NULL != pWDICtx->wdiReqStatusCB )
20610 {
20611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20612 "Send indication status : %d", uStatus);
20613
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020614 /* even if CTS placed indication into its deferred Q, we treat it
20615 * as success and let CTS drain its queue as per smd interrupt to CTS
20616 */
20617 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 -070020618 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 }
20620
20621 /*If sending of the message failed - it is considered catastrophic and
20622 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020623 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20624 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20625
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 {
20627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020628 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020629
20630 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20631 return WDI_STATUS_E_FAILURE;
20632 }
20633
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020635}/*WDI_SendIndication*/
20636
20637
20638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020639 @brief WDI_DetectedDeviceError - called internally by DAL when
20640 it has detected a failure in the device
20641
20642 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 usErrorCode: error code detected by WDI or received
20644 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020645
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020648*/
20649void
20650WDI_DetectedDeviceError
20651(
20652 WDI_ControlBlockType* pWDICtx,
20653 wpt_uint16 usErrorCode
20654)
20655{
20656 WDI_LowLevelIndType wdiInd;
20657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20658
20659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20660 "Device Error detected code: %d - transitioning to stopped state",
20661 usErrorCode);
20662
20663 wpalMutexAcquire(&pWDICtx->wptMutex);
20664
20665 WDI_STATableStop(pWDICtx);
20666
20667 WDI_ResetAssocSessions(pWDICtx);
20668
20669 /*Set the expected state transition to stopped - because the device
20670 experienced a failure*/
20671 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20672
20673 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020675
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020677
20678 /*TO DO: - there should be an attempt to reset the device here*/
20679
20680 wpalMutexRelease(&pWDICtx->wptMutex);
20681
20682 /*------------------------------------------------------------------------
20683 Notify UMAC if a handler is registered
20684 ------------------------------------------------------------------------*/
20685 if (pWDICtx->wdiLowLevelIndCB)
20686 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20688 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020689
20690 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20691 }
20692}/*WDI_DetectedDeviceError*/
20693
20694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 we started on send message has expire - this should
20697 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 reply - trigger catastrophic failure
20699 @param
20700
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020702
20703 @see
20704 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020705*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020706void
Jeff Johnson295189b2012-06-20 16:38:30 -070020707WDI_ResponseTimerCB
20708(
20709 void *pUserData
20710)
20711{
20712 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20714
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020715 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 }
20722
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020723 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020724 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020725
20726 /* If response timer is running at this time that means this timer
20727 * event is not for the last request but rather last-to-last request and
20728 * this timer event has come after we recevied respone for last-to-last
20729 * message
20730 */
20731 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20732 {
20733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20734 "WDI_ResponseTimerCB: timer in running state on timer event, "
20735 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20736 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20737 return;
20738 }
20739
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020740 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 {
20742
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020745 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020747 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20748 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020749
20750 /* WDI timeout means Riva is not responding or SMD communication to Riva
20751 * is not happening. The only possible way to recover from this error
20752 * is to initiate SSR from APPS.
20753 * There is also an option to re-enable wifi, which will eventually
20754 * trigger SSR
20755 */
20756 if (gWDICb.bEnableSSR == false)
20757 {
20758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20759 "SSR is not enabled on WDI timeout");
20760 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20761 return;
20762 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020763#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020764 wpalWcnssResetIntr();
20765 /* if this timer fires, it means Riva did not receive the FIQ */
20766 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020767#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020768 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20769 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020770#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 }
20772 else
20773 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020775 "Timeout occurred but not waiting for any response %d "
20776 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20777 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20778 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 }
20780
20781 return;
20782
20783}/*WDI_ResponseTimerCB*/
20784
20785
20786/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020788
Jeff Johnsone7245742012-09-05 17:12:55 -070020789
20790 @param pWDICtx: pointer to the WLAN DAL context
20791 pEventData: pointer to the event information structure
20792
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 @see
20794 @return Result of the function call
20795*/
20796WPT_INLINE WDI_Status
20797WDI_ProcessResponse
20798(
20799 WDI_ControlBlockType* pWDICtx,
20800 WDI_EventInfoType* pEventData
20801)
20802{
20803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20804
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 already checked these pointers
20807 ! - revisit this assumption */
20808 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20809 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020813 WDI_getRespMsgString(pEventData->wdiResponse),
20814 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20815 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20816 }
20817 else
20818 {
20819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 pEventData->wdiResponse);
20822 return WDI_STATUS_E_NOT_IMPLEMENT;
20823 }
20824}/*WDI_ProcessResponse*/
20825
20826
20827/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020829=========================================================================*/
20830
20831/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 @brief Utility function used by the DAL Core to help queue a
20833 request that cannot be processed right away.
20834 @param
20835
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 pWDICtx: - pointer to the WDI control block
20837 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 queued
20839
20840 @see
20841 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020842*/
20843WDI_Status
20844WDI_QueuePendingReq
20845(
20846 WDI_ControlBlockType* pWDICtx,
20847 WDI_EventInfoType* pEventData
20848)
20849{
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20854
20855 if ( NULL == pEventDataQueue )
20856 {
20857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 WDI_ASSERT(0);
20860 return WDI_STATUS_MEM_FAILURE;
20861 }
20862
20863 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20864 pEventDataQueue->pUserData = pEventData->pUserData;
20865 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20866 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020868
20869 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20870 {
20871 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020872
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 if ( NULL == pEventInfo )
20874 {
20875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 WDI_ASSERT(0);
20878 wpalMemoryFree(pEventDataQueue);
20879 return WDI_STATUS_MEM_FAILURE;
20880 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020881
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20883
20884 }
20885 pEventDataQueue->pEventData = pEventInfo;
20886
20887 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020889
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020891
20892 return WDI_STATUS_SUCCESS;
20893}/*WDI_QueuePendingReq*/
20894
20895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020896 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020897 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 @param
20899
20900 pMsg - pointer to the message
20901
20902 @see
20903 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020904*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020905void
Jeff Johnson295189b2012-06-20 16:38:30 -070020906WDI_PALCtrlMsgCB
20907(
20908 wpt_msg *pMsg
20909)
20910{
20911 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 WDI_ControlBlockType* pWDICtx = NULL;
20913 WDI_Status wdiStatus;
20914 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020915 void* pUserData;
20916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20917
20918 if (( NULL == pMsg )||
20919 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20920 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20921 {
20922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020925 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 }
20927
20928 /*Transition back to the state that we had before serialization
20929 - serialization transitions us to BUSY to stop any incomming requests
20930 ! TO DO L: possible race condition here if a request comes in between the
20931 state transition and the post function*/
20932
Jeff Johnsone7245742012-09-05 17:12:55 -070020933 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020934
20935 /*-----------------------------------------------------------------------
20936 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 -----------------------------------------------------------------------*/
20939 switch ( pEventData->wdiRequest )
20940 {
20941
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20944 break;
20945
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 case WDI_NV_DOWNLOAD_REQ:
20947 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20948 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20949 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20950 {
20951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020952 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20954 }
20955 else
20956 {
20957 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20958 }
20959
20960 break;
20961
20962 default:
20963 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20964 break;
20965 }/*switch ( pEventData->wdiRequest )*/
20966
20967 if ( WDI_STATUS_SUCCESS != wdiStatus )
20968 {
20969 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20970
20971 if ( NULL != pfnReqStatusCB )
20972 {
20973 /*Fail the request*/
20974 pfnReqStatusCB( wdiStatus, pUserData);
20975 }
20976 }
20977
20978 /* Free data - that was allocated when queueing*/
20979 if( pEventData != NULL )
20980 {
20981 if( pEventData->pEventData != NULL )
20982 {
20983 wpalMemoryFree(pEventData->pEventData);
20984 }
20985 wpalMemoryFree(pEventData);
20986 }
20987
20988 if( pMsg != NULL )
20989 {
20990 wpalMemoryFree(pMsg);
20991 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020992
Jeff Johnson295189b2012-06-20 16:38:30 -070020993}/*WDI_PALCtrlMsgCB*/
20994
20995/**
20996 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 and schedule for execution a pending request
20998 @param
20999
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 pWDICtx: - pointer to the WDI control block
21001 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021002 queued
21003
21004 @see
21005 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021006*/
21007WDI_Status
21008WDI_DequeuePendingReq
21009(
21010 WDI_ControlBlockType* pWDICtx
21011)
21012{
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21017
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021019
21020 if ( NULL == pNode )
21021 {
21022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 return WDI_STATUS_SUCCESS;
21025 }
21026
21027 /*The node actually points to the 1st element inside the Event Data struct -
21028 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021029 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021030
21031 /*Serialize processing in the control thread
21032 !TO DO: - check to see if these are all the messages params that need
21033 to be filled in*/
21034 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21035
21036 if ( NULL == palMsg )
21037 {
21038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021041 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021043 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 palMsg->callback = WDI_PALCtrlMsgCB;
21045 palMsg->ptr = pEventData;
21046
21047 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 palMsg->val = pWDICtx->uGlobalState;
21049
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 /*Transition back to BUSY as we need to handle a queued request*/
21051 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021052
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21054
21055 return WDI_STATUS_PENDING;
21056}/*WDI_DequeuePendingReq*/
21057
21058
21059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021062 away.- The assoc requests will be queued by BSSID
21063 @param
21064
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 pWDICtx: - pointer to the WDI control block
21066 pEventData: pointer to the evnt info that needs to be queued
21067 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021068
21069 @see
21070 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021071*/
21072WDI_Status
21073WDI_QueueNewAssocRequest
21074(
21075 WDI_ControlBlockType* pWDICtx,
21076 WDI_EventInfoType* pEventData,
21077 wpt_macAddr macBSSID
21078)
21079{
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 wpt_uint8 i;
21081 WDI_BSSSessionType* pSession = NULL;
21082 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 void* pEventInfo;
21085 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021087
Jeff Johnsone7245742012-09-05 17:12:55 -070021088
21089 /*------------------------------------------------------------------------
21090 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 ------------------------------------------------------------------------*/
21092 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21093 {
21094 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21095 {
21096 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 pSession = &pWDICtx->aBSSSessions[i];
21098 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 }
21100 }
21101
21102 if ( i >= WDI_MAX_BSS_SESSIONS )
21103 {
21104 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021106 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021107
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 /*------------------------------------------------------------------------
21109 Fill in the BSSID for this session and set the usage flag
21110 ------------------------------------------------------------------------*/
21111 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021113
21114 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 ------------------------------------------------------------------------*/
21117 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21118 if ( NULL == pEventDataQueue )
21119 {
21120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021121 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 WDI_ASSERT(0);
21123 return WDI_STATUS_MEM_FAILURE;
21124 }
21125
21126 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21127 if ( NULL == pSessionIdElement )
21128 {
21129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021130 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 WDI_ASSERT(0);
21132 wpalMemoryFree(pEventDataQueue);
21133 return WDI_STATUS_MEM_FAILURE;
21134 }
21135
21136 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21137 if ( NULL == pEventInfo )
21138 {
21139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021140 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 WDI_ASSERT(0);
21142 wpalMemoryFree(pSessionIdElement);
21143 wpalMemoryFree(pEventDataQueue);
21144 return WDI_STATUS_MEM_FAILURE;
21145 }
21146
21147 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21148 pEventDataQueue->pUserData = pEventData->pUserData;
21149 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21150 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021152
21153 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21154 pEventDataQueue->pEventData = pEventInfo;
21155
21156 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021158
21159 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021161
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021163
21164 /*We need to maintain a separate list that keeps track of the order in which
21165 the new assoc requests are being queued such that we can start processing
21166 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 pSessionIdElement->ucIndex = i;
21168 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021169
21170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21171 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021172 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021173
21174 /*Return pending as this is what the status of the request is since it has
21175 been queued*/
21176 return WDI_STATUS_PENDING;
21177}/*WDI_QueueNewAssocRequest*/
21178
21179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021180 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 away.- The assoc requests will be queued by BSSID
21183 @param
21184
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 pWDICtx: - pointer to the WDI control block
21186 pSession: - session in which to queue
21187 pEventData: pointer to the event info that needs to be
21188 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021189
21190 @see
21191 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021192*/
21193WDI_Status
21194WDI_QueueAssocRequest
21195(
21196 WDI_ControlBlockType* pWDICtx,
21197 WDI_BSSSessionType* pSession,
21198 WDI_EventInfoType* pEventData
21199)
21200{
Jeff Johnsone7245742012-09-05 17:12:55 -070021201 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021203 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021205
21206 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021207 Sanity check
21208 ------------------------------------------------------------------------*/
21209 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21210 {
21211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021213
Jeff Johnsone7245742012-09-05 17:12:55 -070021214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215 }
21216
21217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 ------------------------------------------------------------------------*/
21220 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21221 if ( NULL == pEventDataQueue )
21222 {
21223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021224 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 WDI_ASSERT(0);
21226 return WDI_STATUS_MEM_FAILURE;
21227 }
21228
21229 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21230 if ( NULL == pEventInfo )
21231 {
21232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21233 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021234 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 WDI_ASSERT(0);
21236 wpalMemoryFree(pEventDataQueue);
21237 return WDI_STATUS_MEM_FAILURE;
21238 }
21239
21240 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21241 pEventDataQueue->pUserData = pEventData->pUserData;
21242 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21243 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 pEventDataQueue->pEventData = pEventInfo;
21246
21247 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21248
21249 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021251
21252 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021253 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021254
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021256
21257 /*The result of this operation is pending because the request has been
21258 queued and it will be processed at a later moment in time */
21259 return WDI_STATUS_PENDING;
21260}/*WDI_QueueAssocRequest*/
21261
21262/**
21263 @brief Utility function used by the DAL Core to help dequeue
21264 an association request that was pending
21265 The request will be queued up in front of the main
21266 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 @param
21268
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021270
21271
21272 @see
21273 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021274*/
21275WDI_Status
21276WDI_DequeueAssocRequest
21277(
21278 WDI_ControlBlockType* pWDICtx
21279)
21280{
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 wpt_list_node* pNode = NULL;
21282 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 WDI_BSSSessionType* pSession;
21284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021285
21286 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021287 Sanity check
21288 ------------------------------------------------------------------------*/
21289 if ( NULL == pWDICtx )
21290 {
21291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021293
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 }
21296
21297 /*------------------------------------------------------------------------
21298 An association has been completed => a new association can occur
21299 Check to see if there are any pending associations ->
21300 If so , transfer all the pending requests into the busy queue for
21301 processing
21302 These requests have arrived prior to the requests in the busy queue
21303 (bc they needed to be processed in order to be placed in this queue)
21304 => they will be placed at the front of the busy queue
21305 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021306 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021307
21308 if ( NULL == pNode )
21309 {
21310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 return WDI_STATUS_SUCCESS;
21313 }
21314
21315 /*The node actually points to the 1st element inside the Session Id struct -
21316 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021318
21319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21320 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21321
21322 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21323 {
21324 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021325
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021327 the front of the main waiting queue for subsequent execution*/
21328 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 while ( NULL != pNode )
21330 {
21331 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21333 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 }
21337 else
21338 {
21339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 WPAL_ASSERT(0);
21342 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021345
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21347 wpalMemoryFree(pSessionIdElement);
21348 return WDI_STATUS_SUCCESS;
21349}/*WDI_DequeueAssocRequest*/
21350
21351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021352 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021353 pending requests - all req cb will be called with
21354 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 @param
21356
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021358
21359 @see
21360 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021361*/
21362WDI_Status
21363WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021364(
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 WDI_ControlBlockType* pWDICtx
21366)
21367{
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021369 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021370 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 void* pUserData;
21372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21373
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021375
21376 /*------------------------------------------------------------------------
21377 Go through all the requests and fail them - this will only be called
21378 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 ------------------------------------------------------------------------*/
21381 while( pNode )
21382 {
21383 /*The node actually points to the 1st element inside the Event Data struct -
21384 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385 pEventDataQueue = (WDI_EventInfoType*)pNode;
21386
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21388 if ( NULL != pfnReqStatusCB )
21389 {
21390 /*Fail the request*/
21391 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21392 }
21393 /* Free data - that was allocated when queueing */
21394 if ( pEventDataQueue->pEventData != NULL )
21395 {
21396 wpalMemoryFree(pEventDataQueue->pEventData);
21397 }
21398 wpalMemoryFree(pEventDataQueue);
21399
21400 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21401 {
21402 break;
21403 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021404 }
21405
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 return WDI_STATUS_SUCCESS;
21407}/*WDI_ClearPendingRequests*/
21408
21409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021410 @brief Helper routine used to init the BSS Sessions in the WDI control block
21411
21412
21413 @param pWDICtx: pointer to the WLAN DAL context
21414
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 @see
21416*/
21417void
21418WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021419(
Jeff Johnson295189b2012-06-20 16:38:30 -070021420 WDI_ControlBlockType* pWDICtx
21421)
21422{
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21425
21426 /*-------------------------------------------------------------------------
21427 No Sanity check
21428 -------------------------------------------------------------------------*/
21429 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21430 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021431 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21433 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21434 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21435 }
21436}/*WDI_ResetAssocSessions*/
21437
21438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021439 @brief Helper routine used to find a session based on the BSSID
21440
21441
21442 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 pSession: pointer to the session (if found)
21445
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021448*/
21449wpt_uint8
21450WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021451(
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 WDI_ControlBlockType* pWDICtx,
21453 wpt_macAddr macBSSID,
21454 WDI_BSSSessionType** ppSession
21455)
21456{
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21459
21460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 -------------------------------------------------------------------------*/
21463 if ( NULL == ppSession )
21464 {
21465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021466 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 }
21469
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021471
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 /*------------------------------------------------------------------------
21473 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 ------------------------------------------------------------------------*/
21475 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21476 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021477 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21478 (eWLAN_PAL_TRUE ==
21479 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21480 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 {
21482 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 return i;
21485 }
21486 }
21487
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489}/*WDI_FindAssocSession*/
21490
21491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021492 @brief Helper routine used to find a session based on the BSSID
21493
21494
21495 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 ucBSSIdx: BSS Index of the session
21497 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021498
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021501*/
21502wpt_uint8
21503WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021504(
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 WDI_ControlBlockType* pWDICtx,
21506 wpt_uint16 ucBSSIdx,
21507 WDI_BSSSessionType** ppSession
21508)
21509{
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21512
21513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021515 -------------------------------------------------------------------------*/
21516 if ( NULL == ppSession )
21517 {
21518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021519 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021520 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 }
21522
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021524
Jeff Johnsone7245742012-09-05 17:12:55 -070021525 /*------------------------------------------------------------------------
21526 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 ------------------------------------------------------------------------*/
21528 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21529 {
21530 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21531 {
21532 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 return i;
21535 }
21536 }
21537
Jeff Johnsone7245742012-09-05 17:12:55 -070021538 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539}/*WDI_FindAssocSessionByBSSIdx*/
21540
21541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 @brief Helper routine used to find a session based on the BSSID
21543
21544
21545 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 ucBSSIdx: BSS Index of the session
21547 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021548
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021551*/
21552wpt_uint8
21553WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021554(
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 WDI_ControlBlockType* pWDICtx,
21556 wpt_uint16 usIdx,
21557 WDI_BSSSessionType** ppSession
21558)
21559{
21560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21561
21562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021564 -------------------------------------------------------------------------*/
21565 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21566 {
21567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021568 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021569 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021570 }
21571
21572 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021573 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021574
21575 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021576
Jeff Johnson295189b2012-06-20 16:38:30 -070021577}/*WDI_FindAssocSessionByBSSIdx*/
21578
21579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021582
21583
21584 @param pWDICtx: pointer to the WLAN DAL context
21585 pSession: pointer to the session (if found)
21586
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021588 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021589*/
21590wpt_uint8
21591WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021592(
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 WDI_ControlBlockType* pWDICtx,
21594 WDI_BSSSessionType** ppSession
21595)
21596{
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021601 -------------------------------------------------------------------------*/
21602 if ( NULL == ppSession )
21603 {
21604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021605 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021606 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 }
21608
Jeff Johnsone7245742012-09-05 17:12:55 -070021609 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021610
Jeff Johnsone7245742012-09-05 17:12:55 -070021611 /*------------------------------------------------------------------------
21612 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 ------------------------------------------------------------------------*/
21614 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21615 {
21616 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21617 {
21618 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021620 return i;
21621 }
21622 }
21623
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021625}/*WDI_FindEmptySession*/
21626
21627
21628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021631
21632
21633 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021634 macBSSID: pointer to BSSID. If NULL, get all the session.
21635 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21636 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21637 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021638 @see
21639 @return Number of sessions in use
21640*/
21641wpt_uint8
21642WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021643(
Hoonki Lee26599972013-04-24 01:21:58 -070021644 WDI_ControlBlockType* pWDICtx,
21645 wpt_macAddr macBSSID,
21646 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021647)
21648{
Jeff Johnsone7245742012-09-05 17:12:55 -070021649 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021651
21652 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 Count all sessions in use
21654 ------------------------------------------------------------------------*/
21655 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21656 {
Hoonki Lee26599972013-04-24 01:21:58 -070021657 if ( macBSSID && skipBSSID &&
21658 (eWLAN_PAL_TRUE ==
21659 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21660 WDI_MAC_ADDR_LEN)))
21661 {
21662 continue;
21663 }
21664 else if ( pWDICtx->aBSSSessions[i].bInUse )
21665 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021667 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021668 }
21669
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671}/*WDI_GetActiveSessionsCount*/
21672
21673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021676
21677
21678 @param pWDICtx: pointer to the WLAN DAL context
21679 pSession: pointer to the session (if found)
21680
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021683*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021684void
Jeff Johnson295189b2012-06-20 16:38:30 -070021685WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021686(
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 WDI_ControlBlockType* pWDICtx,
21688 WDI_BSSSessionType* ppSession
21689)
21690{
21691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 -------------------------------------------------------------------------*/
21694 if ( NULL == ppSession )
21695 {
21696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021697 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021698 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 }
21700
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 /*------------------------------------------------------------------------
21702 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 ------------------------------------------------------------------------*/
21704 wpal_list_destroy(&ppSession->wptPendingQueue);
21705 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021706 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21707 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21709 wpal_list_init(&ppSession->wptPendingQueue);
21710
21711}/*WDI_DeleteSession*/
21712
21713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021715 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021716 @param
21717
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 WDI_AddStaParams: - pointer to the WDI Add STA params
21719 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021720
21721 @see
21722 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021723*/
21724void
21725WDI_AddBcastSTAtoSTATable
21726(
21727 WDI_ControlBlockType* pWDICtx,
21728 WDI_AddStaParams * staParams,
21729 wpt_uint16 usBcastStaIdx
21730)
21731{
21732 WDI_AddStaParams wdiAddSTAParam = {0};
21733 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21735
21736 /*---------------------------------------------------------------------
21737 Sanity check
21738 ---------------------------------------------------------------------*/
21739 if ( NULL == staParams )
21740 {
21741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021743
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 }
21746
21747 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21748 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21749 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21750 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21751 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21752 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21753 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21754 WDI_MAC_ADDR_LEN );
21755 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21756 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21757 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21758 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21759 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21760 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21761 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021762
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21764}
21765
21766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 @brief NV blob will be divided into fragments of size 4kb and
21768 Sent to HAL
21769
21770 @param pWDICtx: pointer to the WLAN DAL context
21771 pEventData: pointer to the event information structure
21772
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 @see
21774 @return Result of the function call
21775 */
21776
21777WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021778(
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 WDI_ControlBlockType* pWDICtx,
21780 WDI_EventInfoType* pEventData
21781)
21782{
21783
21784 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21785 wpt_uint8* pSendBuffer = NULL;
21786 wpt_uint16 usDataOffset = 0;
21787 wpt_uint16 usSendSize = 0;
21788 wpt_uint16 usCurrentFragmentSize =0;
21789 wpt_uint8* pSrcBuffer = NULL;
21790 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21791 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21792
21793 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21794 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21795 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21796
Jeff Johnsone7245742012-09-05 17:12:55 -070021797 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21799
21800 /* Update the current Fragment Number */
21801 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21802
21803 /*Update the HAL REQ structure */
21804 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21805 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21806 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21807
21808 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021809 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 image will be sent to HAL*/
21811
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021814 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021815 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21818 usCurrentFragmentSize = FRAGMENT_SIZE;
21819
21820 /*Update the HAL REQ structure */
21821 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21822 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21823
21824 }
21825 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 usCurrentFragmentSize = FRAGMENT_SIZE;
21828
21829 /*Update the HAL REQ structure */
21830 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21831 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21832 }
21833
21834 /*-----------------------------------------------------------------------
21835 Get message buffer
21836 -----------------------------------------------------------------------*/
21837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21838 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21839 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21842 {
21843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21844 "Unable to get send buffer in NV Download req %x %x ",
21845 pEventData, pwdiNvDownloadReqParams);
21846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 }
21849
21850 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21853
21854 /* Appending the NV image fragment */
21855 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21856 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21857 usCurrentFragmentSize);
21858
21859 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021860 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021861
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21863 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021864 WDI_NV_DOWNLOAD_RESP);
21865
21866}
Jeff Johnsone7245742012-09-05 17:12:55 -070021867/*============================================================================
21868 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 ============================================================================*/
21870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 @brief Helper routine used to find a session based on the BSSID
21872 @param pContext: pointer to the WLAN DAL context
21873 @param pDPContext: pointer to the Datapath context
21874
Jeff Johnson295189b2012-06-20 16:38:30 -070021875 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021876 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021877*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021878WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021879WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21880{
21881 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21882
21883 pCB->pDPContext = pDPContext;
21884 return;
21885}
21886
21887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 @brief Helper routine used to find a session based on the BSSID
21889
21890
21891 @param pContext: pointer to the WLAN DAL context
21892
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 @see
21894 @return pointer to Datapath context
21895*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021896WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021897WDI_DS_GetDatapathContext (void *pContext)
21898{
21899 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21900 return pCB->pDPContext;
21901}
21902/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 @brief Helper routine used to find a session based on the BSSID
21904
21905
21906 @param pContext: pointer to the WLAN DAL context
21907 @param pDTDriverContext: pointer to the Transport Driver context
21908
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 @see
21910 @return void
21911*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021912WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021913WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21914{
21915 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21916
21917 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021918 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021919}
21920
21921/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 @brief Helper routine used to find a session based on the BSSID
21923
21924
21925 @param pWDICtx: pointer to the WLAN DAL context
21926
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021929*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021930WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021931WDT_GetTransportDriverContext (void *pContext)
21932{
21933 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021934 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021935}
21936
Jeff Johnsone7245742012-09-05 17:12:55 -070021937/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021938 Helper inline converters
21939 ============================================================================*/
21940/*Convert WDI driver type into HAL driver type*/
21941WPT_STATIC WPT_INLINE WDI_Status
21942WDI_HAL_2_WDI_STATUS
21943(
21944 eHalStatus halStatus
21945)
21946{
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 the chances of getting inlined*/
21949 switch( halStatus )
21950 {
21951 case eHAL_STATUS_SUCCESS:
21952 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21953 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21954 return WDI_STATUS_SUCCESS;
21955 case eHAL_STATUS_FAILURE:
21956 return WDI_STATUS_E_FAILURE;
21957 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WDI_STATUS_MEM_FAILURE;
21959 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 default:
21962 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21963 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021964
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021966}/*WDI_HAL_2_WDI_STATUS*/
21967
21968/*Convert WDI request type into HAL request type*/
21969WPT_STATIC WPT_INLINE tHalHostMsgType
21970WDI_2_HAL_REQ_TYPE
21971(
21972 WDI_RequestEnumType wdiReqType
21973)
21974{
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021976 the chances of getting inlined*/
21977 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022003 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022004 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022005 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 return WLAN_HAL_RMV_STAKEY_REQ;
22014 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022015 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022022 case WDI_DEL_BA_REQ:
22023 return WLAN_HAL_DEL_BA_REQ;
22024#ifdef FEATURE_WLAN_CCX
22025 case WDI_TSM_STATS_REQ:
22026 return WLAN_HAL_TSM_STATS_REQ;
22027#endif
22028 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 case WDI_ADD_BA_SESSION_REQ:
22039 return WLAN_HAL_ADD_BA_SESSION_REQ;
22040 case WDI_TRIGGER_BA_REQ:
22041 return WLAN_HAL_TRIGGER_BA_REQ;
22042 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022043 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022044 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22047 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22048 case WDI_SET_MAX_TX_POWER_REQ:
22049 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022050 case WDI_SET_TX_POWER_REQ:
22051 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22053 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022054#ifdef FEATURE_WLAN_TDLS
22055 case WDI_TDLS_LINK_ESTABLISH_REQ:
22056 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22057#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022059 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022069 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022072 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 case WDI_REM_BEACON_FILTER_REQ:
22079 return WLAN_HAL_REM_BCN_FILTER_REQ;
22080 case WDI_SET_RSSI_THRESHOLDS_REQ:
22081 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22082 case WDI_HOST_OFFLOAD_REQ:
22083 return WLAN_HAL_HOST_OFFLOAD_REQ;
22084 case WDI_WOWL_ADD_BC_PTRN_REQ:
22085 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22086 case WDI_WOWL_DEL_BC_PTRN_REQ:
22087 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22088 case WDI_WOWL_ENTER_REQ:
22089 return WLAN_HAL_ENTER_WOWL_REQ;
22090 case WDI_WOWL_EXIT_REQ:
22091 return WLAN_HAL_EXIT_WOWL_REQ;
22092 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22093 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22094 case WDI_NV_DOWNLOAD_REQ:
22095 return WLAN_HAL_DOWNLOAD_NV_REQ;
22096 case WDI_FLUSH_AC_REQ:
22097 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22098 case WDI_BTAMP_EVENT_REQ:
22099 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22100#ifdef WLAN_FEATURE_VOWIFI_11R
22101 case WDI_AGGR_ADD_TS_REQ:
22102 return WLAN_HAL_AGGR_ADD_TS_REQ;
22103#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 case WDI_FTM_CMD_REQ:
22105 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 case WDI_ADD_STA_SELF_REQ:
22107 return WLAN_HAL_ADD_STA_SELF_REQ;
22108 case WDI_DEL_STA_SELF_REQ:
22109 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022110#ifdef FEATURE_OEM_DATA_SUPPORT
22111 case WDI_START_OEM_DATA_REQ:
22112 return WLAN_HAL_START_OEM_DATA_REQ;
22113#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 case WDI_HOST_RESUME_REQ:
22115 return WLAN_HAL_HOST_RESUME_REQ;
22116 case WDI_HOST_SUSPEND_IND:
22117 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022118 case WDI_TRAFFIC_STATS_IND:
22119 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022120#ifdef WLAN_FEATURE_11W
22121 case WDI_EXCLUDE_UNENCRYPTED_IND:
22122 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22123#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 case WDI_KEEP_ALIVE_REQ:
22125 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022126#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022127 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22128 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022129#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022130#ifdef FEATURE_WLAN_SCAN_PNO
22131 case WDI_SET_PREF_NETWORK_REQ:
22132 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22133 case WDI_SET_RSSI_FILTER_REQ:
22134 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22135 case WDI_UPDATE_SCAN_PARAMS_REQ:
22136 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22137#endif // FEATURE_WLAN_SCAN_PNO
22138 case WDI_SET_TX_PER_TRACKING_REQ:
22139 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22140#ifdef WLAN_FEATURE_PACKET_FILTERING
22141 case WDI_8023_MULTICAST_LIST_REQ:
22142 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22143 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22146 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22147 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22148 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22149#endif // WLAN_FEATURE_PACKET_FILTERING
22150 case WDI_HAL_DUMP_CMD_REQ:
22151 return WLAN_HAL_DUMP_COMMAND_REQ;
22152#ifdef WLAN_FEATURE_GTK_OFFLOAD
22153 case WDI_GTK_OFFLOAD_REQ:
22154 return WLAN_HAL_GTK_OFFLOAD_REQ;
22155 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22156 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22157#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22158
22159 case WDI_INIT_SCAN_CON_REQ:
22160 return WLAN_HAL_INIT_SCAN_CON_REQ;
22161 case WDI_SET_POWER_PARAMS_REQ:
22162 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22163 case WDI_SET_TM_LEVEL_REQ:
22164 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22165 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22166 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022167#ifdef WLAN_FEATURE_11AC
22168 case WDI_UPDATE_VHT_OP_MODE_REQ:
22169 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22170#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022171 case WDI_GET_ROAM_RSSI_REQ:
22172 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022173 case WDI_DHCP_START_IND:
22174 return WLAN_HAL_DHCP_START_IND;
22175 case WDI_DHCP_STOP_IND:
22176 return WLAN_HAL_DHCP_STOP_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022178 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022180
Jeff Johnson295189b2012-06-20 16:38:30 -070022181}/*WDI_2_HAL_REQ_TYPE*/
22182
22183/*Convert WDI response type into HAL response type*/
22184WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22185HAL_2_WDI_RSP_TYPE
22186(
22187 tHalHostMsgType halMsg
22188)
22189{
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 the chances of getting inlined*/
22192 switch( halMsg )
22193 {
22194 case WLAN_HAL_START_RSP:
22195 return WDI_START_RESP;
22196 case WLAN_HAL_STOP_RSP:
22197 return WDI_STOP_RESP;
22198 case WLAN_HAL_INIT_SCAN_RSP:
22199 return WDI_INIT_SCAN_RESP;
22200 case WLAN_HAL_START_SCAN_RSP:
22201 return WDI_START_SCAN_RESP;
22202 case WLAN_HAL_END_SCAN_RSP:
22203 return WDI_END_SCAN_RESP;
22204 case WLAN_HAL_FINISH_SCAN_RSP:
22205 return WDI_FINISH_SCAN_RESP;
22206 case WLAN_HAL_CONFIG_STA_RSP:
22207 return WDI_CONFIG_STA_RESP;
22208 case WLAN_HAL_DELETE_STA_RSP:
22209 return WDI_DEL_STA_RESP;
22210 case WLAN_HAL_CONFIG_BSS_RSP:
22211 return WDI_CONFIG_BSS_RESP;
22212 case WLAN_HAL_DELETE_BSS_RSP:
22213 return WDI_DEL_BSS_RESP;
22214 case WLAN_HAL_JOIN_RSP:
22215 return WDI_JOIN_RESP;
22216 case WLAN_HAL_POST_ASSOC_RSP:
22217 return WDI_POST_ASSOC_RESP;
22218 case WLAN_HAL_SET_BSSKEY_RSP:
22219 return WDI_SET_BSS_KEY_RESP;
22220 case WLAN_HAL_SET_STAKEY_RSP:
22221 return WDI_SET_STA_KEY_RESP;
22222 case WLAN_HAL_RMV_BSSKEY_RSP:
22223 return WDI_RMV_BSS_KEY_RESP;
22224 case WLAN_HAL_RMV_STAKEY_RSP:
22225 return WDI_RMV_STA_KEY_RESP;
22226 case WLAN_HAL_SET_BCASTKEY_RSP:
22227 return WDI_SET_STA_BCAST_KEY_RESP;
22228 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22229 // return WDI_RMV_STA_BCAST_KEY_RESP;
22230 case WLAN_HAL_ADD_TS_RSP:
22231 return WDI_ADD_TS_RESP;
22232 case WLAN_HAL_DEL_TS_RSP:
22233 return WDI_DEL_TS_RESP;
22234 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22235 return WDI_UPD_EDCA_PRMS_RESP;
22236 case WLAN_HAL_ADD_BA_RSP:
22237 return WDI_ADD_BA_RESP;
22238 case WLAN_HAL_DEL_BA_RSP:
22239 return WDI_DEL_BA_RESP;
22240#ifdef FEATURE_WLAN_CCX
22241 case WLAN_HAL_TSM_STATS_RSP:
22242 return WDI_TSM_STATS_RESP;
22243#endif
22244 case WLAN_HAL_CH_SWITCH_RSP:
22245 return WDI_CH_SWITCH_RESP;
22246 case WLAN_HAL_SET_LINK_ST_RSP:
22247 return WDI_SET_LINK_ST_RESP;
22248 case WLAN_HAL_GET_STATS_RSP:
22249 return WDI_GET_STATS_RESP;
22250 case WLAN_HAL_UPDATE_CFG_RSP:
22251 return WDI_UPDATE_CFG_RESP;
22252 case WLAN_HAL_ADD_BA_SESSION_RSP:
22253 return WDI_ADD_BA_SESSION_RESP;
22254 case WLAN_HAL_TRIGGER_BA_RSP:
22255 return WDI_TRIGGER_BA_RESP;
22256 case WLAN_HAL_UPDATE_BEACON_RSP:
22257 return WDI_UPD_BCON_PRMS_RESP;
22258 case WLAN_HAL_SEND_BEACON_RSP:
22259 return WDI_SND_BCON_RESP;
22260 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22261 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22262 /*Indications*/
22263 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22264 return WDI_HAL_RSSI_NOTIFICATION_IND;
22265 case WLAN_HAL_MISSED_BEACON_IND:
22266 return WDI_HAL_MISSED_BEACON_IND;
22267 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22268 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22269 case WLAN_HAL_MIC_FAILURE_IND:
22270 return WDI_HAL_MIC_FAILURE_IND;
22271 case WLAN_HAL_FATAL_ERROR_IND:
22272 return WDI_HAL_FATAL_ERROR_IND;
22273 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22274 return WDI_HAL_DEL_STA_IND;
22275 case WLAN_HAL_COEX_IND:
22276 return WDI_HAL_COEX_IND;
22277 case WLAN_HAL_OTA_TX_COMPL_IND:
22278 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 case WLAN_HAL_P2P_NOA_ATTR_IND:
22280 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022281 case WLAN_HAL_P2P_NOA_START_IND:
22282 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 case WLAN_HAL_TX_PER_HIT_IND:
22284 return WDI_HAL_TX_PER_HIT_IND;
22285 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22286 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022287 case WLAN_HAL_SET_TX_POWER_RSP:
22288 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 case WLAN_HAL_SET_P2P_GONOA_RSP:
22290 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022291#ifdef FEATURE_WLAN_TDLS
22292 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22293 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22294 case WLAN_HAL_TDLS_IND:
22295 return WDI_HAL_TDLS_IND;
22296#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022297 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022298 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022301 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022308 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022312 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22316 return WDI_SET_BEACON_FILTER_RESP;
22317 case WLAN_HAL_REM_BCN_FILTER_RSP:
22318 return WDI_REM_BEACON_FILTER_RESP;
22319 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22320 return WDI_SET_RSSI_THRESHOLDS_RESP;
22321 case WLAN_HAL_HOST_OFFLOAD_RSP:
22322 return WDI_HOST_OFFLOAD_RESP;
22323 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22324 return WDI_WOWL_ADD_BC_PTRN_RESP;
22325 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22326 return WDI_WOWL_DEL_BC_PTRN_RESP;
22327 case WLAN_HAL_ENTER_WOWL_RSP:
22328 return WDI_WOWL_ENTER_RESP;
22329 case WLAN_HAL_EXIT_WOWL_RSP:
22330 return WDI_WOWL_EXIT_RESP;
22331 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22332 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22333 case WLAN_HAL_DOWNLOAD_NV_RSP:
22334 return WDI_NV_DOWNLOAD_RESP;
22335 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22336 return WDI_FLUSH_AC_RESP;
22337 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22338 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 case WLAN_HAL_PROCESS_PTT_RSP:
22340 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 case WLAN_HAL_ADD_STA_SELF_RSP:
22342 return WDI_ADD_STA_SELF_RESP;
22343case WLAN_HAL_DEL_STA_SELF_RSP:
22344 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022345#ifdef FEATURE_OEM_DATA_SUPPORT
22346 case WLAN_HAL_START_OEM_DATA_RSP:
22347 return WDI_START_OEM_DATA_RESP;
22348#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022349 case WLAN_HAL_HOST_RESUME_RSP:
22350 return WDI_HOST_RESUME_RESP;
22351 case WLAN_HAL_KEEP_ALIVE_RSP:
22352 return WDI_KEEP_ALIVE_RESP;
22353#ifdef FEATURE_WLAN_SCAN_PNO
22354 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22355 return WDI_SET_PREF_NETWORK_RESP;
22356 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022357 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22359 return WDI_UPDATE_SCAN_PARAMS_RESP;
22360 case WLAN_HAL_PREF_NETW_FOUND_IND:
22361 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22362#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022363#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022364 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22365 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022366#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22368 return WDI_SET_TX_PER_TRACKING_RESP;
22369#ifdef WLAN_FEATURE_PACKET_FILTERING
22370 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22371 return WDI_8023_MULTICAST_LIST_RESP;
22372 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22373 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22374 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22375 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22376 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22377 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22378#endif // WLAN_FEATURE_PACKET_FILTERING
22379
22380 case WLAN_HAL_DUMP_COMMAND_RSP:
22381 return WDI_HAL_DUMP_CMD_RESP;
22382 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22383 return WDI_SET_POWER_PARAMS_RESP;
22384#ifdef WLAN_FEATURE_VOWIFI_11R
22385 case WLAN_HAL_AGGR_ADD_TS_RSP:
22386 return WDI_AGGR_ADD_TS_RESP;
22387#endif
22388
22389#ifdef WLAN_FEATURE_GTK_OFFLOAD
22390 case WLAN_HAL_GTK_OFFLOAD_RSP:
22391 return WDI_GTK_OFFLOAD_RESP;
22392 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22393 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22394#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22395#ifdef WLAN_WAKEUP_EVENTS
22396 case WLAN_HAL_WAKE_REASON_IND:
22397 return WDI_HAL_WAKE_REASON_IND;
22398#endif // WLAN_WAKEUP_EVENTS
22399
22400 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22401 return WDI_SET_TM_LEVEL_RESP;
22402 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22403 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022404#ifdef WLAN_FEATURE_11AC
22405 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22406 return WDI_UPDATE_VHT_OP_MODE_RESP;
22407#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022408#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22409 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22410 return WDI_GET_ROAM_RSSI_RESP;
22411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 }
22415
22416}/*HAL_2_WDI_RSP_TYPE*/
22417
22418
22419/*Convert WDI driver type into HAL driver type*/
22420WPT_STATIC WPT_INLINE tDriverType
22421WDI_2_HAL_DRV_TYPE
22422(
22423 WDI_DriverType wdiDriverType
22424)
22425{
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 the chances of getting inlined*/
22428 switch( wdiDriverType )
22429 {
22430 case WDI_DRIVER_TYPE_PRODUCTION:
22431 return eDRIVER_TYPE_PRODUCTION;
22432 case WDI_DRIVER_TYPE_MFG:
22433 return eDRIVER_TYPE_MFG;
22434 case WDI_DRIVER_TYPE_DVT:
22435 return eDRIVER_TYPE_DVT;
22436 }
22437
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439}/*WDI_2_HAL_DRV_TYPE*/
22440
22441
22442/*Convert WDI stop reason into HAL stop reason*/
22443WPT_STATIC WPT_INLINE tHalStopType
22444WDI_2_HAL_STOP_REASON
22445(
22446 WDI_StopType wdiDriverType
22447)
22448{
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 the chances of getting inlined*/
22451 switch( wdiDriverType )
22452 {
22453 case WDI_STOP_TYPE_SYS_RESET:
22454 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022455 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22456 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 case WDI_STOP_TYPE_RF_KILL:
22458 return HAL_STOP_TYPE_RF_KILL;
22459 }
22460
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022462}/*WDI_2_HAL_STOP_REASON*/
22463
22464
22465/*Convert WDI scan mode type into HAL scan mode type*/
22466WPT_STATIC WPT_INLINE eHalSysMode
22467WDI_2_HAL_SCAN_MODE
22468(
22469 WDI_ScanMode wdiScanMode
22470)
22471{
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 the chances of getting inlined*/
22474 switch( wdiScanMode )
22475 {
22476 case WDI_SCAN_MODE_NORMAL:
22477 return eHAL_SYS_MODE_NORMAL;
22478 case WDI_SCAN_MODE_LEARN:
22479 return eHAL_SYS_MODE_LEARN;
22480 case WDI_SCAN_MODE_SCAN:
22481 return eHAL_SYS_MODE_SCAN;
22482 case WDI_SCAN_MODE_PROMISC:
22483 return eHAL_SYS_MODE_PROMISC;
22484 case WDI_SCAN_MODE_SUSPEND_LINK:
22485 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022486 case WDI_SCAN_MODE_ROAM_SCAN:
22487 return eHAL_SYS_MODE_ROAM_SCAN;
22488 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22489 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 }
22491
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022493}/*WDI_2_HAL_SCAN_MODE*/
22494
22495/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022496WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022497WDI_2_HAL_SEC_CH_OFFSET
22498(
22499 WDI_HTSecondaryChannelOffset wdiSecChOffset
22500)
22501{
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 the chances of getting inlined*/
22504 switch( wdiSecChOffset )
22505 {
22506 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22512#ifdef WLAN_FEATURE_11AC
22513 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22514 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22515 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22516 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22517 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22518 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22519 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22520 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22521 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22522 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22523 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22524 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22525 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22526 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22527#endif
22528 default:
22529 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 }
22531
Jeff Johnsone7245742012-09-05 17:12:55 -070022532 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022533}/*WDI_2_HAL_SEC_CH_OFFSET*/
22534
22535/*Convert WDI BSS type into HAL BSS type*/
22536WPT_STATIC WPT_INLINE tSirBssType
22537WDI_2_HAL_BSS_TYPE
22538(
22539 WDI_BssType wdiBSSType
22540)
22541{
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 the chances of getting inlined*/
22544 switch( wdiBSSType )
22545 {
22546 case WDI_INFRASTRUCTURE_MODE:
22547 return eSIR_INFRASTRUCTURE_MODE;
22548 case WDI_INFRA_AP_MODE:
22549 return eSIR_INFRA_AP_MODE;
22550 case WDI_IBSS_MODE:
22551 return eSIR_IBSS_MODE;
22552 case WDI_BTAMP_STA_MODE:
22553 return eSIR_BTAMP_STA_MODE;
22554 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 case WDI_BSS_AUTO_MODE:
22557 return eSIR_AUTO_MODE;
22558 }
22559
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022561}/*WDI_2_HAL_BSS_TYPE*/
22562
22563/*Convert WDI NW type into HAL NW type*/
22564WPT_STATIC WPT_INLINE tSirNwType
22565WDI_2_HAL_NW_TYPE
22566(
22567 WDI_NwType wdiNWType
22568)
22569{
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 the chances of getting inlined*/
22572 switch( wdiNWType )
22573 {
22574 case WDI_11A_NW_TYPE:
22575 return eSIR_11A_NW_TYPE;
22576 case WDI_11B_NW_TYPE:
22577 return eSIR_11B_NW_TYPE;
22578 case WDI_11G_NW_TYPE:
22579 return eSIR_11G_NW_TYPE;
22580 case WDI_11N_NW_TYPE:
22581 return eSIR_11N_NW_TYPE;
22582 }
22583
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022585}/*WDI_2_HAL_NW_TYPE*/
22586
22587/*Convert WDI chanel bonding type into HAL cb type*/
22588WPT_STATIC WPT_INLINE ePhyChanBondState
22589WDI_2_HAL_CB_STATE
22590(
22591 WDI_PhyChanBondState wdiCbState
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 switch ( wdiCbState )
22597 {
22598 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22599 return PHY_SINGLE_CHANNEL_CENTERED;
22600 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22601 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22602 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22603 return PHY_DOUBLE_CHANNEL_CENTERED;
22604 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22605 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022606#ifdef WLAN_FEATURE_11AC
22607 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22608 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22609 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22610 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22611 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22612 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22613 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22614 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22615 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22616 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22617 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22618 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22619 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22620 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22621#endif
22622 case WDI_MAX_CB_STATE:
22623 default:
22624 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022626
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 return PHY_CHANNEL_BONDING_STATE_MAX;
22628}/*WDI_2_HAL_CB_STATE*/
22629
22630/*Convert WDI chanel bonding type into HAL cb type*/
22631WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22632WDI_2_HAL_HT_OPER_MODE
22633(
22634 WDI_HTOperatingMode wdiHTOperMode
22635)
22636{
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022638 the chances of getting inlined*/
22639 switch ( wdiHTOperMode )
22640 {
22641 case WDI_HT_OP_MODE_PURE:
22642 return eSIR_HT_OP_MODE_PURE;
22643 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22644 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22645 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22646 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22647 case WDI_HT_OP_MODE_MIXED:
22648 return eSIR_HT_OP_MODE_MIXED;
22649 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022650
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 return eSIR_HT_OP_MODE_MAX;
22652}/*WDI_2_HAL_HT_OPER_MODE*/
22653
22654/*Convert WDI mimo PS type into HAL mimo PS type*/
22655WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22656WDI_2_HAL_MIMO_PS
22657(
22658 WDI_HTMIMOPowerSaveState wdiHTOperMode
22659)
22660{
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 the chances of getting inlined*/
22663 switch ( wdiHTOperMode )
22664 {
22665 case WDI_HT_MIMO_PS_STATIC:
22666 return eSIR_HT_MIMO_PS_STATIC;
22667 case WDI_HT_MIMO_PS_DYNAMIC:
22668 return eSIR_HT_MIMO_PS_DYNAMIC;
22669 case WDI_HT_MIMO_PS_NA:
22670 return eSIR_HT_MIMO_PS_NA;
22671 case WDI_HT_MIMO_PS_NO_LIMIT:
22672 return eSIR_HT_MIMO_PS_NO_LIMIT;
22673 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022674
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 return eSIR_HT_MIMO_PS_MAX;
22676}/*WDI_2_HAL_MIMO_PS*/
22677
22678/*Convert WDI ENC type into HAL ENC type*/
22679WPT_STATIC WPT_INLINE tAniEdType
22680WDI_2_HAL_ENC_TYPE
22681(
22682 WDI_EncryptType wdiEncType
22683)
22684{
Jeff Johnsone7245742012-09-05 17:12:55 -070022685 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 the chances of getting inlined*/
22687 switch ( wdiEncType )
22688 {
22689 case WDI_ENCR_NONE:
22690 return eSIR_ED_NONE;
22691
22692 case WDI_ENCR_WEP40:
22693 return eSIR_ED_WEP40;
22694
22695 case WDI_ENCR_WEP104:
22696 return eSIR_ED_WEP104;
22697
22698 case WDI_ENCR_TKIP:
22699 return eSIR_ED_TKIP;
22700
22701 case WDI_ENCR_CCMP:
22702 return eSIR_ED_CCMP;
22703
22704 case WDI_ENCR_AES_128_CMAC:
22705 return eSIR_ED_AES_128_CMAC;
22706#if defined(FEATURE_WLAN_WAPI)
22707 case WDI_ENCR_WPI:
22708 return eSIR_ED_WPI;
22709#endif
22710 default:
22711 return eSIR_ED_NOT_IMPLEMENTED;
22712 }
22713
22714}/*WDI_2_HAL_ENC_TYPE*/
22715
22716/*Convert WDI WEP type into HAL WEP type*/
22717WPT_STATIC WPT_INLINE tAniWepType
22718WDI_2_HAL_WEP_TYPE
22719(
22720 WDI_WepType wdiWEPType
22721)
22722{
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022724 the chances of getting inlined*/
22725 switch ( wdiWEPType )
22726 {
22727 case WDI_WEP_STATIC:
22728 return eSIR_WEP_STATIC;
22729
22730 case WDI_WEP_DYNAMIC:
22731 return eSIR_WEP_DYNAMIC;
22732 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022733
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 return eSIR_WEP_MAX;
22735}/*WDI_2_HAL_WEP_TYPE*/
22736
22737WPT_STATIC WPT_INLINE tSirLinkState
22738WDI_2_HAL_LINK_STATE
22739(
22740 WDI_LinkStateType wdiLinkState
22741)
22742{
Jeff Johnsone7245742012-09-05 17:12:55 -070022743 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022744 the chances of getting inlined*/
22745 switch ( wdiLinkState )
22746 {
22747 case WDI_LINK_IDLE_STATE:
22748 return eSIR_LINK_IDLE_STATE;
22749
22750 case WDI_LINK_PREASSOC_STATE:
22751 return eSIR_LINK_PREASSOC_STATE;
22752
22753 case WDI_LINK_POSTASSOC_STATE:
22754 return eSIR_LINK_POSTASSOC_STATE;
22755
22756 case WDI_LINK_AP_STATE:
22757 return eSIR_LINK_AP_STATE;
22758
22759 case WDI_LINK_IBSS_STATE:
22760 return eSIR_LINK_IBSS_STATE;
22761
22762 case WDI_LINK_BTAMP_PREASSOC_STATE:
22763 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22764
22765 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22766 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22767
22768 case WDI_LINK_BTAMP_AP_STATE:
22769 return eSIR_LINK_BTAMP_AP_STATE;
22770
22771 case WDI_LINK_BTAMP_STA_STATE:
22772 return eSIR_LINK_BTAMP_STA_STATE;
22773
22774 case WDI_LINK_LEARN_STATE:
22775 return eSIR_LINK_LEARN_STATE;
22776
22777 case WDI_LINK_SCAN_STATE:
22778 return eSIR_LINK_SCAN_STATE;
22779
22780 case WDI_LINK_FINISH_SCAN_STATE:
22781 return eSIR_LINK_FINISH_SCAN_STATE;
22782
22783 case WDI_LINK_INIT_CAL_STATE:
22784 return eSIR_LINK_INIT_CAL_STATE;
22785
22786 case WDI_LINK_FINISH_CAL_STATE:
22787 return eSIR_LINK_FINISH_CAL_STATE;
22788
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 case WDI_LINK_LISTEN_STATE:
22790 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022791
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022792 case WDI_LINK_SEND_ACTION_STATE:
22793 return eSIR_LINK_SEND_ACTION_STATE;
22794
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 default:
22796 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022797 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022798}
22799
Jeff Johnsone7245742012-09-05 17:12:55 -070022800/*Translate a STA Context from WDI into HAL*/
22801WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022802void
22803WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022804(
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 tConfigStaParams* phalConfigSta,
22806 WDI_ConfigStaReqInfoType* pwdiConfigSta
22807)
22808{
22809 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022810#ifdef WLAN_FEATURE_11AC
22811 /* Get the Version 1 Handler */
22812 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22813 if (WDI_getFwWlanFeatCaps(DOT11AC))
22814 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022815 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 }
22817#endif
22818 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 the chances of getting inlined*/
22820
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 wpalMemoryCopy(phalConfigSta->bssId,
22822 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22823
22824 wpalMemoryCopy(phalConfigSta->staMac,
22825 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022826
22827 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22828 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22829 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22830 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22831 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22832 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22833 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22834 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22835 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22836 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22837 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22838 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22839 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22840 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22841 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22842 phalConfigSta->action = pwdiConfigSta->wdiAction;
22843 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22844 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22845 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22846 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22847 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22848 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22849 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022850
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22852
Jeff Johnsone7245742012-09-05 17:12:55 -070022853 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022854 pwdiConfigSta->wdiSupportedRates.opRateMode;
22855 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22856 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022857 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22859 }
22860 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22861 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022862 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022863 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22864 }
22865 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22866 {
22867 phalConfigSta->supportedRates.aniLegacyRates[i] =
22868 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22869 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22872 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22873 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022875 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22876 }
22877 phalConfigSta->supportedRates.rxHighestDataRate =
22878 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22879
Jeff Johnsone7245742012-09-05 17:12:55 -070022880#ifdef WLAN_FEATURE_11AC
22881 if(phalConfigSta_V1 != NULL)
22882 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022883 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22884 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22885 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22886 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022887 }
22888#endif
22889
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022891
Jeff Johnsone7245742012-09-05 17:12:55 -070022892#ifdef WLAN_FEATURE_11AC
22893 if(phalConfigSta_V1 != NULL)
22894 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022895 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22896 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022897 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022898 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22899 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22900
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 }
22902#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022903}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022904
22905/*Translate a Rate set info from WDI into HAL*/
22906WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022907WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022908(
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 tSirMacRateSet* pHalRateSet,
22910 WDI_RateSet* pwdiRateSet
22911)
22912{
Jeff Johnsone7245742012-09-05 17:12:55 -070022913 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22915
22916 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22917 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22918
22919 for ( i = 0; i < pHalRateSet->numRates; i++ )
22920 {
22921 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22922 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022923
Jeff Johnson295189b2012-06-20 16:38:30 -070022924}/*WDI_CopyWDIRateSetToHALRateSet*/
22925
22926
22927/*Translate an EDCA Parameter Record from WDI into HAL*/
22928WPT_STATIC WPT_INLINE void
22929WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022930(
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 tSirMacEdcaParamRecord* phalEdcaParam,
22932 WDI_EdcaParamRecord* pWDIEdcaParam
22933)
22934{
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 the chances of getting inlined*/
22937
22938 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22939 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22940 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22941 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22942
22943 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22944 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22945 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22946}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22947
22948
22949/*Copy a management frame header from WDI fmt into HAL fmt*/
22950WPT_STATIC WPT_INLINE void
22951WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22952(
22953 tSirMacMgmtHdr* pmacMgmtHdr,
22954 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22955)
22956{
22957 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22958 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22959 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22960 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22961 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22962 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22963 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22964 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22965 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22966 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22967 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22968
22969 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22970 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22971
Jeff Johnsone7245742012-09-05 17:12:55 -070022972 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022974 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022976 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 pwdiMacMgmtHdr->bssId, 6);
22978
22979 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22980 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22981 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22982
22983}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22984
22985
22986/*Copy config bss parameters from WDI fmt into HAL fmt*/
22987WPT_STATIC WPT_INLINE void
22988WDI_CopyWDIConfigBSSToHALConfigBSS
22989(
22990 tConfigBssParams* phalConfigBSS,
22991 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22992)
22993{
22994
22995 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022996#ifdef WLAN_FEATURE_11AC
22997 /* Get the Version 1 Handler */
22998 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22999 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023000 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023001#endif
23002
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 wpalMemoryCopy( phalConfigBSS->bssId,
23004 pwdiConfigBSS->macBSSID,
23005 WDI_MAC_ADDR_LEN);
23006
23007#ifdef HAL_SELF_STA_PER_BSS
23008 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23009 pwdiConfigBSS->macSelfAddr,
23010 WDI_MAC_ADDR_LEN);
23011#endif
23012
23013 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23014
23015 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23016 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23017
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023019 pwdiConfigBSS->ucShortSlotTimeSupported;
23020 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23021 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23022 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23023 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23024 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23027 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23028 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23029 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23030 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23031 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23032 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23033 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23034 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23035 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23036 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23037
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 phalConfigBSS->htOperMode =
23039 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023040
23041 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23042 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23043 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23044 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23045
23046#ifdef WLAN_FEATURE_VOWIFI
23047 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23048#endif
23049
23050 /*! Used 32 as magic number because that is how the ssid is declared inside the
23051 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023052 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23054 pwdiConfigBSS->wdiSSID.ucLength : 32;
23055 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023056 pwdiConfigBSS->wdiSSID.sSSID,
23057 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023058
23059 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23060 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023061
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23063 &pwdiConfigBSS->wdiRateSet);
23064
23065 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23066
23067 if(phalConfigBSS->edcaParamsValid)
23068 {
23069 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23070 &pwdiConfigBSS->wdiBEEDCAParams);
23071 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23072 &pwdiConfigBSS->wdiBKEDCAParams);
23073 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23074 &pwdiConfigBSS->wdiVIEDCAParams);
23075 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23076 &pwdiConfigBSS->wdiVOEDCAParams);
23077 }
23078
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023080
23081 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23082
23083#ifdef WLAN_FEATURE_VOWIFI_11R
23084
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023086 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023087
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 if( phalConfigBSS->extSetStaKeyParamValid )
23089 {
23090 /*-----------------------------------------------------------------------
23091 Copy the STA Key parameters into the HAL message
23092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23095
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23098
23099 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23100
23101 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23102
23103 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23104
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23106 keyIndex++)
23107 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023108 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023109 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23110 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23111 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23112 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23113 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23114 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23121 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023122 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 WDI_MAX_KEY_LENGTH);
23124 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 }
23126 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23127 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023128 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023129 sizeof(phalConfigBSS->extSetStaKeyParam) );
23130 }
23131
23132#endif /*WLAN_FEATURE_VOWIFI_11R*/
23133
Jeff Johnsone7245742012-09-05 17:12:55 -070023134#ifdef WLAN_FEATURE_11AC
23135 if(phalConfigBSS_V1 != NULL)
23136 {
23137 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23138 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23139 }
23140#endif
23141
Jeff Johnson295189b2012-06-20 16:38:30 -070023142}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23143
23144
Jeff Johnsone7245742012-09-05 17:12:55 -070023145/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 pointed to by user data */
23147WPT_STATIC WPT_INLINE void
23148WDI_ExtractRequestCBFromEvent
23149(
23150 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 void** ppUserData
23153)
23154{
23155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23156 switch ( pEvent->wdiRequest )
23157 {
23158 case WDI_START_REQ:
23159 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23160 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23161 break;
23162 case WDI_STOP_REQ:
23163 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23164 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23165 break;
23166 case WDI_INIT_SCAN_REQ:
23167 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23168 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23169 break;
23170 case WDI_START_SCAN_REQ:
23171 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23172 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23173 break;
23174 case WDI_END_SCAN_REQ:
23175 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23176 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23177 break;
23178 case WDI_FINISH_SCAN_REQ:
23179 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23180 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23181 break;
23182 case WDI_JOIN_REQ:
23183 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23184 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23185 break;
23186 case WDI_CONFIG_BSS_REQ:
23187 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23188 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23189 break;
23190 case WDI_DEL_BSS_REQ:
23191 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23192 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23193 break;
23194 case WDI_POST_ASSOC_REQ:
23195 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23196 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23197 break;
23198 case WDI_DEL_STA_REQ:
23199 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23200 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23201 break;
23202 case WDI_DEL_STA_SELF_REQ:
23203 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23204 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23205 break;
23206
23207 case WDI_SET_BSS_KEY_REQ:
23208 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23209 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23210 break;
23211 case WDI_RMV_BSS_KEY_REQ:
23212 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23213 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23214 break;
23215 case WDI_SET_STA_KEY_REQ:
23216 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23217 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23218 break;
23219 case WDI_RMV_STA_KEY_REQ:
23220 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23221 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23222 break;
23223 case WDI_ADD_TS_REQ:
23224 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23225 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23226 break;
23227 case WDI_DEL_TS_REQ:
23228 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23229 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23230 break;
23231 case WDI_UPD_EDCA_PRMS_REQ:
23232 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23233 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23234 break;
23235 case WDI_ADD_BA_SESSION_REQ:
23236 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23237 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23238 break;
23239 case WDI_DEL_BA_REQ:
23240 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23241 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23242 break;
23243#ifdef FEATURE_WLAN_CCX
23244 case WDI_TSM_STATS_REQ:
23245 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23246 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23247 break;
23248#endif
23249 case WDI_CH_SWITCH_REQ:
23250 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23251 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23252 break;
23253 case WDI_CONFIG_STA_REQ:
23254 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23255 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23256 break;
23257 case WDI_SET_LINK_ST_REQ:
23258 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23259 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23260 break;
23261 case WDI_GET_STATS_REQ:
23262 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23263 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23264 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023265#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23266 case WDI_GET_ROAM_RSSI_REQ:
23267 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23268 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23269 break;
23270#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023271 case WDI_UPDATE_CFG_REQ:
23272 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23273 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23274 break;
23275 case WDI_ADD_BA_REQ:
23276 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23277 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23278 break;
23279 case WDI_TRIGGER_BA_REQ:
23280 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23281 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23282 break;
23283 case WDI_UPD_BCON_PRMS_REQ:
23284 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23285 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23286 break;
23287 case WDI_SND_BCON_REQ:
23288 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23289 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23290 break;
23291 case WDI_ENTER_BMPS_REQ:
23292 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23293 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23294 break;
23295 case WDI_EXIT_BMPS_REQ:
23296 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23297 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23298 break;
23299 case WDI_ENTER_UAPSD_REQ:
23300 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23301 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23302 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023303 case WDI_EXIT_UAPSD_REQ:
23304 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23305 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23306 break;
23307 case WDI_SET_UAPSD_PARAM_REQ:
23308 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23309 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23310 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 case WDI_UPDATE_UAPSD_PARAM_REQ:
23312 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23313 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23314 break;
23315 case WDI_CONFIGURE_RXP_FILTER_REQ:
23316 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23317 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23318 break;
23319 case WDI_SET_BEACON_FILTER_REQ:
23320 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23321 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23322 break;
23323 case WDI_REM_BEACON_FILTER_REQ:
23324 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23325 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 case WDI_SET_RSSI_THRESHOLDS_REQ:
23328 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23329 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23330 break;
23331 case WDI_HOST_OFFLOAD_REQ:
23332 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23333 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23334 break;
23335 case WDI_WOWL_ADD_BC_PTRN_REQ:
23336 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23337 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23338 break;
23339 case WDI_WOWL_DEL_BC_PTRN_REQ:
23340 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23341 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23342 break;
23343 case WDI_WOWL_ENTER_REQ:
23344 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23345 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23346 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023347 case WDI_WOWL_EXIT_REQ:
23348 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23349 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23350 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23352 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23353 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23354 break;
23355 case WDI_FLUSH_AC_REQ:
23356 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23357 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23358 break;
23359 case WDI_BTAMP_EVENT_REQ:
23360 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23361 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23362 break;
23363 case WDI_KEEP_ALIVE_REQ:
23364 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23365 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23366 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023367#if defined FEATURE_WLAN_SCAN_PNO
23368 case WDI_SET_PREF_NETWORK_REQ:
23369 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23370 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23371 break;
23372 case WDI_SET_RSSI_FILTER_REQ:
23373 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23374 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23375 break;
23376 case WDI_UPDATE_SCAN_PARAMS_REQ:
23377 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23378 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23379 break;
23380#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 case WDI_SET_TX_PER_TRACKING_REQ:
23382 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23383 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023384 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023385#if defined WLAN_FEATURE_PACKET_FILTERING
23386 case WDI_8023_MULTICAST_LIST_REQ:
23387 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23388 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23389 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023390 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23391 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23392 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23393 break;
23394 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23395 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23396 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23397 break;
23398 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23399 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23400 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23401 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023402#endif
23403 case WDI_SET_POWER_PARAMS_REQ:
23404 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23405 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23406 break;
23407#if defined WLAN_FEATURE_GTK_OFFLOAD
23408 case WDI_GTK_OFFLOAD_REQ:
23409 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23410 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23411 break;
23412 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23413 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23414 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23415 break;
23416#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023417
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 default:
23419 *ppfnReqCB = NULL;
23420 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023421 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023422 }
23423}/*WDI_ExtractRequestCBFromEvent*/
23424
23425
23426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023427 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 frame xtl is enabled for a particular STA.
23429
23430 WDI_PostAssocReq must have been called.
23431
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 @param uSTAIdx: STA index
23433
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 @see WDI_PostAssocReq
23435 @return Result of the function call
23436*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023437wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023438WDI_IsHwFrameTxTranslationCapable
23439(
23440 wpt_uint8 uSTAIdx
23441)
23442{
Jeff Johnsone7245742012-09-05 17:12:55 -070023443 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 uma value*/
23445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 ------------------------------------------------------------------------*/
23448 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23449 {
23450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23451 "WDI API call before module is initialized - Fail request");
23452
Jeff Johnsone7245742012-09-05 17:12:55 -070023453 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 }
23455
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023456#ifdef WLAN_SOFTAP_VSTA_FEATURE
23457 if (IS_VSTA_IDX(uSTAIdx))
23458 {
23459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23460 "STA %d is a Virtual STA, "
23461 "HW frame translation disabled", uSTAIdx);
23462 return eWLAN_PAL_FALSE;
23463 }
23464#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023465
Jeff Johnson295189b2012-06-20 16:38:30 -070023466 return gWDICb.bFrameTransEnabled;
23467}/*WDI_IsHwFrameTxTranslationCapable*/
23468
23469#ifdef FEATURE_WLAN_SCAN_PNO
23470/**
23471 @brief WDI_SetPreferredNetworkList
23472
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023475
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 wdiPNOScanCb: callback for passing back the response
23477 of the Set PNO operation received from the
23478 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023479
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 callback
23482
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 @return Result of the function call
23484*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023485WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023486WDI_SetPreferredNetworkReq
23487(
23488 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23489 WDI_PNOScanCb wdiPNOScanCb,
23490 void* pUserData
23491)
23492{
23493 WDI_EventInfoType wdiEventData = {{0}};
23494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23495
23496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 ------------------------------------------------------------------------*/
23499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23500 {
23501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23502 "WDI API call before module is initialized - Fail request");
23503
Jeff Johnsone7245742012-09-05 17:12:55 -070023504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 }
23506
23507 /*------------------------------------------------------------------------
23508 Fill in Event data and post to the Main FSM
23509 ------------------------------------------------------------------------*/
23510 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023511 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 wdiEventData.pUserData = pUserData;
23515
23516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23517}
23518
23519
23520/**
23521 @brief WDI_SetRssiFilterReq
23522
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023525
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 wdiRssiFilterCb: callback for passing back the response
23527 of the Set RSSI Filter operation received from the
23528 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023529
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023531 callback
23532
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 @return Result of the function call
23534*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023536WDI_SetRssiFilterReq
23537(
23538 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23539 WDI_RssiFilterCb wdiRssiFilterCb,
23540 void* pUserData
23541)
23542{
23543 WDI_EventInfoType wdiEventData = {{0}};
23544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23545
23546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 ------------------------------------------------------------------------*/
23549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23550 {
23551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23552 "WDI API call before module is initialized - Fail request");
23553
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 }
23556
23557 /*------------------------------------------------------------------------
23558 Fill in Event data and post to the Main FSM
23559 ------------------------------------------------------------------------*/
23560 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023561 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 wdiEventData.pUserData = pUserData;
23565
23566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23567}/*WDI_SetRssiFilterReq*/
23568
23569/**
23570 @brief WDI_UpdateScanParamsReq
23571
Jeff Johnsone7245742012-09-05 17:12:55 -070023572 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023574
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 wdiUpdateScanParamsCb: callback for passing back the response
23576 of the Set PNO operation received from the
23577 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023578
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023580 callback
23581
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 @return Result of the function call
23583*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023585WDI_UpdateScanParamsReq
23586(
23587 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23588 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23589 void* pUserData
23590)
23591{
23592 WDI_EventInfoType wdiEventData = {{0}};
23593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23594
23595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 ------------------------------------------------------------------------*/
23598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23599 {
23600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23601 "WDI API call before module is initialized - Fail request");
23602
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 }
23605
23606 /*------------------------------------------------------------------------
23607 Fill in Event data and post to the Main FSM
23608 ------------------------------------------------------------------------*/
23609 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 wdiEventData.pUserData = pUserData;
23614
23615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23616}
23617
23618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023621
23622 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 pwdiPNOScanReqParams: pointer to the info received
23624 from upper layers
23625 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 and its size
23627
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 @return Result of the function call
23629*/
23630
23631WDI_Status
23632WDI_PackPreferredNetworkList
23633(
23634 WDI_ControlBlockType* pWDICtx,
23635 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23636 wpt_uint8** ppSendBuffer,
23637 wpt_uint16* pSize
23638)
23639{
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 wpt_uint16 usDataOffset = 0;
23642 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023643 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 /*-----------------------------------------------------------------------
23646 Get message buffer
23647 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023648 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023649 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023651 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 {
23653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23654 "Unable to get send buffer in Set PNO req %x ",
23655 pwdiPNOScanReqParams);
23656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023658 }
23659
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023660 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23661
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 /*-------------------------------------------------------------------------
23663 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23664 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023665 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023667 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23669
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023670 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023671 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023673 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23675
23676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23679 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23680 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23681
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023682 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 {
23684 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023685 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23687
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023688 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023690 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023691
23692 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023693 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023695
23696 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023697 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023699
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023702 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023703 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23704 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23705 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23706 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023707
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023708 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023710 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023711
23712 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023713 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23715
23716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023718 pPrefNetwListParams->aNetworks[i].ssId.length,
23719 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 }
23721
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023722 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023723 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23725 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23726 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23727
23728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023730 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23732 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23733
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023734 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023736 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023738 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23740 }
23741
23742 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023743 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23745 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23746 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023748
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023749 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023751 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023752
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023753 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23755 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23756 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023759 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023761 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023762
23763 /*Set the output values*/
23764 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023766
23767 return WDI_STATUS_SUCCESS;
23768}/*WDI_PackPreferredNetworkList*/
23769
23770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023773
23774 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 pwdiPNOScanReqParams: pointer to the info received
23776 from upper layers
23777 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023778 and its size
23779
Jeff Johnson295189b2012-06-20 16:38:30 -070023780 @return Result of the function call
23781*/
23782
23783WDI_Status
23784WDI_PackPreferredNetworkListNew
23785(
23786 WDI_ControlBlockType* pWDICtx,
23787 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23788 wpt_uint8** ppSendBuffer,
23789 wpt_uint16* pSize
23790)
23791{
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 wpt_uint16 usDataOffset = 0;
23794 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023795 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023797
23798 /*-----------------------------------------------------------------------
23799 Get message buffer
23800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023802 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023804 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 {
23806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23807 "Unable to get send buffer in Set PNO req %x ",
23808 pwdiPNOScanReqParams);
23809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 }
23812
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023813 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23814
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 /*-------------------------------------------------------------------------
23816 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23817 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023818 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023820 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23822
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023823 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023826 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023827 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23828
23829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23832 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23833 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23834
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023835 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 {
23837 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023838 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23840
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023841 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023843 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023844
23845 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023846 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848
23849 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023850 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023852
23853 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023854 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023856
Jeff Johnsone7245742012-09-05 17:12:55 -070023857 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023859 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23861
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023862 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023864 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023865
23866 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023867 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23869
23870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023871 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023872 pPrefNetwListParams->aNetworks[i].ssId.length,
23873 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 }
23875
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023876 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23879 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23880 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23881
23882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023884 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23886 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23887
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023888 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023890 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023892 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23894 }
23895
23896 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023897 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023898 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23899 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23900 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023902
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023903 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023905 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023906
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023907 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23909 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23910 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023912
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023913 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023915 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023916
Jeff Johnson295189b2012-06-20 16:38:30 -070023917
23918 /*Set the output values*/
23919 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023921
23922 return WDI_STATUS_SUCCESS;
23923}/*WDI_PackPreferredNetworkListNew*/
23924
23925/**
23926 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023927
23928 @param pWDICtx: pointer to the WLAN DAL context
23929 pEventData: pointer to the event information structure
23930
Jeff Johnson295189b2012-06-20 16:38:30 -070023931 @return Result of the function call
23932*/
23933WDI_Status
23934WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023935(
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 WDI_ControlBlockType* pWDICtx,
23937 WDI_EventInfoType* pEventData
23938)
23939{
23940 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23941 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023945
23946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 -------------------------------------------------------------------------*/
23949 if (( NULL == pEventData ) ||
23950 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23951 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23952 {
23953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 }
23958
23959 /*-------------------------------------------------------------------------
23960 Pack the PNO request structure based on version
23961 -------------------------------------------------------------------------*/
23962 if ( pWDICtx->wdiPNOVersion > 0 )
23963 {
23964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023965 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 pWDICtx->wdiPNOVersion);
23967
23968 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23969 &pSendBuffer, &usSendSize);
23970 }
23971 else
23972 {
23973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023974 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 pWDICtx->wdiPNOVersion);
23976
23977 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23978 &pSendBuffer, &usSendSize);
23979 }
23980
23981 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23982 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23983 {
23984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023985 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 }
23989
23990 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023992
23993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23997 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023998}
23999
24000/**
24001 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024002
24003 @param pWDICtx: pointer to the WLAN DAL context
24004 pEventData: pointer to the event information structure
24005
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 @see
24007 @return Result of the function call
24008*/
24009WDI_Status
24010WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024011(
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 WDI_ControlBlockType* pWDICtx,
24013 WDI_EventInfoType* pEventData
24014)
24015{
24016 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24017 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 wpt_uint16 usDataOffset = 0;
24020 wpt_uint16 usSendSize = 0;
24021 wpt_uint8 ucRssiThreshold;
24022
24023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 -------------------------------------------------------------------------*/
24026 if (( NULL == pEventData ) ||
24027 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24028 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24029 {
24030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 }
24035
24036 /*-----------------------------------------------------------------------
24037 Get message buffer
24038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 sizeof(ucRssiThreshold),
24041 &pSendBuffer, &usDataOffset, &usSendSize))||
24042 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24043 {
24044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24045 "Unable to get send buffer in Set PNO req %x %x %x",
24046 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 }
24050
24051 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24052
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 wpalMemoryCopy( pSendBuffer+usDataOffset,
24054 &ucRssiThreshold,
24055 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024056
24057 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059
24060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24064 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024065}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024066#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24067/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024068 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024069
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024070 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024071 by the Device Interface
24072
24073 wdiRoamOffloadScancb: callback for passing back the response
24074 of the Roam Candidate Lookup Req operation received from the
24075 device
24076
24077 pUserData: user data will be passed back with the
24078 callback
24079 @return Result of the function call
24080*/
24081WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024082WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024083(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024084 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024085 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24086 void* pUserData
24087)
24088{
24089 WDI_EventInfoType wdiEventData = {{0}};
24090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24091
24092 /*------------------------------------------------------------------------
24093 Sanity Check
24094 ------------------------------------------------------------------------*/
24095 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24096 {
24097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24098 "WDI API call before module is initialized - Fail request");
24099
24100 return WDI_STATUS_E_NOT_ALLOWED;
24101 }
24102
24103 /*------------------------------------------------------------------------
24104 Fill in Event data and post to the Main FSM
24105 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024106 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24107 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24108 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024109 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24110 wdiEventData.pUserData = pUserData;
24111
24112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24113}
24114
24115void
24116WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24117{
24118 switch (wdiEdType)
24119 {
24120 case WDI_ED_NONE:
24121 *EdType = eED_NONE;
24122 break;
24123 case WDI_ED_WEP40:
24124 case WDI_ED_WEP104:
24125 *EdType = eED_WEP;
24126 break;
24127 case WDI_ED_TKIP:
24128 *EdType = eED_TKIP;
24129 break;
24130 case WDI_ED_CCMP:
24131#ifdef WLAN_FEATURE_11W
24132 case WDI_ED_AES_128_CMAC:
24133#endif
24134 *EdType = eED_CCMP;
24135 break;
24136#ifdef FEATURE_WLAN_WAPI
24137 case WDI_ED_WPI:
24138 *EdType = eED_WPI;
24139 break;
24140#endif
24141 case WDI_ED_ANY:
24142 *EdType = eED_ANY;
24143 break;
24144
24145 default:
24146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24147 "%s: Unknown Encryption Type", __func__);
24148 break;
24149 }
24150}
24151
24152/**
24153 @brief Helper function to pack Start Roam Candidate Lookup
24154 Request parameters
24155
24156 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024157 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024158 from upper layers
24159 ppSendBuffer, pSize - out pointers of the packed buffer
24160 and its size
24161
24162 @return Result of the function call
24163*/
24164
24165WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024166WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024167(
24168 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024169 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024170 wpt_uint8** ppSendBuffer,
24171 wpt_uint16* pSize
24172)
24173{
24174 wpt_uint8* pSendBuffer = NULL;
24175 wpt_uint16 usDataOffset = 0;
24176 wpt_uint16 usSendSize = 0;
24177 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24178 wpt_uint8 i;
24179 /*-----------------------------------------------------------------------
24180 Get message buffer
24181 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024182 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024183 sizeof(tRoamCandidateListParams),
24184 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024185 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024186 {
24187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24188 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024189 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024190 WDI_ASSERT(0);
24191 return WDI_STATUS_E_FAILURE;
24192 }
24193 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024194 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024195 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024196 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024197 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024198 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024199 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024200 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024201 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024202 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024203 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024204
24205 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024206 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024207 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024208 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024209 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24210 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024211 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24212 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24213 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24214 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24215 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24216 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24217 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24218 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24219 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24220 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24221 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24222 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24223 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24224 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024225 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024226 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24227 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24228 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024229
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24231 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24232 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24233 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24234 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24235 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24236 "HomeAwayTime=%d\n",
24237 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24238 pRoamCandidateListParams->RoamScanOffloadEnabled,
24239 pRoamCandidateListParams->Command,
24240 pRoamCandidateListParams->StartScanReason,
24241 pRoamCandidateListParams->NeighborScanTimerPeriod,
24242 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24243 pRoamCandidateListParams->NeighborScanChannelMinTime,
24244 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24245 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24246 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24247 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24248 pRoamCandidateListParams->ConnectedNetwork.authentication,
24249 pRoamCandidateListParams->ConnectedNetwork.encryption,
24250 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24251 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24252 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024253 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024254 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024255 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024256 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024257 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24258 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024259 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024260 pRoamCandidateListParams->us24GProbeSize);
24261 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024262 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024263 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024264 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024265 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24266 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024267 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024268 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024269 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24270 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24271 pRoamCandidateListParams->nProbes =
24272 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24273 pRoamCandidateListParams->HomeAwayTime =
24274 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024276 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24277 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024279 }
24280
24281
24282 /*Set the output values*/
24283 *ppSendBuffer = pSendBuffer;
24284 *pSize = usSendSize;
24285 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024286}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024287
24288/**
24289 @brief Process Start Roam Candidate Lookup Request function
24290
24291 @param pWDICtx: pointer to the WLAN DAL context
24292 pEventData: pointer to the event information structure
24293
24294 @return Result of the function call
24295*/
24296WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024297WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024298(
24299 WDI_ControlBlockType* pWDICtx,
24300 WDI_EventInfoType* pEventData
24301)
24302{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024303 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024304 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24305 wpt_uint8* pSendBuffer = NULL;
24306 wpt_uint16 usSendSize = 0;
24307 WDI_Status wdiStatus;
24308 /*-------------------------------------------------------------------------
24309 Sanity check
24310 -------------------------------------------------------------------------*/
24311 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024312 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024313 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24314 {
24315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24316 "%s: Invalid parameters", __func__);
24317 WDI_ASSERT(0);
24318 return WDI_STATUS_E_FAILURE;
24319 }
24320
24321 /*-------------------------------------------------------------------------
24322 Pack the Start Roam Candidate Lookup request structure based on version
24323 -------------------------------------------------------------------------*/
24324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24325 "%s: Packing Roam Candidate Lookup request ", __func__);
24326
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024327 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024328 &pSendBuffer, &usSendSize);
24329
24330 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24331 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24332 {
24333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24334 "%s: failed to pack request parameters", __func__);
24335 WDI_ASSERT(0);
24336 return wdiStatus;
24337 }
24338
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024339 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24340 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024341
24342 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024343 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024344 -------------------------------------------------------------------------*/
24345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024346 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024347}
24348
24349/**
24350 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24351 response is being received over the bus from HAL)
24352
24353 @param pWDICtx: pointer to the WLAN DAL context
24354 pEventData: pointer to the event information structure
24355
24356 @see
24357 @return Result of the function call
24358*/
24359WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024360WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024361(
24362 WDI_ControlBlockType* pWDICtx,
24363 WDI_EventInfoType* pEventData
24364)
24365{
24366 WDI_Status wdiStatus;
24367 eHalStatus halStatus;
24368 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24369
24370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24371
24372 /*-------------------------------------------------------------------------
24373 Sanity check
24374 -------------------------------------------------------------------------*/
24375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24376 ( NULL == pEventData->pEventData ))
24377 {
24378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24379 "%s: Invalid parameters", __func__);
24380 WDI_ASSERT(0);
24381 return WDI_STATUS_E_FAILURE;
24382 }
24383
24384 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24385
24386 /*-------------------------------------------------------------------------
24387 Extract response and send it to UMAC
24388 -------------------------------------------------------------------------*/
24389 halStatus = *((eHalStatus*)pEventData->pEventData);
24390 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24391
24392 /*Notify UMAC*/
24393 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24394
24395 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024396}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024397#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024398
24399/**
24400 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024401
24402 @param pWDICtx: pointer to the WLAN DAL context
24403 pEventData: pointer to the event information structure
24404
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 @see
24406 @return Result of the function call
24407*/
24408WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024409WDI_PackUpdateScanParamsReq
24410(
24411 WDI_ControlBlockType* pWDICtx,
24412 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24413 wpt_uint8** ppSendBuffer,
24414 wpt_uint16* pSize
24415)
24416{
24417 wpt_uint8* pSendBuffer = NULL;
24418 wpt_uint16 usDataOffset = 0;
24419 wpt_uint16 usSendSize = 0;
24420 tUpdateScanParams updateScanParams = {0};
24421
24422
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024424 "Begin WDI Update Scan Parameters Old Style Params");
24425 /*-----------------------------------------------------------------------
24426 Get message buffer
24427 -----------------------------------------------------------------------*/
24428 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24429 sizeof(updateScanParams),
24430 &pSendBuffer, &usDataOffset, &usSendSize))||
24431 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24432 {
24433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24434 "Unable to get send buffer in Update Scan Params req %x",
24435 pwdiUpdateScanParams);
24436 WDI_ASSERT(0);
24437 return WDI_STATUS_E_FAILURE;
24438 }
24439
24440 //
24441 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24442 //
24443
24444 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24445 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24446
24447 updateScanParams.ucChannelCount =
24448 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24449 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24450 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24451 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24452
24453 wpalMemoryCopy( updateScanParams.aChannels,
24454 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24455 updateScanParams.ucChannelCount);
24456
24457
24458 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24459 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24460 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24461 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24462 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24463
24464 wpalMemoryCopy( pSendBuffer+usDataOffset,
24465 &updateScanParams,
24466 sizeof(updateScanParams));
24467
24468 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24469 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24470
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024472 "End Update Scan Parameters Old Style");
24473
24474 /*Set the output values*/
24475 *ppSendBuffer = pSendBuffer;
24476 *pSize = usSendSize;
24477
24478 return WDI_STATUS_SUCCESS;
24479}
24480
24481/**
24482 @brief Process Update Scan Params function
24483
24484 @param pWDICtx: pointer to the WLAN DAL context
24485 pEventData: pointer to the event information structure
24486
24487 @see
24488 @return Result of the function call
24489*/
24490WDI_Status
24491WDI_PackUpdateScanParamsReqEx
24492(
24493 WDI_ControlBlockType* pWDICtx,
24494 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24495 wpt_uint8** ppSendBuffer,
24496 wpt_uint16* pSize
24497)
24498{
24499 wpt_uint8* pSendBuffer = NULL;
24500 wpt_uint16 usDataOffset = 0;
24501 wpt_uint16 usSendSize = 0;
24502 tUpdateScanParamsEx updateScanParams = {0};
24503
24504
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024505 /*-----------------------------------------------------------------------
24506 Get message buffer
24507 -----------------------------------------------------------------------*/
24508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24509 sizeof(updateScanParams),
24510 &pSendBuffer, &usDataOffset, &usSendSize))||
24511 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24512 {
24513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24514 "Unable to get send buffer in Update Scan Params Ex req %x",
24515 pwdiUpdateScanParams);
24516 WDI_ASSERT(0);
24517 return WDI_STATUS_E_FAILURE;
24518 }
24519
24520 //
24521 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24522 //
24523
24524 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24525 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24526
24527 updateScanParams.ucChannelCount =
24528 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24529 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24530 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24531 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24532
24533 wpalMemoryCopy( updateScanParams.aChannels,
24534 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24535 updateScanParams.ucChannelCount);
24536
24537
24538 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24539 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24540 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24541 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24542 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24543
24544 wpalMemoryCopy( pSendBuffer+usDataOffset,
24545 &updateScanParams,
24546 sizeof(updateScanParams));
24547
24548 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24549 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24550
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024551 /*Set the output values*/
24552 *ppSendBuffer = pSendBuffer;
24553 *pSize = usSendSize;
24554
24555 return WDI_STATUS_SUCCESS;
24556}
24557
24558/**
24559 @brief Process Update Scan Params function
24560
24561 @param pWDICtx: pointer to the WLAN DAL context
24562 pEventData: pointer to the event information structure
24563
24564 @see
24565 @return Result of the function call
24566*/
24567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024568WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024569(
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 WDI_ControlBlockType* pWDICtx,
24571 WDI_EventInfoType* pEventData
24572)
24573{
24574 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24575 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024577 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024578 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024579
24580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 -------------------------------------------------------------------------*/
24583 if (( NULL == pEventData ) ||
24584 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24585 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24586 {
24587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024591 }
24592
24593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24594 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024595
24596 //
24597 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24598 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024599 if ( pWDICtx->wlanVersion.revision < 1 )
24600 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024601 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024602 &pSendBuffer, &usSendSize);
24603 }
24604 else
24605 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024606 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24607 &pSendBuffer, &usSendSize);
24608 }
24609
24610 if(WDI_STATUS_SUCCESS != wdiStatus)
24611 {
24612 //memory allocation failed
24613 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024614 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024615
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024620 wdiUpdateScanParamsCb, pEventData->pUserData,
24621 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024622}
24623
24624/**
24625 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024626
24627 @param pWDICtx: pointer to the WLAN DAL context
24628 pEventData: pointer to the event information structure
24629
Jeff Johnson295189b2012-06-20 16:38:30 -070024630 @see
24631 @return Result of the function call
24632*/
24633WDI_Status
24634WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024635(
Jeff Johnson295189b2012-06-20 16:38:30 -070024636 WDI_ControlBlockType* pWDICtx,
24637 WDI_EventInfoType* pEventData
24638)
24639{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024640 WDI_LowLevelIndType wdiInd;
24641 tpPrefNetwFoundParams pNetwFoundParams;
24642 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024643
24644
24645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 -------------------------------------------------------------------------*/
24648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24649 ( NULL == pEventData->pEventData ))
24650 {
24651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 }
24656
24657 /*-------------------------------------------------------------------------
24658 Extract indication and send it to UMAC
24659 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024660 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24661
24662 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24663 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24664 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24665
24666 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24667 {
24668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24669 "%s: fail to allocate memory", __func__);
24670 return WDI_STATUS_MEM_FAILURE;
24671 }
24672
24673 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24674 (pNetwFoundParams->ssId.length < 32 )?
24675 pNetwFoundParams->ssId.length : 32;
24676 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24677 pNetwFoundParams->ssId.ssId,
24678 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24679 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24680 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24681 pNetwFoundParams->frameLength;
24682 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24683 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24684 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024685
24686 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024687 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024688
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 // DEBUG
24690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24691 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24692 wdiInd.wdiIndicationType,
24693 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24694 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24695
ltimariu034f7d62013-01-24 18:54:33 -080024696 if ( pWDICtx->wdiLowLevelIndCB )
24697 {
24698 /*Notify UMAC*/
24699 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24700 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024701
24702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024703}
24704
24705/**
24706 @brief Process PNO Rsp function (called when a
24707 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024708
24709 @param pWDICtx: pointer to the WLAN DAL context
24710 pEventData: pointer to the event information structure
24711
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 @see
24713 @return Result of the function call
24714*/
24715WDI_Status
24716WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024717(
Jeff Johnson295189b2012-06-20 16:38:30 -070024718 WDI_ControlBlockType* pWDICtx,
24719 WDI_EventInfoType* pEventData
24720)
24721{
24722 WDI_Status wdiStatus;
24723 eHalStatus halStatus;
24724 WDI_PNOScanCb wdiPNOScanCb = NULL;
24725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24726
24727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 -------------------------------------------------------------------------*/
24730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24731 ( NULL == pEventData->pEventData ))
24732 {
24733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 }
24738
24739
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024741
24742 /*-------------------------------------------------------------------------
24743 Extract response and send it to UMAC
24744 -------------------------------------------------------------------------*/
24745 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024747
24748 /*Notify UMAC*/
24749 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24750
Jeff Johnsone7245742012-09-05 17:12:55 -070024751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024752}/*WDI_ProcessSetPreferredNetworkRsp*/
24753
24754/**
24755 @brief Process RSSI Filter Rsp function (called when a
24756 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024757
24758 @param pWDICtx: pointer to the WLAN DAL context
24759 pEventData: pointer to the event information structure
24760
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 @see
24762 @return Result of the function call
24763*/
24764WDI_Status
24765WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024766(
Jeff Johnson295189b2012-06-20 16:38:30 -070024767 WDI_ControlBlockType* pWDICtx,
24768 WDI_EventInfoType* pEventData
24769)
24770{
24771 WDI_Status wdiStatus;
24772 eHalStatus halStatus;
24773 WDI_RssiFilterCb wdiRssiFilterCb;
24774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24775
24776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024778 -------------------------------------------------------------------------*/
24779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24780 ( NULL == pEventData->pEventData ))
24781 {
24782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024786 }
24787
Jeff Johnsone7245742012-09-05 17:12:55 -070024788 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024789
24790 /*-------------------------------------------------------------------------
24791 Extract response and send it to UMAC
24792 -------------------------------------------------------------------------*/
24793 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024794 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024795
24796 /*Notify UMAC*/
24797 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24798
Jeff Johnsone7245742012-09-05 17:12:55 -070024799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024800}/*WDI_ProcessSetRssiFilterRsp*/
24801
24802/**
24803 @brief Process Update Scan Params Rsp function (called when a
24804 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024805
24806 @param pWDICtx: pointer to the WLAN DAL context
24807 pEventData: pointer to the event information structure
24808
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 @see
24810 @return Result of the function call
24811*/
24812WDI_Status
24813WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024814(
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 WDI_ControlBlockType* pWDICtx,
24816 WDI_EventInfoType* pEventData
24817)
24818{
24819 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024820 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024821 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024822 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24824
24825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 -------------------------------------------------------------------------*/
24828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24829 ( NULL == pEventData->pEventData ))
24830 {
24831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024835 }
24836
24837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024838 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024839
Jeff Johnsone7245742012-09-05 17:12:55 -070024840 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024841
24842 /*-------------------------------------------------------------------------
24843 Extract response and send it to UMAC
24844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024845 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24846 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024847 sizeof(halUpdScanParams.status));
24848
24849 uStatus = halUpdScanParams.status;
24850
24851 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024852 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024853
24854 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024855 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024856
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024858
24859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024860 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024861 halUpdScanParams.status);
24862
24863 /*Notify UMAC*/
24864 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24865
Jeff Johnsone7245742012-09-05 17:12:55 -070024866 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024867}
24868#endif // FEATURE_WLAN_SCAN_PNO
24869
24870#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024871WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024872WDI_8023MulticastListReq
24873(
24874 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24875 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24876 void* pUserData
24877)
24878{
24879 WDI_EventInfoType wdiEventData;
24880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24881
24882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024883 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024884
24885 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024886 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024887 ------------------------------------------------------------------------*/
24888 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24889 {
24890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24891 "WDI API call before module is initialized - Fail request");
24892
Jeff Johnsone7245742012-09-05 17:12:55 -070024893 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024894 }
24895
24896 /*------------------------------------------------------------------------
24897 Fill in Event data and post to the Main FSM
24898 ------------------------------------------------------------------------*/
24899 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024900 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024901 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024902 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024903 wdiEventData.pUserData = pUserData;
24904
24905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24906}
24907
Jeff Johnsone7245742012-09-05 17:12:55 -070024908WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024909WDI_ReceiveFilterSetFilterReq
24910(
24911 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24912 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24913 void* pUserData
24914)
24915{
24916 WDI_EventInfoType wdiEventData;
24917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24918
24919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024920 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024921
24922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024924 ------------------------------------------------------------------------*/
24925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24926 {
24927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24928 "WDI API call before module is initialized - Fail request");
24929
Jeff Johnsone7245742012-09-05 17:12:55 -070024930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 }
24932
24933 /*------------------------------------------------------------------------
24934 Fill in Event data and post to the Main FSM
24935 ------------------------------------------------------------------------*/
24936 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24938 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024939 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24940 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024942 wdiEventData.pUserData = pUserData;
24943
24944
24945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24946}
24947
Jeff Johnsone7245742012-09-05 17:12:55 -070024948WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024949WDI_FilterMatchCountReq
24950(
24951 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24952 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24953 void* pUserData
24954)
24955{
24956 WDI_EventInfoType wdiEventData;
24957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24958
24959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024960 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024961
24962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 ------------------------------------------------------------------------*/
24965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24966 {
24967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24968 "WDI API call before module is initialized - Fail request");
24969
Jeff Johnsone7245742012-09-05 17:12:55 -070024970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024971 }
24972
24973 /*------------------------------------------------------------------------
24974 Fill in Event data and post to the Main FSM
24975 ------------------------------------------------------------------------*/
24976 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024977 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024978 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024979 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 wdiEventData.pUserData = pUserData;
24981
24982
24983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24984}
24985
Jeff Johnsone7245742012-09-05 17:12:55 -070024986WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024987WDI_ReceiveFilterClearFilterReq
24988(
24989 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24990 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24991 void* pUserData
24992)
24993{
24994 WDI_EventInfoType wdiEventData;
24995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24996
24997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024998 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024999
25000 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025001 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025002 ------------------------------------------------------------------------*/
25003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25004 {
25005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25006 "WDI API call before module is initialized - Fail request");
25007
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 }
25010
25011 /*------------------------------------------------------------------------
25012 Fill in Event data and post to the Main FSM
25013 ------------------------------------------------------------------------*/
25014 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025015 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025016 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025017 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025018 wdiEventData.pUserData = pUserData;
25019
25020
25021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25022}
25023
25024/**
25025 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025026
25027 @param pWDICtx: pointer to the WLAN DAL context
25028 pEventData: pointer to the event information structure
25029
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 @see
25031 @return Result of the function call
25032*/
25033WDI_Status
25034WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025035(
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 WDI_ControlBlockType* pWDICtx,
25037 WDI_EventInfoType* pEventData
25038)
25039{
25040 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25041 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 wpt_uint16 usDataOffset = 0;
25044 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025045 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 wpt_uint8 ucCurrentBSSSesIdx = 0;
25048 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025049
25050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025051 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025052
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025053 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25054 if( NULL == pRcvFltMcAddrListType )
25055 {
25056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25057 "Failed to alloc in WDI_Process8023MulticastListReq");
25058 return WDI_STATUS_E_FAILURE;
25059 }
25060
Jeff Johnson295189b2012-06-20 16:38:30 -070025061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 -------------------------------------------------------------------------*/
25064 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025065 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25069 {
25070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025071 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025072 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025074 return WDI_STATUS_E_FAILURE;
25075 }
25076
25077 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25078 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25079 &pBSSSes);
25080 if ( NULL == pBSSSes )
25081 {
25082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025083 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025084 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025086 }
25087
25088 /*-----------------------------------------------------------------------
25089 Get message buffer
25090 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25092 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025093 sizeof(tHalRcvFltMcAddrListType),
25094 &pSendBuffer, &usDataOffset, &usSendSize))||
25095 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25096 {
25097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25098 "Unable to get send buffer in "
25099 "WDI_Process8023MulticastListReq() %x %x %x",
25100 pEventData, pwdiFltPktSetMcListReqParamsType,
25101 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025102 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 }
25106
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025107 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025109 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025111 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25113 sizeof(tSirMacAddr));
25114 }
25115
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025116 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025118 pRcvFltMcAddrListType,
25119 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025120
25121 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025122 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025123
25124
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025125 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025127 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025131 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025132}
25133
25134/**
25135 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025136
25137 @param pWDICtx: pointer to the WLAN DAL context
25138 pEventData: pointer to the event information structure
25139
Jeff Johnson295189b2012-06-20 16:38:30 -070025140 @see
25141 @return Result of the function call
25142*/
25143WDI_Status
25144WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025145(
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 WDI_ControlBlockType* pWDICtx,
25147 WDI_EventInfoType* pEventData
25148)
25149{
25150 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25151 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 wpt_uint16 usDataOffset = 0;
25154 wpt_uint16 usSendSize = 0;
25155 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025156 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025158 wpt_uint8 ucCurrentBSSSesIdx = 0;
25159 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025160 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25161 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025162
25163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025164 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025165
25166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 -------------------------------------------------------------------------*/
25169 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025170 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025172 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25174 {
25175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025178 return WDI_STATUS_E_FAILURE;
25179 }
25180
25181 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25182 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25183 &pBSSSes);
25184 if ( NULL == pBSSSes )
25185 {
25186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025187 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 }
25190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025191 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25192 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025193
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025194 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25195 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25196 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25197
25198 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25199 usSessRcvPktFilterCfgSize);
25200
25201 if(NULL == pSessRcvPktFilterCfg)
25202 {
25203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25204 "%s: Failed to allocate memory for "
25205 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025206 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025207 WDI_ASSERT(0);
25208 return WDI_STATUS_E_FAILURE;
25209 }
25210
25211 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25212
25213 /*-----------------------------------------------------------------------
25214 Get message buffer
25215 -----------------------------------------------------------------------*/
25216
25217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25218 usSessRcvPktFilterCfgSize,
25219 &pSendBuffer, &usDataOffset, &usSendSize))||
25220 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25221 {
25222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25223 "Unable to get send buffer in "
25224 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25225 pEventData, pwdiSetRcvPktFilterReqInfo,
25226 wdiReceiveFilterSetFilterCb);
25227 WDI_ASSERT(0);
25228 wpalMemoryFree(pSessRcvPktFilterCfg);
25229 return WDI_STATUS_E_FAILURE;
25230 }
25231
25232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25233 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25234 usSendSize,pSessRcvPktFilterCfg);
25235
25236 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25237 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25238 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25239 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25240
25241 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25242
25243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25244 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25245 pSessRcvPktFilterCfg->filterType);
25246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25247 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25248 pSessRcvPktFilterCfg->coleasceTime);
25249
25250 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25251 {
25252 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25253 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25254 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25255 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25256 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25257 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25258 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25259 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25260
25261 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25262 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25263 8);
25264 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25265 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25266 8);
25267
25268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25269 "Out:Proto %d Comp Flag %d \n",
25270 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25271 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25272
25273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25274 "Data Offset %d Data Len %d\n",
25275 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25276 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25277
25278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25279 "CData: %d:%d:%d:%d:%d:%d\n",
25280 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25281 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25282 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25283 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25284 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25285 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25286
25287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25288 "MData: %d:%d:%d:%d:%d:%d\n",
25289 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25290 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25291 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25292 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25293 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25294 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25295 }
25296
25297 wpalMemoryCopy( pSendBuffer+usDataOffset,
25298 pSessRcvPktFilterCfg,
25299 usSessRcvPktFilterCfgSize);
25300
25301
25302 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25303 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25304
25305 wpalMemoryFree(pSessRcvPktFilterCfg);
25306
25307 }
25308 /*If SLM_SESSIONIZATION is not supported then do this */
25309 else
25310 {
25311 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25312 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25313 * sizeof(tHalRcvPktFilterParams));
25314
25315 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 usRcvPktFilterCfgSize);
25317
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025318 if(NULL == pRcvPktFilterCfg)
25319 {
25320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25321 "%s: Failed to allocate memory for "
25322 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025323 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025324 WDI_ASSERT(0);
25325 return WDI_STATUS_E_FAILURE;
25326 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025327
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025328 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025329
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025330 /*-----------------------------------------------------------------------
25331 Get message buffer
25332 -----------------------------------------------------------------------*/
25333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025334 usRcvPktFilterCfgSize,
25335 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025336 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25337 {
25338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025339 "Unable to get send buffer in "
25340 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25341 pEventData, pwdiSetRcvPktFilterReqInfo,
25342 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025343 WDI_ASSERT(0);
25344 wpalMemoryFree(pRcvPktFilterCfg);
25345 return WDI_STATUS_E_FAILURE;
25346 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025347
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025349 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 usSendSize,usRcvPktFilterCfgSize);
25351
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025352 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25353 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25354 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25355 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025358 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025359 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025363
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025364 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25365 {
25366 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25367 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25368 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25369 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25370 pRcvPktFilterCfg->paramsData[i].dataOffset =
25371 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25372 pRcvPktFilterCfg->paramsData[i].dataLength =
25373 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025374
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025375 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25377 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025378 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25380 8);
25381
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025383 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025384 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025385 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25386
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25388 "Data Offset %d Data Len %d\n",
25389 pRcvPktFilterCfg->paramsData[i].dataOffset,
25390 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025391
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25393 "CData: %d:%d:%d:%d:%d:%d\n",
25394 pRcvPktFilterCfg->paramsData[i].compareData[0],
25395 pRcvPktFilterCfg->paramsData[i].compareData[1],
25396 pRcvPktFilterCfg->paramsData[i].compareData[2],
25397 pRcvPktFilterCfg->paramsData[i].compareData[3],
25398 pRcvPktFilterCfg->paramsData[i].compareData[4],
25399 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025400
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25402 "MData: %d:%d:%d:%d:%d:%d\n",
25403 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25404 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25405 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25406 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25407 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25408 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25409 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025410
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025411 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 pRcvPktFilterCfg,
25413 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025414
25415
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025416 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25417 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025418
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025420 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025421 wpalMemoryFree(pRcvPktFilterCfg);
25422 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025424 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025425 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025428 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025429}
25430
25431/**
25432 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025433
25434 @param pWDICtx: pointer to the WLAN DAL context
25435 pEventData: pointer to the event information structure
25436
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 @see
25438 @return Result of the function call
25439*/
25440WDI_Status
25441WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025442(
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 WDI_ControlBlockType* pWDICtx,
25444 WDI_EventInfoType* pEventData
25445)
25446{
25447 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25448 NULL;
25449 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25450 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025451 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025452 wpt_uint16 usDataOffset = 0;
25453 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025454 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25455 wpt_uint8 ucCurrentBSSSesIdx = 0;
25456 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025457
25458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025459 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025460
25461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025463 -------------------------------------------------------------------------*/
25464 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025465 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025466 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025467 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25469 {
25470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 }
25475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025476 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25477 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25478 &pBSSSes);
25479 if ( NULL == pBSSSes )
25480 {
25481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025482 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025483 return WDI_STATUS_E_FAILURE;
25484 }
25485
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 /*-----------------------------------------------------------------------
25487 Get message buffer
25488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025489 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25490 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025491 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025492 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025493 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 {
25495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25496 "Unable to get send buffer in "
25497 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25498 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25499 wdiFilterMatchCountCb);
25500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 }
25503
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025504 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25505 wpalMemoryCopy( pSendBuffer+usDataOffset,
25506 &rcvFltPktMatchCntReqParam,
25507 sizeof(rcvFltPktMatchCntReqParam));
25508
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 //
25510 // Don't need to fill send buffer other than header
25511 //
25512 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025513 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025514
25515
25516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025517 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25520 wdiFilterMatchCountCb,
25521 pEventData->pUserData,
25522 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025523}
25524
25525/**
25526 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025527
25528 @param pWDICtx: pointer to the WLAN DAL context
25529 pEventData: pointer to the event information structure
25530
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 @see
25532 @return Result of the function call
25533*/
25534WDI_Status
25535WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025536(
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 WDI_ControlBlockType* pWDICtx,
25538 WDI_EventInfoType* pEventData
25539)
Jeff Johnsone7245742012-09-05 17:12:55 -070025540{
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25542 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 wpt_uint16 usDataOffset = 0;
25545 wpt_uint16 usSendSize = 0;
25546 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025547 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025548 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025549
25550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025551 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025552
25553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 -------------------------------------------------------------------------*/
25556 if (( NULL == pEventData ) ||
25557 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25558 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025559 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25561 {
25562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025563 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 return WDI_STATUS_E_FAILURE;
25566 }
25567
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025568 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025569 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25570 &pBSSSes);
25571 if ( NULL == pBSSSes )
25572 {
25573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025574 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 }
25577
25578 /*-----------------------------------------------------------------------
25579 Get message buffer
25580 -----------------------------------------------------------------------*/
25581 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025582 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 sizeof(tHalRcvFltPktClearParam),
25584 &pSendBuffer, &usDataOffset, &usSendSize))||
25585 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25586 {
25587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25588 "Unable to get send buffer in "
25589 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25590 pEventData, pwdiRcvFltPktClearReqParamsType,
25591 wdiRcvFltPktClearFilterCb);
25592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 }
25595
25596
25597 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025598 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025600 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025601
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25603 wpalMemoryCopy( pSendBuffer+usDataOffset,
25604 &rcvFltPktClearParam,
25605 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025606
25607 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025608 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025609
25610
25611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025617}
25618
25619/**
25620 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025621
25622 @param pWDICtx: pointer to the WLAN DAL context
25623 pEventData: pointer to the event information structure
25624
Jeff Johnson295189b2012-06-20 16:38:30 -070025625 @see
25626 @return Result of the function call
25627*/
25628WDI_Status
25629WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025630(
Jeff Johnson295189b2012-06-20 16:38:30 -070025631 WDI_ControlBlockType* pWDICtx,
25632 WDI_EventInfoType* pEventData
25633)
25634{
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 eHalStatus halStatus;
25636 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025637 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25638 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25640
25641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025642 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025643
25644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025646 -------------------------------------------------------------------------*/
25647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25648 ( NULL == pEventData->pEventData ))
25649 {
25650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 }
25655
Jeff Johnsone7245742012-09-05 17:12:55 -070025656 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025657
25658 /*-------------------------------------------------------------------------
25659 Extract response and send it to UMAC
25660 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025661 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25662 {
25663 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25664 pEventData->pEventData,
25665 sizeof(halRcvFltPktSetMcListRsp));
25666
25667 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25668 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25669 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25670 halRcvFltPktSetMcListRsp.bssIdx;
25671 }
25672 else
25673 {
25674 halStatus = *((eHalStatus*)pEventData->pEventData);
25675 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25676 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025677
25678 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025679 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025680
Jeff Johnsone7245742012-09-05 17:12:55 -070025681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025682}
25683
25684/**
25685 @brief Process Set Rsp function (called when a
25686 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025687
25688 @param pWDICtx: pointer to the WLAN DAL context
25689 pEventData: pointer to the event information structure
25690
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 @see
25692 @return Result of the function call
25693*/
25694WDI_Status
25695WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025696(
Jeff Johnson295189b2012-06-20 16:38:30 -070025697 WDI_ControlBlockType* pWDICtx,
25698 WDI_EventInfoType* pEventData
25699)
25700{
Jeff Johnson295189b2012-06-20 16:38:30 -070025701 eHalStatus halStatus;
25702 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025703 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25704 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25706
25707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025708 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025709
25710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 -------------------------------------------------------------------------*/
25713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25714 ( NULL == pEventData->pEventData ))
25715 {
25716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 }
25721
25722 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025723 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025724
25725 /*-------------------------------------------------------------------------
25726 Extract response and send it to UMAC
25727 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025728 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25729 {
25730 wpalMemoryCopy( &halSetPktFilterRspParams,
25731 pEventData->pEventData,
25732 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025733
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025734 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25735 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25736 }
25737 else
25738 {
25739 halStatus = *((eHalStatus*)pEventData->pEventData);
25740 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25741 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025743 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025744
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025746}
25747
25748/**
25749 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025750
25751 @param pWDICtx: pointer to the WLAN DAL context
25752 pEventData: pointer to the event information structure
25753
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 @see
25755 @return Result of the function call
25756*/
25757WDI_Status
25758WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025759(
Jeff Johnson295189b2012-06-20 16:38:30 -070025760 WDI_ControlBlockType* pWDICtx,
25761 WDI_EventInfoType* pEventData
25762)
25763{
Jeff Johnson295189b2012-06-20 16:38:30 -070025764 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025765 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025766 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25767 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025768
25769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25770
25771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025772 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025773
25774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 -------------------------------------------------------------------------*/
25777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25778 ( NULL == pEventData->pEventData ))
25779 {
25780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025784 }
25785
Jeff Johnsone7245742012-09-05 17:12:55 -070025786 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025787
25788 /*-------------------------------------------------------------------------
25789 Extract response and send it to UMAC
25790 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025791 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25792 {
25793 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25794 pEventData->pEventData,
25795 sizeof(halRcvFltrPktMatachRsp));
25796
25797 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25798 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25799 }
25800 else
25801 {
25802 halStatus = *((eHalStatus*)pEventData->pEventData);
25803 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25804 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025805
25806 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025807 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025808
Jeff Johnsone7245742012-09-05 17:12:55 -070025809 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025810}
25811
25812/**
25813 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025814
25815 @param pWDICtx: pointer to the WLAN DAL context
25816 pEventData: pointer to the event information structure
25817
Jeff Johnson295189b2012-06-20 16:38:30 -070025818 @see
25819 @return Result of the function call
25820*/
25821WDI_Status
25822WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025823(
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 WDI_ControlBlockType* pWDICtx,
25825 WDI_EventInfoType* pEventData
25826)
25827{
Jeff Johnson295189b2012-06-20 16:38:30 -070025828 eHalStatus halStatus;
25829 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025830 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25831 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25833
25834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025835 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025836
25837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 -------------------------------------------------------------------------*/
25840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25841 ( NULL == pEventData->pEventData ))
25842 {
25843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 }
25848
25849 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025850 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025851
25852 /*-------------------------------------------------------------------------
25853 Extract response and send it to UMAC
25854 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025855 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25856 {
25857 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25858 pEventData->pEventData,
25859 sizeof(halRcvFltPktClearRspMsg));
25860
25861 wdiRcvFltPktClearRspParamsType.wdiStatus =
25862 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25863 wdiRcvFltPktClearRspParamsType.bssIdx =
25864 halRcvFltPktClearRspMsg.bssIdx;
25865 }
25866 else
25867 {
25868 halStatus = *((eHalStatus*)pEventData->pEventData);
25869 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25870 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025871
25872 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025873 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025874
Jeff Johnsone7245742012-09-05 17:12:55 -070025875 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025876}
25877#endif // WLAN_FEATURE_PACKET_FILTERING
25878
25879/**
25880 @brief Process Shutdown Rsp function
25881 There is no shutdown response comming from HAL
25882 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025883
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025886
25887 @see
25888 @return Result of the function call
25889*/
25890WDI_Status
25891WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025892(
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 WDI_ControlBlockType* pWDICtx,
25894 WDI_EventInfoType* pEventData
25895)
25896{
25897 /*There is no shutdown response comming from HAL - function just kept for
25898 simmetry */
25899 WDI_ASSERT(0);
25900 return WDI_STATUS_SUCCESS;
25901}/*WDI_ProcessShutdownRsp*/
25902
25903/**
25904 @brief WDI_SetPowerParamsReq
25905
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025908
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 wdiPowerParamsCb: callback for passing back the response
25910 of the Set Power Params operation received from the
25911 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025912
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 callback
25915
Jeff Johnson295189b2012-06-20 16:38:30 -070025916 @return Result of the function call
25917*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025918WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025919WDI_SetPowerParamsReq
25920(
25921 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25922 WDI_SetPowerParamsCb wdiPowerParamsCb,
25923 void* pUserData
25924)
25925{
25926 WDI_EventInfoType wdiEventData;
25927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25928
25929 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025930 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 ------------------------------------------------------------------------*/
25932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25933 {
25934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25935 "WDI API call before module is initialized - Fail request");
25936
Jeff Johnsone7245742012-09-05 17:12:55 -070025937 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 }
25939
25940 /*------------------------------------------------------------------------
25941 Fill in Event data and post to the Main FSM
25942 ------------------------------------------------------------------------*/
25943 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025944 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025945 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025946 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 wdiEventData.pUserData = pUserData;
25948
25949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25950}/*WDI_SetPowerParamsReq*/
25951
25952/**
25953 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025954
25955 @param pWDICtx: pointer to the WLAN DAL context
25956 pEventData: pointer to the event information structure
25957
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 @see
25959 @return Result of the function call
25960*/
25961WDI_Status
25962WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025963(
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 WDI_ControlBlockType* pWDICtx,
25965 WDI_EventInfoType* pEventData
25966)
25967{
25968 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25969 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025970 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 wpt_uint16 usDataOffset = 0;
25972 wpt_uint16 usSendSize = 0;
25973 tSetPowerParamsType powerParams;
25974
25975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 -------------------------------------------------------------------------*/
25978 if (( NULL == pEventData ) ||
25979 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25980 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25981 {
25982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 }
25987
25988 /*-----------------------------------------------------------------------
25989 Get message buffer
25990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025991 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 sizeof(powerParams),
25993 &pSendBuffer, &usDataOffset, &usSendSize))||
25994 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25995 {
25996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25997 "Unable to get send buffer in Set PNO req %x %x %x",
25998 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 }
26002
26003 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026004 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026005 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26006
26007 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026008 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026009 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26010
26011 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26014
26015 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026016 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26018
26019 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026020 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26022
26023 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026024 powerParams.uBETInterval =
26025 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026026
Yue Ma0da19492013-05-13 17:01:29 -070026027 /* MAX LI for modulated DTIM */
26028 powerParams.uMaxLIModulatedDTIM =
26029 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026030
26031 wpalMemoryCopy( pSendBuffer+usDataOffset,
26032 &powerParams,
26033 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026034
26035 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026037
26038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026039 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26042 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026043}
26044
26045/**
26046 @brief Process Power Params Rsp function (called when a
26047 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026048
26049 @param pWDICtx: pointer to the WLAN DAL context
26050 pEventData: pointer to the event information structure
26051
Jeff Johnson295189b2012-06-20 16:38:30 -070026052 @see
26053 @return Result of the function call
26054*/
26055WDI_Status
26056WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026057(
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 WDI_ControlBlockType* pWDICtx,
26059 WDI_EventInfoType* pEventData
26060)
26061{
26062 WDI_Status wdiStatus;
26063 eHalStatus halStatus;
26064 WDI_SetPowerParamsCb wdiPowerParamsCb;
26065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26066
26067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026069 -------------------------------------------------------------------------*/
26070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26071 ( NULL == pEventData->pEventData ))
26072 {
26073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 }
26078
Jeff Johnsone7245742012-09-05 17:12:55 -070026079 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026080
26081 /*-------------------------------------------------------------------------
26082 Extract response and send it to UMAC
26083 -------------------------------------------------------------------------*/
26084 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026086
26087 /*Notify UMAC*/
26088 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26089
Jeff Johnsone7245742012-09-05 17:12:55 -070026090 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026091}/*WDI_ProcessSetPowerParamsRsp*/
26092
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026093/**
26094 @brief WDI_dhcpStartInd
26095 Host will send an event to the FW when DHCP is initiated
26096
26097 @param
26098 WDI_DHCPInd: DHCP Indication
26099 @see
26100 @return Result of the function call
26101*/
26102WDI_Status
26103WDI_dhcpStartInd
26104(
26105 WDI_DHCPInd *wdiDHCPInd
26106)
26107{
26108 WDI_EventInfoType wdiEventData;
26109
26110 /*------------------------------------------------------------------------
26111 Sanity Check
26112 ------------------------------------------------------------------------*/
26113 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26114 {
26115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26116 "WDI API call before module is initialized - Fail request");
26117
26118 return WDI_STATUS_E_NOT_ALLOWED;
26119 }
26120
26121 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26122 wdiEventData.pEventData = wdiDHCPInd;
26123 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26124 wdiEventData.pCBfnc = NULL;
26125 wdiEventData.pUserData = NULL;
26126
26127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26128}
26129
26130
26131/**
26132 @brief WDI_dhcpStopInd
26133 Host will send an event to the FW when DHCP is completed
26134
26135 @param
26136 WDI_DHCPInd: DHCP Indication
26137 @see
26138 @return Result of the function call
26139*/
26140WDI_Status
26141WDI_dhcpStopInd
26142(
26143 WDI_DHCPInd *wdiDHCPInd
26144)
26145{
26146 WDI_EventInfoType wdiEventData;
26147
26148 /*------------------------------------------------------------------------
26149 Sanity Check
26150 ------------------------------------------------------------------------*/
26151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26152 {
26153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26154 "WDI API call before module is initialized - Fail request");
26155
26156 return WDI_STATUS_E_NOT_ALLOWED;
26157 }
26158
26159 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26160 wdiEventData.pEventData = wdiDHCPInd;
26161 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26162 wdiEventData.pCBfnc = NULL;
26163 wdiEventData.pUserData = NULL;
26164
26165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26166}
26167
26168
26169/**
26170 @brief Process DHCP Start Indication message and post it to HAL
26171
26172 @param pWDICtx: pointer to the WLAN DAL context
26173 pEventData: pointer to the event information structure
26174
26175 @see
26176 @return Result of the function call
26177*/
26178WDI_Status
26179WDI_ProcessDHCPStartInd
26180(
26181 WDI_ControlBlockType* pWDICtx,
26182 WDI_EventInfoType* pEventData
26183)
26184{
26185 wpt_uint8* pSendBuffer = NULL;
26186 wpt_uint16 usDataOffset = 0;
26187 wpt_uint16 usSendSize = 0;
26188 wpt_uint16 usLen = 0;
26189 WDI_DHCPInd* pwdiDHCPInd = NULL;
26190 tDHCPInfo* pDHCPInfo;
26191
26192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26193
26194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26195 "%s", __func__);
26196
26197 /*-------------------------------------------------------------------------
26198 Sanity check
26199 -------------------------------------------------------------------------*/
26200 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26201 {
26202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26203 "%s: Invalid parameters", __func__);
26204 WDI_ASSERT(0);
26205 return WDI_STATUS_E_FAILURE;
26206 }
26207 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26208 /*-----------------------------------------------------------------------
26209 Get message buffer
26210 -----------------------------------------------------------------------*/
26211
26212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26213 WDI_DHCP_START_IND,
26214 sizeof(tDHCPInfo),
26215 &pSendBuffer, &usDataOffset, &usSendSize))||
26216 ( usSendSize < (usDataOffset + usLen )))
26217 {
26218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26219 "Unable to get send buffer in DHCP Start req %p ",
26220 pEventData);
26221 WDI_ASSERT(0);
26222 return WDI_STATUS_E_FAILURE;
26223 }
26224
26225 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26226 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26227 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26228 WDI_MAC_ADDR_LEN);
26229
26230 pWDICtx->pReqStatusUserData = NULL;
26231 pWDICtx->pfncRspCB = NULL;
26232
26233 /*-------------------------------------------------------------------------
26234 Send DHCP Start Indication to HAL
26235 -------------------------------------------------------------------------*/
26236 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26237
26238}/*WDI_ProcessDHCPStartInd*/
26239
26240/**
26241 @brief Process DHCP Stop indication message and post it to HAL
26242
26243 @param pWDICtx: pointer to the WLAN DAL context
26244 pEventData: pointer to the event information structure
26245
26246 @see
26247 @return Result of the function call
26248*/
26249WDI_Status
26250WDI_ProcessDHCPStopInd
26251(
26252 WDI_ControlBlockType* pWDICtx,
26253 WDI_EventInfoType* pEventData
26254)
26255{
26256 wpt_uint8* pSendBuffer = NULL;
26257 wpt_uint16 usDataOffset = 0;
26258 wpt_uint16 usSendSize = 0;
26259 wpt_uint16 usLen = 0;
26260 WDI_DHCPInd* pwdiDHCPInd = NULL;
26261 tDHCPInfo* pDHCPInfo;
26262
26263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26264
26265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26266 "%s", __func__);
26267
26268 /*-------------------------------------------------------------------------
26269 Sanity check
26270 -------------------------------------------------------------------------*/
26271
26272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26273 {
26274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26275 "%s: Invalid parameters", __func__);
26276 WDI_ASSERT(0);
26277 return WDI_STATUS_E_FAILURE;
26278 }
26279 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26280 /*-----------------------------------------------------------------------
26281 Get message buffer
26282 -----------------------------------------------------------------------*/
26283
26284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26285 WDI_DHCP_STOP_IND,
26286 sizeof(tDHCPInfo),
26287 &pSendBuffer, &usDataOffset, &usSendSize))||
26288 ( usSendSize < (usDataOffset + usLen )))
26289 {
26290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26291 "Unable to get send buffer in DHCP Start req %p ",
26292 pEventData);
26293 WDI_ASSERT(0);
26294 return WDI_STATUS_E_FAILURE;
26295 }
26296
26297 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26298 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26299 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26300 WDI_MAC_ADDR_LEN);
26301
26302 pWDICtx->pReqStatusUserData = NULL;
26303 pWDICtx->pfncRspCB = NULL;
26304 /*-------------------------------------------------------------------------
26305 Send DHCP Stop indication to HAL
26306 -------------------------------------------------------------------------*/
26307 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26308
26309}/*WDI_ProcessDHCPStopInd*/
26310
26311
Jeff Johnson295189b2012-06-20 16:38:30 -070026312#ifdef WLAN_FEATURE_GTK_OFFLOAD
26313/**
26314 @brief WDI_GTKOffloadReq will be called when the upper MAC
26315 wants to set GTK Rekey Counter while in power save. Upon
26316 the call of this API the WLAN DAL will pack and send a
26317 HAL GTK offload request message to the lower RIVA
26318 sub-system if DAL is in state STARTED.
26319
26320 In state BUSY this request will be queued. Request won't
26321 be allowed in any other state.
26322
26323 WDI_PostAssocReq must have been called.
26324
26325 @param pwdiGtkOffloadParams: the GTK offload as specified
26326 by the Device Interface
26327
26328 wdiGtkOffloadCb: callback for passing back the response
26329 of the GTK offload operation received from the device
26330
26331 pUserData: user data will be passed back with the
26332 callback
26333
26334 @see WDI_PostAssocReq
26335 @return Result of the function call
26336*/
26337WDI_Status
26338WDI_GTKOffloadReq
26339(
26340 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26341 WDI_GtkOffloadCb wdiGtkOffloadCb,
26342 void* pUserData
26343)
26344{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026345 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26347
26348 /*------------------------------------------------------------------------
26349 Sanity Check
26350 ------------------------------------------------------------------------*/
26351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26352 {
26353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26354 "WDI API call before module is initialized - Fail request");
26355
26356 return WDI_STATUS_E_NOT_ALLOWED;
26357 }
26358
26359 /*------------------------------------------------------------------------
26360 Fill in Event data and post to the Main FSM
26361 ------------------------------------------------------------------------*/
26362 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26363 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026364 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026365 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26366 wdiEventData.pUserData = pUserData;
26367
26368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26369}
26370
26371
26372/**
26373 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26374 MAC wants to get GTK Rekey Counter while in power save.
26375 Upon the call of this API the WLAN DAL will pack and
26376 send a HAL GTK offload request message to the lower RIVA
26377 sub-system if DAL is in state STARTED.
26378
26379 In state BUSY this request will be queued. Request won't
26380 be allowed in any other state.
26381
26382 WDI_PostAssocReq must have been called.
26383
26384 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26385 Information Message as specified by the
26386 Device Interface
26387
26388 wdiGtkOffloadGetInfoCb: callback for passing back the
26389 response of the GTK offload operation received from the
26390 device
26391
26392 pUserData: user data will be passed back with the
26393 callback
26394
26395 @see WDI_PostAssocReq
26396 @return Result of the function call
26397*/
26398WDI_Status
26399WDI_GTKOffloadGetInfoReq
26400(
26401 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26402 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26403 void* pUserData
26404)
26405{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026406 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26408
26409 /*------------------------------------------------------------------------
26410 Sanity Check
26411 ------------------------------------------------------------------------*/
26412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26413 {
26414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26415 "WDI API call before module is initialized - Fail request");
26416
26417 return WDI_STATUS_E_NOT_ALLOWED;
26418 }
26419
26420 /*------------------------------------------------------------------------
26421 Fill in Event data and post to the Main FSM
26422 ------------------------------------------------------------------------*/
26423 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26424 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26425 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26426 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26427 wdiEventData.pUserData = pUserData;
26428
26429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26430}
26431
26432
26433/**
26434 @brief Process set GTK Offload Request function
26435
26436 @param pWDICtx: pointer to the WLAN DAL context
26437 pEventData: pointer to the event information structure
26438
26439 @see
26440 @return Result of the function call
26441*/
26442WDI_Status
26443WDI_ProcessGTKOffloadReq
26444(
26445 WDI_ControlBlockType* pWDICtx,
26446 WDI_EventInfoType* pEventData
26447)
26448{
26449 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26450 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26451 wpt_uint8* pSendBuffer = NULL;
26452 wpt_uint16 usDataOffset = 0;
26453 wpt_uint16 usSendSize = 0;
26454 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026455 wpt_uint8 ucCurrentSessionId = 0;
26456 WDI_BSSSessionType* pBSSSes = NULL;
26457
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26459
26460 /*-------------------------------------------------------------------------
26461 Sanity check
26462 -------------------------------------------------------------------------*/
26463 if (( NULL == pEventData ) ||
26464 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26465 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26466 {
26467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026469 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026470 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 }
26472
26473 /*-----------------------------------------------------------------------
26474 Get message buffer
26475 -----------------------------------------------------------------------*/
26476 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26477 sizeof(gtkOffloadReqParams),
26478 &pSendBuffer, &usDataOffset, &usSendSize))||
26479 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26480 {
26481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26482 "Unable to get send buffer in GTK offload req %x %x %x",
26483 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26484 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026485 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026486 }
26487
26488 //
26489 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26490 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026491 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26492 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26493 &pBSSSes);
26494 if ( NULL == pBSSSes )
26495 {
26496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026497 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026498 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026499 }
26500
26501 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26502
Jeff Johnson295189b2012-06-20 16:38:30 -070026503 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26504 // Copy KCK
26505 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26506 // Copy KEK
26507 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26508 // Copy KeyReplayCounter
26509 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26510
26511 wpalMemoryCopy( pSendBuffer+usDataOffset,
26512 &gtkOffloadReqParams,
26513 sizeof(gtkOffloadReqParams));
26514
26515 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26516 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26517
26518 /*-------------------------------------------------------------------------
26519 Send Get STA Request to HAL
26520 -------------------------------------------------------------------------*/
26521 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26522 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026523
26524fail:
26525 // Release the message buffer so we don't leak
26526 wpalMemoryFree(pSendBuffer);
26527
26528failRequest:
26529 //WDA should have failure check to avoid the memory leak
26530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026531}
26532
26533
26534/**
26535 @brief Process GTK Offload Get Information Request function
26536
26537 @param pWDICtx: pointer to the WLAN DAL context
26538 pEventData: pointer to the event information structure
26539
26540 @see
26541 @return Result of the function call
26542*/
26543WDI_Status
26544WDI_ProcessGTKOffloadGetInfoReq
26545(
26546 WDI_ControlBlockType* pWDICtx,
26547 WDI_EventInfoType* pEventData
26548)
26549{
26550 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26551 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26552 wpt_uint8* pSendBuffer = NULL;
26553 wpt_uint16 usDataOffset = 0;
26554 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026555 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26556 wpt_uint8 ucCurrentSessionId = 0;
26557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026558
26559 /*-------------------------------------------------------------------------
26560 Sanity check
26561 -------------------------------------------------------------------------*/
26562 if (( NULL == pEventData ) ||
26563 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26564 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26565 {
26566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026568 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026569 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026570 }
26571
26572 /*-----------------------------------------------------------------------
26573 Get message buffer
26574 -----------------------------------------------------------------------*/
26575 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026576 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026577 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026578 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026579 {
26580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26581 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26582 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26583 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026584 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026585 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026586 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26587 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26588 &pBSSSes);
26589 if ( NULL == pBSSSes )
26590 {
26591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026592 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026593 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026594 }
26595 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026596
26597 //
26598 // Don't need to fill send buffer other than header
26599 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026600 wpalMemoryCopy( pSendBuffer+usDataOffset,
26601 &halGtkOffloadGetInfoReqParams,
26602 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026603
26604 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26605 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26606
26607 /*-------------------------------------------------------------------------
26608 Send Get STA Request to HAL
26609 -------------------------------------------------------------------------*/
26610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26611 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026612fail:
26613 // Release the message buffer so we don't leak
26614 wpalMemoryFree(pSendBuffer);
26615
26616failRequest:
26617 //WDA should have failure check to avoid the memory leak
26618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026619}
26620
26621/**
26622 @brief Process host offload Rsp function (called when a
26623 response is being received over the bus from HAL)
26624
26625 @param pWDICtx: pointer to the WLAN DAL context
26626 pEventData: pointer to the event information structure
26627
26628 @see
26629 @return Result of the function call
26630*/
26631WDI_Status
26632WDI_ProcessGtkOffloadRsp
26633(
26634 WDI_ControlBlockType* pWDICtx,
26635 WDI_EventInfoType* pEventData
26636)
26637{
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 eHalStatus halStatus;
26639 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026640 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26641 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26643
26644 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26645
26646 /*-------------------------------------------------------------------------
26647 Sanity check
26648 -------------------------------------------------------------------------*/
26649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26650 ( NULL == pEventData->pEventData))
26651 {
26652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 WDI_ASSERT(0);
26655 return WDI_STATUS_E_FAILURE;
26656 }
26657
26658 /*-------------------------------------------------------------------------
26659 Extract response and send it to UMAC
26660 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026661 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26662 {
26663 wpalMemoryCopy( &halGtkOffloadRspParams,
26664 pEventData->pEventData,
26665 sizeof(halGtkOffloadRspParams));
26666
26667 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026668 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026669 wdiGtkOffloadRsparams.bssIdx =
26670 halGtkOffloadRspParams.bssIdx;
26671 }
26672 else
26673 {
26674 halStatus = *((eHalStatus*)pEventData->pEventData);
26675 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26676 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026677
26678 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026679 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026680
26681 return WDI_STATUS_SUCCESS;
26682}
26683
26684/**
26685 @brief Process GTK Offload Get Information Response function
26686
26687 @param pWDICtx: pointer to the WLAN DAL context
26688 pEventData: pointer to the event information structure
26689
26690 @see
26691 @return Result of the function call
26692*/
26693WDI_Status
26694WDI_ProcessGTKOffloadGetInfoRsp
26695(
26696 WDI_ControlBlockType* pWDICtx,
26697 WDI_EventInfoType* pEventData
26698)
26699{
Jeff Johnson295189b2012-06-20 16:38:30 -070026700 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026702 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26703 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026705
26706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26707
26708 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26709
26710 /*-------------------------------------------------------------------------
26711 Sanity check
26712 -------------------------------------------------------------------------*/
26713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26714 ( NULL == pEventData->pEventData ))
26715 {
26716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026718 WDI_ASSERT(0);
26719 return WDI_STATUS_E_FAILURE;
26720 }
26721
26722 /*-------------------------------------------------------------------------
26723 Extract response and send it to UMAC
26724 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026725 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26726 {
26727 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26728 pEventData->pEventData,
26729 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026730
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026731 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026732 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026733 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26734 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26735 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26736 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26737 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26738 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26739 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26740 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026741
26742 wpalMutexAcquire(&pWDICtx->wptMutex);
26743 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26744 &pBSSSes);
26745
26746 if ( NULL == pBSSSes )
26747 {
26748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26749 "Association sequence for this BSS does not exist or "
26750 "association no longer in progress - mysterious HAL response");
26751 wpalMutexRelease(&pWDICtx->wptMutex);
26752 return WDI_STATUS_E_NOT_ALLOWED;
26753 }
26754
26755 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26756 sizeof (wpt_macAddr));
26757 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026758 }
26759 else
26760 {
26761 halStatus = *((eHalStatus*)pEventData->pEventData);
26762 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26763 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026764 /*Notify UMAC*/
26765 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26766 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026767 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026768
26769 return WDI_STATUS_SUCCESS;
26770}
26771#endif // WLAN_FEATURE_GTK_OFFLOAD
26772
26773#ifdef WLAN_WAKEUP_EVENTS
26774WDI_Status
26775WDI_ProcessWakeReasonInd
26776(
26777 WDI_ControlBlockType* pWDICtx,
26778 WDI_EventInfoType* pEventData
26779)
26780{
26781 WDI_LowLevelIndType *pWdiInd;
26782 tpWakeReasonParams pWakeReasonParams;
26783 wpt_uint32 allocSize = 0;
26784
26785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026786 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026787
26788 /*-------------------------------------------------------------------------
26789 Sanity check
26790 -------------------------------------------------------------------------*/
26791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26792 ( NULL == pEventData->pEventData ))
26793 {
26794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 WDI_ASSERT( 0 );
26797 return WDI_STATUS_E_FAILURE;
26798 }
26799
26800 /*-------------------------------------------------------------------------
26801 Extract indication and send it to UMAC
26802 -------------------------------------------------------------------------*/
26803 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26804
26805 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26806
26807 //Allocate memory for WDI_WakeReasonIndType structure
26808 pWdiInd = wpalMemoryAllocate(allocSize) ;
26809
26810 if(NULL == pWdiInd)
26811 {
26812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26813 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026814 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026815 WDI_ASSERT(0);
26816 return WDI_STATUS_E_FAILURE;
26817 }
26818
26819 wpalMemoryZero(pWdiInd, allocSize);
26820
26821 /* Fill in the indication parameters*/
26822 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26823 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26824 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26825 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26826 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26827 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26828 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26829 &(pWakeReasonParams->aDataStart[0]),
26830 pWakeReasonParams->ulStoredDataLen);
26831
ltimariu034f7d62013-01-24 18:54:33 -080026832
26833 if ( pWDICtx->wdiLowLevelIndCB )
26834 {
26835 /*Notify UMAC*/
26836 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26837 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026838
26839 //Free memory allocated for WDI_WakeReasonIndType structure
26840 wpalMemoryFree(pWdiInd);
26841
26842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026843 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026844
26845 return WDI_STATUS_SUCCESS;
26846}
26847#endif // WLAN_WAKEUP_EVENTS
26848
26849void WDI_GetWcnssCompiledApiVersion
26850(
26851 WDI_WlanVersionType *pWcnssApiVersion
26852)
26853{
26854 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26855 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26856 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26857 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26858}
26859
26860/**
26861 @brief Process Set TM Level Rsp function (called when a
26862 response is being received over the bus from HAL)
26863
26864 @param pWDICtx: pointer to the WLAN DAL context
26865 pEventData: pointer to the event information structure
26866
26867 @see
26868 @return Result of the function call
26869*/
26870WDI_Status
26871WDI_ProcessSetTmLevelRsp
26872(
26873 WDI_ControlBlockType* pWDICtx,
26874 WDI_EventInfoType* pEventData
26875)
26876{
26877 WDI_Status wdiStatus;
26878 eHalStatus halStatus;
26879 WDI_SetTmLevelCb wdiSetTmLevelCb;
26880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26881
26882 /*-------------------------------------------------------------------------
26883 Sanity check
26884 -------------------------------------------------------------------------*/
26885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26886 ( NULL == pEventData->pEventData ))
26887 {
26888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026890 WDI_ASSERT(0);
26891 return WDI_STATUS_E_FAILURE;
26892 }
26893
26894 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26895
26896 /*-------------------------------------------------------------------------
26897 Extract response and send it to UMAC
26898 -------------------------------------------------------------------------*/
26899 halStatus = *((eHalStatus*)pEventData->pEventData);
26900 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26901
26902 /*Notify UMAC*/
26903 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26904
26905 return WDI_STATUS_SUCCESS;
26906}/*WDI_ProcessSetTmLevelRsp*/
26907
26908/**
26909 @brief Process Set Thermal Mitigation level Changed request
26910
26911 @param pWDICtx: pointer to the WLAN DAL context
26912 pEventData: pointer to the event information structure
26913
26914 @see
26915 @return Result of the function call
26916*/
26917WDI_Status
26918WDI_ProcessSetTmLevelReq
26919(
26920 WDI_ControlBlockType* pWDICtx,
26921 WDI_EventInfoType* pEventData
26922)
26923{
26924 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
26925 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
26926 wpt_uint8* pSendBuffer = NULL;
26927 wpt_uint16 usDataOffset = 0;
26928 wpt_uint16 usSendSize = 0;
26929 tSetThermalMitgationType halTmMsg;
26930
26931 /*-------------------------------------------------------------------------
26932 Sanity check
26933 -------------------------------------------------------------------------*/
26934 if (( NULL == pEventData ) ||
26935 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
26936 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
26937 {
26938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 WDI_ASSERT(0);
26941 return WDI_STATUS_E_FAILURE;
26942 }
26943
26944 /*-----------------------------------------------------------------------
26945 Get message buffer
26946 -----------------------------------------------------------------------*/
26947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
26948 sizeof(halTmMsg),
26949 &pSendBuffer, &usDataOffset, &usSendSize))||
26950 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
26951 {
26952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26953 "Unable to get send buffer in Set PNO req %x %x %x",
26954 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
26955 WDI_ASSERT(0);
26956 return WDI_STATUS_E_FAILURE;
26957 }
26958
26959 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
26960 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
26961
26962 wpalMemoryCopy( pSendBuffer+usDataOffset,
26963 &halTmMsg,
26964 sizeof(halTmMsg));
26965
26966 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
26967 pWDICtx->pfncRspCB = NULL;
26968 /*-------------------------------------------------------------------------
26969 Send Get STA Request to HAL
26970 -------------------------------------------------------------------------*/
26971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26972 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
26973}
26974
26975/* Fill the value from the global features enabled array to the global capabilities
26976 * bitmap struct
26977 */
26978static void
26979FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
26980{
26981 wpt_int8 i;
26982 for (i=0; i<len; i++)
26983 {
26984 setFeatCaps(fCaps, enabledFeat[i]);
26985 }
26986}
26987
26988/**
26989 @brief WDI_featureCapsExchangeReq
26990 Post feature capability bitmap exchange event.
26991 Host will send its own capability to FW in this req and
26992 expect FW to send its capability back as a bitmap in Response
26993
26994 @param
26995
26996 wdiFeatureCapsExchangeCb: callback called on getting the response.
26997 It is kept to mantain similarity between WDI reqs and if needed, can
26998 be used in future. Currently, It is set to NULL
26999
27000 pUserData: user data will be passed back with the
27001 callback
27002
27003 @see
27004 @return Result of the function call
27005*/
27006WDI_Status
27007WDI_featureCapsExchangeReq
27008(
27009 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27010 void* pUserData
27011)
27012{
27013 WDI_EventInfoType wdiEventData;
27014 wpt_int32 fCapsStructSize;
27015
27016 /*------------------------------------------------------------------------
27017 Sanity Check
27018 ------------------------------------------------------------------------*/
27019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27020 {
27021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27022 "WDI API call before module is initialized - Fail request");
27023
27024 return WDI_STATUS_E_NOT_ALLOWED;
27025 }
27026
27027 /* Allocate memory separately for global variable carrying FW caps */
27028 fCapsStructSize = sizeof(tWlanFeatCaps);
27029 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27030 if ( NULL == gpHostWlanFeatCaps )
27031 {
27032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27033 "Cannot allocate memory for host capability info\n");
27034 WDI_ASSERT(0);
27035 return WDI_STATUS_MEM_FAILURE;
27036 }
27037
27038 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27039
27040 /*------------------------------------------------------------------------
27041 Fill in Event data and post to the Main FSM
27042 ------------------------------------------------------------------------*/
27043 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27044 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070027045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27046 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 gpHostWlanFeatCaps->featCaps[0],
27048 gpHostWlanFeatCaps->featCaps[1],
27049 gpHostWlanFeatCaps->featCaps[2],
27050 gpHostWlanFeatCaps->featCaps[3]
27051 );
27052
27053 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27054 wdiEventData.pEventData = gpHostWlanFeatCaps;
27055 wdiEventData.uEventDataSize = fCapsStructSize;
27056 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27057 wdiEventData.pUserData = pUserData;
27058
27059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27060}
27061
27062/**
Yathishd8713192012-12-10 14:21:35 -080027063 @brief Disable Active mode offload in Host
27064
27065 @param void
27066 @see
27067 @return void
27068*/
27069void
27070WDI_disableCapablityFeature(wpt_uint8 feature_index)
27071{
27072 supportEnabledFeatures[feature_index] = 0;
27073 return;
27074}
27075
27076/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 @brief Process Host-FW Capability Exchange Request function
27078
27079 @param pWDICtx: pointer to the WLAN DAL context
27080 pEventData: pointer to the event information structure
27081
27082 @see
27083 @return Result of the function call
27084*/
27085WDI_Status
27086WDI_ProcessFeatureCapsExchangeReq
27087(
27088 WDI_ControlBlockType* pWDICtx,
27089 WDI_EventInfoType* pEventData
27090)
27091{
27092 wpt_uint8* pSendBuffer = NULL;
27093 wpt_uint16 usDataOffset = 0;
27094 wpt_uint16 usSendSize = 0;
27095 wpt_uint16 usLen = 0;
27096
27097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27098
27099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027100 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027101
27102 /*-------------------------------------------------------------------------
27103 Sanity check
27104 -------------------------------------------------------------------------*/
27105 /* Call back function is NULL since not required for cap exchange req */
27106 if (( NULL == pEventData ) ||
27107 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27108 {
27109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027111 WDI_ASSERT(0);
27112 return WDI_STATUS_E_FAILURE;
27113 }
27114
27115 /*-----------------------------------------------------------------------
27116 Get message buffer
27117 -----------------------------------------------------------------------*/
27118 usLen = sizeof(tWlanFeatCaps);
27119
27120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27121 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27122 usLen,
27123 &pSendBuffer, &usDataOffset, &usSendSize))||
27124 ( usSendSize < (usDataOffset + usLen )))
27125 {
27126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27127 "Unable to get send buffer in feat caps exchange req %x %x",
27128 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27129 WDI_ASSERT(0);
27130 return WDI_STATUS_E_FAILURE;
27131 }
27132
27133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027134 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027135 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27136 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27137 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27138 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27139 );
27140
27141 /* Copy host caps after the offset in the send buffer */
27142 wpalMemoryCopy( pSendBuffer+usDataOffset,
27143 (tWlanFeatCaps *)pEventData->pEventData,
27144 usLen);
27145
27146 /*-------------------------------------------------------------------------
27147 Send Start Request to HAL
27148 -------------------------------------------------------------------------*/
27149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27150 (WDI_StartRspCb)pEventData->pCBfnc,
27151 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27152
27153}/*WDI_ProcessFeatureCapsExchangeReq*/
27154
27155/**
27156 @brief Process Host-FW Capability Exchange Response function
27157
27158 @param pWDICtx: pointer to the WLAN DAL context
27159 pEventData: pointer to the event information structure
27160
27161 @see
27162 @return Result of the function call
27163*/
27164WDI_Status
27165WDI_ProcessFeatureCapsExchangeRsp
27166(
27167 WDI_ControlBlockType* pWDICtx,
27168 WDI_EventInfoType* pEventData
27169)
27170{
27171 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27172 wpt_int32 fCapsStructSize;
27173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27174
27175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027176 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027177
27178 /*-------------------------------------------------------------------------
27179 Sanity check
27180 -------------------------------------------------------------------------*/
27181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27182 ( NULL == pEventData->pEventData ))
27183 {
27184 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 WDI_ASSERT(0);
27188 return WDI_STATUS_E_FAILURE;
27189 }
27190
27191 /* Allocate memory separately for global variable carrying FW caps */
27192 fCapsStructSize = sizeof(tWlanFeatCaps);
27193 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27194 if ( NULL == gpFwWlanFeatCaps )
27195 {
27196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27197 "Cannot allocate memory for host capability info\n");
27198 WDI_ASSERT(0);
27199 return WDI_STATUS_MEM_FAILURE;
27200 }
27201
27202 /*-------------------------------------------------------------------------
27203 Unpack HAL Response Message - the header was already extracted by the
27204 main Response Handling procedure
27205 -------------------------------------------------------------------------*/
27206 /*-------------------------------------------------------------------------
27207 Extract response and send it to UMAC
27208 -------------------------------------------------------------------------*/
27209
27210 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27211 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070027212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27213 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027214 gpFwWlanFeatCaps->featCaps[0],
27215 gpFwWlanFeatCaps->featCaps[1],
27216 gpFwWlanFeatCaps->featCaps[2],
27217 gpFwWlanFeatCaps->featCaps[3]
27218 );
Jeff Johnson295189b2012-06-20 16:38:30 -070027219 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27220
27221 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27222 if (wdiFeatureCapsExchangeCb != NULL)
27223 wdiFeatureCapsExchangeCb(NULL, NULL);
27224
27225 return WDI_STATUS_SUCCESS;
27226}
27227
Mohit Khanna4a70d262012-09-11 16:30:12 -070027228#ifdef WLAN_FEATURE_11AC
27229WDI_Status
27230WDI_ProcessUpdateVHTOpModeRsp
27231(
27232 WDI_ControlBlockType* pWDICtx,
27233 WDI_EventInfoType* pEventData
27234)
27235{
27236 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27237 WDI_Status wdiStatus;
27238 eHalStatus halStatus;
27239
27240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27241
27242 /*-------------------------------------------------------------------------
27243 Sanity check
27244 -------------------------------------------------------------------------*/
27245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27246 ( NULL == pEventData->pEventData))
27247 {
27248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027249 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027250 WDI_ASSERT(0);
27251 return WDI_STATUS_E_FAILURE;
27252 }
27253 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27254
27255 /*-------------------------------------------------------------------------
27256 Extract response and send it to UMAC
27257 -------------------------------------------------------------------------*/
27258 halStatus = *((eHalStatus*)pEventData->pEventData);
27259 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27260
27261 /*Notify UMAC*/
27262 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27263
27264 return WDI_STATUS_SUCCESS;
27265}
27266#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027267/**
27268 @brief WDI_getHostWlanFeatCaps
27269 WDI API that returns whether the feature passed to it as enum value in
27270 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27271 variable storing host capability bitmap to find this. This can be used by
27272 other moduels to decide certain things like call different APIs based on
27273 whether a particular feature is supported.
27274
27275 @param
27276
27277 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27278
27279 @see
27280 @return
27281 0 - if the feature is NOT supported in host
27282 any non-zero value - if the feature is SUPPORTED in host.
27283*/
27284wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27285{
27286 wpt_uint8 featSupported = 0;
27287 if (gpHostWlanFeatCaps != NULL)
27288 {
27289 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27290 }
27291 else
27292 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027294 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027295 }
27296 return featSupported;
27297}
27298
27299/**
27300 @brief WDI_getFwWlanFeatCaps
27301 WDI API that returns whether the feature passed to it as enum value in
27302 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27303 variable storing host capability bitmap to find this. This can be used by
27304 other moduels to decide certain things like call different APIs based on
27305 whether a particular feature is supported.
27306
27307 @param
27308
27309 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27310 in wlan_hal_msg.h.
27311
27312 @see
27313 @return
27314 0 - if the feature is NOT supported in FW
27315 any non-zero value - if the feature is SUPPORTED in FW.
27316*/
27317wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27318{
27319 wpt_uint8 featSupported = 0;
27320 if (gpFwWlanFeatCaps != NULL)
27321 {
27322 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27323 }
27324 else
27325 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027327 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027328 }
27329 return featSupported;
27330}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027331
27332#ifdef WLAN_FEATURE_11AC
27333WDI_Status
27334WDI_ProcessUpdateVHTOpModeReq
27335(
27336 WDI_ControlBlockType* pWDICtx,
27337 WDI_EventInfoType* pEventData
27338)
27339{
27340 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27341 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27342 wpt_uint8* pSendBuffer = NULL;
27343 wpt_uint16 usDataOffset = 0;
27344 wpt_uint16 usSendSize = 0;
27345
27346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27347
27348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027349 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027350
27351 /*-------------------------------------------------------------------------
27352 Sanity check
27353 -------------------------------------------------------------------------*/
27354 if (( NULL == pEventData ) ||
27355 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27356 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27357 {
27358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027359 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027360 WDI_ASSERT(0);
27361 return WDI_STATUS_E_FAILURE;
27362 }
27363
27364 /*-----------------------------------------------------------------------
27365 Get message buffer
27366 -----------------------------------------------------------------------*/
27367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27368 sizeof(WDI_UpdateVHTOpMode),
27369 &pSendBuffer, &usDataOffset, &usSendSize))||
27370 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27371 {
27372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27373 "Unable to get send buffer in update vht opMode req");
27374 WDI_ASSERT(0);
27375 return WDI_STATUS_E_FAILURE;
27376 }
27377
27378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27379 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27380
27381 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27382 sizeof(WDI_UpdateVHTOpMode));
27383
27384 /*-------------------------------------------------------------------------
27385 Send Start Request to HAL
27386 -------------------------------------------------------------------------*/
27387 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27388 wdiVHTOpModeCb,
27389 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27390
27391}
27392
27393WDI_Status
27394WDI_UpdateVHTOpModeReq
27395(
27396 WDI_UpdateVHTOpMode *pData,
27397 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27398 void* pUserData
27399)
27400{
27401 WDI_EventInfoType wdiEventData;
27402
27403 /*------------------------------------------------------------------------
27404 Sanity Check
27405 ------------------------------------------------------------------------*/
27406 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27407 {
27408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27409 "WDI API call before module is initialized - Fail request");
27410
27411 return WDI_STATUS_E_NOT_ALLOWED;
27412 }
27413
27414 /*------------------------------------------------------------------------
27415 Fill in Event data and post to the Main FSM
27416 ------------------------------------------------------------------------*/
27417 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27418 wdiEventData.pEventData = pData;
27419 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27420 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27421 wdiEventData.pUserData = pUserData;
27422
27423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27424 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27425
27426 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27427
27428}
27429#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027430
27431/**
27432 @brief WDI_TransportChannelDebug -
27433 Display DXE Channel debugging information
27434 User may request to display DXE channel snapshot
27435 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027436
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027437 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027438 @param enableStallDetect : Enable stall detect feature
27439 This feature will take effect to data performance
27440 Not integrate till fully verification
27441 @see
27442 @return none
27443*/
27444void WDI_TransportChannelDebug
27445(
27446 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027447 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027448)
27449{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027450 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027451 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027452}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027453/**
27454 @brief WDI_SsrTimerCB
27455 Callback function for SSR timer, if this is called then the graceful
27456 shutdown for Riva did not happen.
27457
27458 @param pUserData : user data to timer
27459
27460 @see
27461 @return none
27462*/
27463void
27464WDI_SsrTimerCB
27465(
27466 void *pUserData
27467)
27468{
27469 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27471
27472 if (NULL == pWDICtx )
27473 {
27474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027475 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027476 WDI_ASSERT(0);
27477 return;
27478 }
27479 wpalRivaSubystemRestart();
27480
27481 return;
27482
27483}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027484
27485/**
27486 @brief WDI_SetEnableSSR -
27487 This API is called to enable/disable SSR on WDI timeout.
27488
27489 @param enableSSR : enable/disable SSR
27490
27491 @see
27492 @return none
27493*/
27494void WDI_SetEnableSSR(wpt_boolean enableSSR)
27495{
27496 gWDICb.bEnableSSR = enableSSR;
27497}