blob: f8c2fb5bce0e1c454905f20fd156a91199f64f74 [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*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700372#ifdef WLAN_FEATURE_11W
373 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
374#else
375 NULL,
376#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700377};
378
379
Jeff Johnsone7245742012-09-05 17:12:55 -0700380/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700381 DAL Request Processing Array - the functions in this table will only be
382 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700383 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700384 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700385WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700386{
387 /*INIT*/
388 WDI_ProcessStartRsp, /* WDI_START_RESP */
389 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
390 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
391
392 /*SCAN*/
393 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
394 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
395 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
396 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
397
398 /* ASSOCIATION*/
399 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
400 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
401 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
402 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
403 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
404
405 /* Security */
406 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
407 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
408 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
409 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
410
411 /* QoS and BA APIs */
412 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
413 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
414 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
415 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
416 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
417
418 /* Miscellaneous Control APIs */
419 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
420 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
421 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
422 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
423 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
424
425 /* BA APIs*/
426 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
427 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700428
Jeff Johnson295189b2012-06-20 16:38:30 -0700429 /* IBSS APIs*/
430 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
431 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
432
433 /*Soft AP APIs*/
434 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
435 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
436 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
437 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
438
439 /* PowerSave APIs */
440 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
441 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
442 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
443 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
444 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
445 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
446 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
447 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
448 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
449 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
450 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
451 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
452 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
453 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
454 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
455 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
456 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
457 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700458
Jeff Johnson295189b2012-06-20 16:38:30 -0700459
460 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
461
462 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
463 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
464#ifdef WLAN_FEATURE_VOWIFI_11R
465 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
466#else
467 NULL,
468#endif /* WLAN_FEATURE_VOWIFI_11R */
469 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
470 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700471#ifdef FEATURE_OEM_DATA_SUPPORT
472 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
473#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700474 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700475#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700476 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700479
Jeff Johnson295189b2012-06-20 16:38:30 -0700480 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700481
Jeff Johnsone7245742012-09-05 17:12:55 -0700482 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
483
Jeff Johnson295189b2012-06-20 16:38:30 -0700484#ifdef FEATURE_WLAN_SCAN_PNO
485 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
486 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
487 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
488#else
489 NULL,
490 NULL,
491 NULL,
492#endif // FEATURE_WLAN_SCAN_PNO
493
494 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
495
496 /*---------------------------------------------------------------------
497 Indications
498 ---------------------------------------------------------------------*/
499#ifdef WLAN_FEATURE_PACKET_FILTERING
500 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700501 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700503 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700505 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#else
509 NULL,
510 NULL,
511 NULL,
512 NULL,
513#endif // WLAN_FEATURE_PACKET_FILTERING
514
515 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
516 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
517
518 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
519#ifdef FEATURE_WLAN_CCX
520 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
521#else
522 NULL,
523#endif
524
525#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700526 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
527 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528#else
529 NULL,
530 NULL,
531#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700532 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
533 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700534#ifdef WLAN_FEATURE_11AC
535 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700536#else
537 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700538#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800539#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
540 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
541#else
542 NULL,
543#endif
schangd82195a2013-03-13 18:41:24 -0700544 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700545#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700546 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700547#else
548 NULL,
549#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530550#ifdef FEATURE_WLAN_TDLS
551 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
552#else
553 NULL,
554#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /*---------------------------------------------------------------------
556 Indications
557 ---------------------------------------------------------------------*/
558 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
559 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
560 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
561 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
562 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
563 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
564
565 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
566
567 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
568
Jeff Johnson295189b2012-06-20 16:38:30 -0700569 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700570
571#ifdef FEATURE_WLAN_SCAN_PNO
572 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
573#else
574 NULL,
575#endif // FEATURE_WLAN_SCAN_PNO
576
577#ifdef WLAN_WAKEUP_EVENTS
578 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
579#else // WLAN_WAKEUP_EVENTS
580 NULL,
581#endif // WLAN_WAKEUP_EVENTS
582
583 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800584
Viral Modi9dc288a2012-12-10 13:09:21 -0800585 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530586#ifdef FEATURE_WLAN_TDLS
587 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
588#else
589 NULL,
590#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700591};
592
593
Jeff Johnsone7245742012-09-05 17:12:55 -0700594/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700595 WLAN DAL Global Control Block
596 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700597WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700598static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
599
Jeff Johnsone7245742012-09-05 17:12:55 -0700600const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700601
602/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700603WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700604void* WDI_GET_PAL_CTX( void )
605{
Jeff Johnsone7245742012-09-05 17:12:55 -0700606 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700607}/*WDI_GET_PAL_CTX*/
608
Jeff Johnsone7245742012-09-05 17:12:55 -0700609/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700610 Helper inline converters
611 ============================================================================*/
612/*Convert WDI driver type into HAL driver type*/
613WPT_STATIC WPT_INLINE WDI_Status
614WDI_HAL_2_WDI_STATUS
615(
616 eHalStatus halStatus
617);
618
619/*Convert WDI request type into HAL request type*/
620WPT_STATIC WPT_INLINE tHalHostMsgType
621WDI_2_HAL_REQ_TYPE
622(
623 WDI_RequestEnumType wdiReqType
624);
625
626/*Convert WDI response type into HAL response type*/
627WPT_STATIC WPT_INLINE WDI_ResponseEnumType
628HAL_2_WDI_RSP_TYPE
629(
630 tHalHostMsgType halMsg
631);
632
633/*Convert WDI driver type into HAL driver type*/
634WPT_STATIC WPT_INLINE tDriverType
635WDI_2_HAL_DRV_TYPE
636(
637 WDI_DriverType wdiDriverType
638);
639
640/*Convert WDI stop reason into HAL stop reason*/
641WPT_STATIC WPT_INLINE tHalStopType
642WDI_2_HAL_STOP_REASON
643(
644 WDI_StopType wdiStopType
645);
646
647/*Convert WDI scan mode type into HAL scan mode type*/
648WPT_STATIC WPT_INLINE eHalSysMode
649WDI_2_HAL_SCAN_MODE
650(
651 WDI_ScanMode wdiScanMode
652);
653
654/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700655WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700656WDI_2_HAL_SEC_CH_OFFSET
657(
658 WDI_HTSecondaryChannelOffset wdiSecChOffset
659);
660
661/*Convert WDI BSS type into HAL BSS type*/
662WPT_STATIC WPT_INLINE tSirBssType
663WDI_2_HAL_BSS_TYPE
664(
665 WDI_BssType wdiBSSType
666);
667
668/*Convert WDI NW type into HAL NW type*/
669WPT_STATIC WPT_INLINE tSirNwType
670WDI_2_HAL_NW_TYPE
671(
672 WDI_NwType wdiNWType
673);
674
675/*Convert WDI chanel bonding type into HAL cb type*/
676WPT_STATIC WPT_INLINE ePhyChanBondState
677WDI_2_HAL_CB_STATE
678(
679 WDI_PhyChanBondState wdiCbState
680);
681
682/*Convert WDI chanel bonding type into HAL cb type*/
683WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
684WDI_2_HAL_HT_OPER_MODE
685(
686 WDI_HTOperatingMode wdiHTOperMode
687);
688
689/*Convert WDI mimo PS type into HAL mimo PS type*/
690WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
691WDI_2_HAL_MIMO_PS
692(
693 WDI_HTMIMOPowerSaveState wdiHTOperMode
694);
695
696/*Convert WDI ENC type into HAL ENC type*/
697WPT_STATIC WPT_INLINE tAniEdType
698WDI_2_HAL_ENC_TYPE
699(
700 WDI_EncryptType wdiEncType
701);
702
703/*Convert WDI WEP type into HAL WEP type*/
704WPT_STATIC WPT_INLINE tAniWepType
705WDI_2_HAL_WEP_TYPE
706(
707 WDI_WepType wdiWEPType
708);
709
710/*Convert WDI Link State into HAL Link State*/
711WPT_STATIC WPT_INLINE tSirLinkState
712WDI_2_HAL_LINK_STATE
713(
714 WDI_LinkStateType wdiLinkState
715);
716
Jeff Johnsone7245742012-09-05 17:12:55 -0700717/*Translate a STA Context from WDI into HAL*/
718WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700719void
720WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700721(
Jeff Johnson295189b2012-06-20 16:38:30 -0700722 tConfigStaParams* phalConfigSta,
723 WDI_ConfigStaReqInfoType* pwdiConfigSta
724);
Jeff Johnsone7245742012-09-05 17:12:55 -0700725
726/*Translate a Rate set info from WDI into HAL*/
727WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700728WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700729(
Jeff Johnson295189b2012-06-20 16:38:30 -0700730 tSirMacRateSet* pHalRateSet,
731 WDI_RateSet* pwdiRateSet
732);
733
734/*Translate an EDCA Parameter Record from WDI into HAL*/
735WPT_STATIC WPT_INLINE void
736WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700737(
Jeff Johnson295189b2012-06-20 16:38:30 -0700738 tSirMacEdcaParamRecord* phalEdcaParam,
739 WDI_EdcaParamRecord* pWDIEdcaParam
740);
741
742/*Copy a management frame header from WDI fmt into HAL fmt*/
743WPT_STATIC WPT_INLINE void
744WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
745(
746 tSirMacMgmtHdr* pmacMgmtHdr,
747 WDI_MacMgmtHdr* pwdiMacMgmtHdr
748);
749
750/*Copy config bss parameters from WDI fmt into HAL fmt*/
751WPT_STATIC WPT_INLINE void
752WDI_CopyWDIConfigBSSToHALConfigBSS
753(
754 tConfigBssParams* phalConfigBSS,
755 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
756);
757
Jeff Johnsone7245742012-09-05 17:12:55 -0700758/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700759 pointed to by user data */
760WPT_STATIC WPT_INLINE void
761WDI_ExtractRequestCBFromEvent
762(
763 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700764 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700765 void** ppUserData
766);
767
768wpt_uint8
769WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700770(
Jeff Johnson295189b2012-06-20 16:38:30 -0700771 WDI_ControlBlockType* pWDICtx,
772 WDI_BSSSessionType** ppSession
773);
774
775void
776WDI_AddBcastSTAtoSTATable
777(
778 WDI_ControlBlockType* pWDICtx,
779 WDI_AddStaParams * staParams,
780 wpt_uint16 usBcastStaIdx
781);
782
783WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700784(
Jeff Johnson295189b2012-06-20 16:38:30 -0700785 WDI_ControlBlockType* pWDICtx,
786 WDI_EventInfoType* pEventData
787);
788
789void
790WDI_SetPowerStateCb
791(
792 wpt_status status,
793 unsigned int dxePhyAddr,
794 void *pContext
795);
796
797#define CASE_RETURN_STRING( str ) \
798 case ( ( str ) ): return( #str ); break \
799
800/**
801 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700802
803 @param wdiReqMsgId: WDI Message request Id
804
805 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700806 @return Result of the function call
807*/
808static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
809{
810 switch (wdiReqMsgId)
811 {
812 CASE_RETURN_STRING( WDI_START_REQ );
813 CASE_RETURN_STRING( WDI_STOP_REQ );
814 CASE_RETURN_STRING( WDI_CLOSE_REQ );
815 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
816 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
817 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
818 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
819 CASE_RETURN_STRING( WDI_JOIN_REQ );
820 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
821 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
822 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
823 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
824 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
825 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
826 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
827 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
828 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
829 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
830 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
831 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
832 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
833 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
834 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
835 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
836 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
837 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
838 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
839 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
840 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
841 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
842 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
843 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
844 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
845 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
846 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530847#ifdef FEATURE_WLAN_TDLS
848 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700850 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
851 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
852 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
853 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
854 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
855 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
856 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
857 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
858 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
859 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
860 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
862 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
863 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
864 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
865 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
866 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
867 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
868 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
869 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
870 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
871 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
872 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
873 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
874 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700875 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700876 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
877 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
878 #ifdef FEATURE_WLAN_SCAN_PNO
879 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
880 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
881 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
882 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700883#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700884 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700885#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700886 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
887 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
888 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
889 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
890 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
891 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
892 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
893 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
894 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800895 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800896 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700897#ifdef WLAN_FEATURE_11W
898 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
899#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700900 default:
901 return "Unknown WDI MessageId";
902 }
903}
904
905
906
907/**
908 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700909
910 @param wdiRespMsgId: WDI Message response Id
911
912 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700913 @return Result of the function call
914*/
915static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
916{
917 switch (wdiRespMsgId)
918 {
919 CASE_RETURN_STRING( WDI_START_RESP );
920 CASE_RETURN_STRING( WDI_STOP_RESP );
921 CASE_RETURN_STRING( WDI_CLOSE_RESP );
922 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
923 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
924 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
925 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
926 CASE_RETURN_STRING( WDI_JOIN_RESP );
927 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
928 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
929 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
930 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
931 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
932 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
933 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
934 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
935 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
936 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
937 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
938 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
939 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
940 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
941 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
942 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
943 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
944 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
945 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
946 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
947 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
948 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
949 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
950 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
951 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
952 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
953 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530954#ifdef FEATURE_WLAN_TDLS
955 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
956 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
957#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700958 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
959 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
960 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
961 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
962 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
963 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
964 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
965 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
966 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
967 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
968 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
969 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
970 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
971 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
972 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
973 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
974 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
975 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
976 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
977 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
978 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
979 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
980 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
981 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
982 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700983 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700984 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
985 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
986 #ifdef FEATURE_WLAN_SCAN_PNO
987 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
988 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
989 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
990 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700991#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700992 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700993#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700994 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
995 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
996 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
997 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
998 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
999 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1000 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1001 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001002 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001003 default:
1004 return "Unknown WDI MessageId";
1005 }
1006}
1007
1008/**
1009 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001010
1011 @param halStatusId: HAL status Id
1012
1013 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001014 @return Result of the function call
1015*/
1016static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1017{
1018 switch (halStatusId)
1019 {
1020 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1021 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1022 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1023 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1024 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1025 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1026 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1027 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1028 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1029 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1030 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1031 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1032 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1033 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1034 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1035 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1036 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1037 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1038 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1039 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1040 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1041 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1042 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1043 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1044 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1045 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1046 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1047 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1048 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1049 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1050 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1051 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1052 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1053 default:
1054 return "Unknown HAL status";
1055 }
1056}
1057
Jeff Johnsone7245742012-09-05 17:12:55 -07001058/*========================================================================
1059
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001061
Jeff Johnson295189b2012-06-20 16:38:30 -07001062==========================================================================*/
1063
1064/**
1065 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001066
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 DAL will allocate all the resources it needs. It will open PAL, it will also
1068 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001069 DXE/SMD or any other drivers that they need.
1070
Jeff Johnson295189b2012-06-20 16:38:30 -07001071 @param pOSContext: pointer to the OS context provided by the UMAC
1072 will be passed on to PAL on Open
1073 ppWDIGlobalCtx: output pointer of Global Context
1074 pWdiDevCapability: output pointer of device capability
1075
1076 @return Result of the function call
1077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001079WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001080(
Jeff Johnson295189b2012-06-20 16:38:30 -07001081 void* pOSContext,
1082 void** ppWDIGlobalCtx,
1083 WDI_DeviceCapabilityType* pWdiDevCapability,
1084 unsigned int driverType
1085)
1086{
1087 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001088 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001090 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1092
1093 /*---------------------------------------------------------------------
1094 Sanity check
1095 ---------------------------------------------------------------------*/
1096 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1097 {
1098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1099 "Invalid input parameters in WDI_Init");
1100
Jeff Johnsone7245742012-09-05 17:12:55 -07001101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 }
1103
1104 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001105 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001106 ---------------------------------------------------------------------*/
1107 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1108 {
1109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1110 "WDI module already initialized - return");
1111
Jeff Johnsone7245742012-09-05 17:12:55 -07001112 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001113 }
1114
1115 /*Module is now initialized - this flag is to ensure the fact that multiple
1116 init will not happen on WDI
1117 !! - potential race does exist because read and set are not atomic,
1118 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001119 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001120
1121 /*Setup the control block */
1122 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001123 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001124
1125 /*Setup the STA Table*/
1126 wdiStatus = WDI_STATableInit(&gWDICb);
1127 if ( WDI_STATUS_SUCCESS != wdiStatus )
1128 {
1129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1130 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001131 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001132 goto fail_STATableInit;
1133 }
1134
1135 /*------------------------------------------------------------------------
1136 Open the PAL
1137 ------------------------------------------------------------------------*/
1138 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1139 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1140 {
1141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1142 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001143 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 goto fail_wpalOpen;
1145 }
1146
1147 /*Initialize main synchro mutex - it will be used to ensure integrity of
1148 the main WDI Control Block*/
1149 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1150 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1151 {
1152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1153 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001154 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001155 goto fail_mutex;
1156 }
1157
1158 /*Initialize the response timer - it will be used to time all messages
1159 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001160 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1161 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 &gWDICb);
1163 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1164 {
1165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1166 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001167 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 goto fail_timer;
1169 }
1170
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001171 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1172 WDI_SsrTimerCB,
1173 &gWDICb);
1174 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1175 {
1176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1177 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001178 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001179 goto fail_timer2;
1180 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001181 /* Initialize the WDI Pending Request Queue*/
1182 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1183 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1184 {
1185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1186 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001187 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 goto fail_pend_queue;
1189 }
1190
1191 /*Init WDI Pending Assoc Id Queue */
1192 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1193 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1194 {
1195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1196 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001197 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001198 goto fail_assoc_queue;
1199 }
1200
1201 /*Initialize the BSS sessions pending Queue */
1202 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1203 {
1204 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1205 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1206 {
1207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1208 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001209 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001210 goto fail_bss_queue;
1211 }
1212 }
1213
1214 /*Indicate the control block is sufficiently initialized for callbacks*/
1215 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1216
1217 /*------------------------------------------------------------------------
1218 Initialize the Data Path Utility Module
1219 ------------------------------------------------------------------------*/
1220 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1221 if ( WDI_STATUS_SUCCESS != wdiStatus )
1222 {
1223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1224 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001225 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001226 goto fail_dp_util_init;
1227 }
1228
1229 /* Init Set power state event */
1230 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001231 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001232 {
1233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1234 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001235 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001236 goto fail_power_event;
1237 }
1238
1239 /* Init WCTS action event */
1240 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001241 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 {
1243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1244 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001245 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001246 goto fail_wcts_event;
1247 }
1248
1249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001250 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 ------------------------------------------------------------------------*/
1252 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1253 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001254 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001255 wctsCBs.wctsRxMsgCBData = &gWDICb;
1256
Jeff Johnsone7245742012-09-05 17:12:55 -07001257 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001259 WDI_CT_CHANNEL_SIZE,
1260 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001261
1262 if ( NULL == gWDICb.wctsHandle )
1263 {
1264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001265 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 goto fail_wcts_open;
1267 }
1268
1269 gWDICb.driverMode = (tDriverType)driverType;
1270 /* FTM mode not need to open Transport Driver */
1271 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001272 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001273 /*------------------------------------------------------------------------
1274 Open the Data Transport
1275 ------------------------------------------------------------------------*/
1276 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1277 {
1278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001279 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 goto fail_wdts_open;
1281 }
1282 }
1283
1284 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001285 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001286
1287 /*Send the context as a ptr to the global WDI Control Block*/
1288 *ppWDIGlobalCtx = &gWDICb;
1289
1290 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001291 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1293 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1294 return WDI_STATUS_SUCCESS;
1295
1296 /* ERROR handlers
1297 Undo everything that completed successfully */
1298
1299 fail_wdts_open:
1300 {
1301 wpt_status eventStatus;
1302
1303 /* Closing WCTS in this scenario is tricky since it has to close
1304 the SMD channel and then we get notified asynchronously when
1305 the channel has been closed. So we take some of the logic from
1306 the "normal" close procedure in WDI_Close()
1307 */
1308
1309 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001310 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001311 {
1312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001313 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001314 }
1315
1316 WCTS_CloseTransport(gWDICb.wctsHandle);
1317
1318 /* Wait for WCTS to close the control transport. If we were able
1319 to reset the event flag, then we'll wait for the event,
1320 otherwise we'll wait for a maximum amount of time required for
1321 the channel to be closed */
1322 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1323 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001324 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 WDI_WCTS_ACTION_TIMEOUT);
1326 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1327 {
1328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001329 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001330 }
1331 }
1332 else
1333 {
1334 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1335 }
1336 }
1337 fail_wcts_open:
1338 wpalEventDelete(&gWDICb.wctsActionEvent);
1339 fail_wcts_event:
1340 wpalEventDelete(&gWDICb.setPowerStateEvent);
1341 fail_power_event:
1342 WDI_DP_UtilsExit(&gWDICb);
1343 fail_dp_util_init:
1344 gWDICb.magic = 0;
1345 fail_bss_queue:
1346 /* entries 0 thru i-1 were successfully initialized */
1347 while (0 < i)
1348 {
1349 i--;
1350 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1351 }
1352 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1353 fail_assoc_queue:
1354 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1355 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001356 wpalTimerDelete(&gWDICb.ssrTimer);
1357 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001358 wpalTimerDelete(&gWDICb.wptResponseTimer);
1359 fail_timer:
1360 wpalMutexDelete(&gWDICb.wptMutex);
1361 fail_mutex:
1362 wpalClose(gWDICb.pPALContext);
1363 fail_wpalOpen:
1364 WDI_STATableClose(&gWDICb);
1365 fail_STATableInit:
1366 gWDIInitialized = eWLAN_PAL_FALSE;
1367
1368 return WDI_STATUS_E_FAILURE;
1369
1370}/*WDI_Init*/;
1371
1372/**
1373 @brief WDI_Start will be called when the upper MAC is ready to
1374 commence operation with the WLAN Device. Upon the call
1375 of this API the WLAN DAL will pack and send a HAL Start
1376 message to the lower RIVA sub-system if the SMD channel
1377 has been fully opened and the RIVA subsystem is up.
1378
1379 If the RIVA sub-system is not yet up and running DAL
1380 will queue the request for Open and will wait for the
1381 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001383
1384 WDI_Init must have been called.
1385
Jeff Johnsone7245742012-09-05 17:12:55 -07001386 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001388
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 wdiStartRspCb: callback for passing back the response of
1390 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001391
Jeff Johnson295189b2012-06-20 16:38:30 -07001392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001393 callback
1394
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 @see WDI_Start
1396 @return Result of the function call
1397*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001398WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001399WDI_Start
1400(
1401 WDI_StartReqParamsType* pwdiStartParams,
1402 WDI_StartRspCb wdiStartRspCb,
1403 void* pUserData
1404)
1405{
1406 WDI_EventInfoType wdiEventData;
1407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1408
1409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001411 ------------------------------------------------------------------------*/
1412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1415 "WDI API call before module is initialized - Fail request");
1416
Jeff Johnsone7245742012-09-05 17:12:55 -07001417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001418 }
1419
1420 /*------------------------------------------------------------------------
1421 Fill in Event data and post to the Main FSM
1422 ------------------------------------------------------------------------*/
1423 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 wdiEventData.pEventData = pwdiStartParams;
1425 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1426 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 wdiEventData.pUserData = pUserData;
1428
1429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1430
1431}/*WDI_Start*/
1432
1433/**
1434 @brief WDI_Stop will be called when the upper MAC is ready to
1435 stop any operation with the WLAN Device. Upon the call
1436 of this API the WLAN DAL will pack and send a HAL Stop
1437 message to the lower RIVA sub-system if the DAL Core is
1438 in started state.
1439
1440 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001441
1442 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001443
1444 WDI_Start must have been called.
1445
Jeff Johnsone7245742012-09-05 17:12:55 -07001446 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001448
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 wdiStopRspCb: callback for passing back the response of
1450 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001451
Jeff Johnson295189b2012-06-20 16:38:30 -07001452 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001453 callback
1454
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 @see WDI_Start
1456 @return Result of the function call
1457*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001458WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001459WDI_Stop
1460(
1461 WDI_StopReqParamsType* pwdiStopParams,
1462 WDI_StopRspCb wdiStopRspCb,
1463 void* pUserData
1464)
1465{
1466 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001467 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1469
1470 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001471 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 ------------------------------------------------------------------------*/
1473 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1474 {
1475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1476 "WDI API call before module is initialized - Fail request");
1477
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001479 }
1480
Jeff Johnson43971f52012-07-17 12:26:56 -07001481 /*Access to the global state must be locked before cleaning */
1482 wpalMutexAcquire(&pWDICtx->wptMutex);
1483
1484 /*Clear all pending request*/
1485 WDI_ClearPendingRequests(pWDICtx);
1486
1487 /*We have completed cleaning unlock now*/
1488 wpalMutexRelease(&pWDICtx->wptMutex);
1489
Jeff Johnson295189b2012-06-20 16:38:30 -07001490 /* Free the global variables */
1491 wpalMemoryFree(gpHostWlanFeatCaps);
1492 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001493 gpHostWlanFeatCaps = NULL;
1494 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001495
1496 /*------------------------------------------------------------------------
1497 Fill in Event data and post to the Main FSM
1498 ------------------------------------------------------------------------*/
1499 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001500 wdiEventData.pEventData = pwdiStopParams;
1501 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1502 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 wdiEventData.pUserData = pUserData;
1504
1505 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1506
1507}/*WDI_Stop*/
1508
1509
1510
1511/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001512 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 needs to interact with DAL. DAL will free its control
1514 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001515
1516 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001517
1518 WDI_Stop must have been called.
1519
1520 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001521
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 @see WDI_Stop
1523 @return Result of the function call
1524*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001526WDI_Close
1527(
1528 void
1529)
1530{
1531 wpt_uint8 i;
1532 WDI_EventInfoType wdiEventData;
1533 wpt_status wptStatus;
1534 wpt_status eventStatus;
1535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1536
1537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001538 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 ------------------------------------------------------------------------*/
1540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1541 {
1542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1543 "WDI API call before module is initialized - Fail request");
1544
Jeff Johnsone7245742012-09-05 17:12:55 -07001545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001546 }
1547
1548 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1549 (the control transport will be closed by the FSM and we'll want
1550 to wait until that completes)*/
1551 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001552 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001553 {
1554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001555 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001556 /* fall through and try to finish closing via the FSM */
1557 }
1558
1559 /*------------------------------------------------------------------------
1560 Fill in Event data and post to the Main FSM
1561 ------------------------------------------------------------------------*/
1562 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 wdiEventData.pEventData = NULL;
1564 wdiEventData.uEventDataSize = 0;
1565 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 wdiEventData.pUserData = NULL;
1567
1568 gWDIInitialized = eWLAN_PAL_FALSE;
1569
1570 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1571
1572 /*Wait for WCTS to close the control transport
1573 (but only if we were able to reset the event flag*/
1574 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1575 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001576 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 WDI_WCTS_ACTION_TIMEOUT);
1578 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1579 {
1580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001581 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 }
1583 }
1584
1585 /* Destroy the WCTS action event */
1586 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1587 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1588 {
1589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1590 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001591 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001592 }
1593
1594 /* Destroy the Set Power State event */
1595 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1596 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1597 {
1598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1599 "WDI Close failed to destroy an event");
1600
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 }
1603
1604 /*------------------------------------------------------------------------
1605 Closes the Data Path Utility Module
1606 ------------------------------------------------------------------------*/
1607 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1608 {
1609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1610 "WDI Init failed to close the DP Util Module");
1611
Jeff Johnsone7245742012-09-05 17:12:55 -07001612 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001613 }
1614
1615 /*destroy the BSS sessions pending Queue */
1616 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1617 {
1618 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1619 }
1620
1621 /* destroy the WDI Pending Assoc Id Request Queue*/
1622 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1623
1624 /* destroy the WDI Pending Request Queue*/
1625 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001626
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 /*destroy the response timer */
1628 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1629
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001630 /*destroy the SSR timer */
1631 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1632
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 /*invalidate the main synchro mutex */
1634 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1635 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1638 "Failed to delete mutex %d", wptStatus);
1639 WDI_ASSERT(0);
1640 }
1641
1642 /*Clear control block. note that this will clear the "magic"
1643 which will inhibit all asynchronous callbacks*/
1644 WDI_CleanCB(&gWDICb);
1645
1646 return wptStatus;
1647
1648}/*WDI_Close*/
1649
1650/**
1651 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1652 This will do most of the WDI stop & close
1653 operations without doing any handshake with Riva
1654
1655 This will also make sure that the control transport
1656 will NOT be closed.
1657
1658 This request will not be queued.
1659
1660
1661 WDI_Start must have been called.
1662
1663 @param closeTransport: Close control channel if this is set
1664
1665 @return Result of the function call
1666*/
1667WDI_Status
1668WDI_Shutdown
1669(
1670 wpt_boolean closeTransport
1671)
1672{
1673 WDI_EventInfoType wdiEventData;
1674 wpt_status wptStatus;
1675 int i = 0;
1676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1677
1678 /*------------------------------------------------------------------------
1679 Sanity Check
1680 ------------------------------------------------------------------------*/
1681 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1682 {
1683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1684 "WDI API call before module is initialized - Fail request");
1685
1686 return WDI_STATUS_E_NOT_ALLOWED;
1687 }
1688
1689 /*------------------------------------------------------------------------
1690 Fill in Event data and post to the Main FSM
1691 ------------------------------------------------------------------------*/
1692 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1693 wdiEventData.pEventData = NULL;
1694 wdiEventData.uEventDataSize = 0;
1695
1696 /* Shutdown will not be queued, if the state is busy timer will be
1697 * stopped & this message will be processed.*/
1698 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1699 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1700 {
1701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001702 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 }
1704 /* Destroy the Set Power State event */
1705 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1706 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1707 {
1708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1709 "WDI Close failed to destroy an event");
1710
1711 WDI_ASSERT(0);
1712 }
1713 /*------------------------------------------------------------------------
1714 Closes the Data Path Utility Module
1715 ------------------------------------------------------------------------*/
1716 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1717 {
1718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1719 "WDI Init failed to close the DP Util Module");
1720
1721 WDI_ASSERT(0);
1722 }
1723 if ( closeTransport )
1724 {
1725 /* Close control transport, called from module unload */
1726 WCTS_CloseTransport(gWDICb.wctsHandle);
1727 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001728 else
1729 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001730 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001731 the pending messages in the transport queue */
1732 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1733 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001734 /*destroy the BSS sessions pending Queue */
1735 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1736 {
1737 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1738 }
1739
1740 /* destroy the WDI Pending Assoc Id Request Queue*/
1741 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1742 /* destroy the WDI Pending Request Queue*/
1743 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1744 /*destroy the response timer */
1745 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001746 /*destroy the SSR timer */
1747 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001748
1749 /*invalidate the main synchro mutex */
1750 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1751 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1752 {
1753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001754 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 WDI_ASSERT(0);
1756 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001757 /* Free the global variables */
1758 wpalMemoryFree(gpHostWlanFeatCaps);
1759 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001760 gpHostWlanFeatCaps = NULL;
1761 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /*Clear control block. note that this will clear the "magic"
1763 which will inhibit all asynchronous callbacks*/
1764 WDI_CleanCB(&gWDICb);
1765 return wptStatus;
1766
1767}/*WDI_Shutdown*/
1768
1769
Jeff Johnsone7245742012-09-05 17:12:55 -07001770/*========================================================================
1771
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001773
Jeff Johnson295189b2012-06-20 16:38:30 -07001774==========================================================================*/
1775
1776/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001777 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001778 the WLAN Device to get ready for a scan procedure. Upon
1779 the call of this API the WLAN DAL will pack and send a
1780 HAL Init Scan request message to the lower RIVA
1781 sub-system if DAL is in state STARTED.
1782
1783 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001785
1786 WDI_Start must have been called.
1787
1788 @param wdiInitScanParams: the init scan parameters as specified
1789 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001790
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 wdiInitScanRspCb: callback for passing back the response
1792 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001793
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001795 callback
1796
Jeff Johnson295189b2012-06-20 16:38:30 -07001797 @see WDI_Start
1798 @return Result of the function call
1799*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001800WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001801WDI_InitScanReq
1802(
1803 WDI_InitScanReqParamsType* pwdiInitScanParams,
1804 WDI_InitScanRspCb wdiInitScanRspCb,
1805 void* pUserData
1806)
1807{
1808 WDI_EventInfoType wdiEventData;
1809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1810
1811 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001812 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001813 ------------------------------------------------------------------------*/
1814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1815 {
1816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1817 "WDI API call before module is initialized - Fail request");
1818
Jeff Johnsone7245742012-09-05 17:12:55 -07001819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001820 }
1821
1822 /*------------------------------------------------------------------------
1823 Fill in Event data and post to the Main FSM
1824 ------------------------------------------------------------------------*/
1825 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001826 wdiEventData.pEventData = pwdiInitScanParams;
1827 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1828 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001829 wdiEventData.pUserData = pUserData;
1830
1831 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1832
1833}/*WDI_InitScanReq*/
1834
1835/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 wishes to change the Scan channel on the WLAN Device.
1838 Upon the call of this API the WLAN DAL will pack and
1839 send a HAL Start Scan request message to the lower RIVA
1840 sub-system if DAL is in state STARTED.
1841
1842 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001844
1845 WDI_InitScanReq must have been called.
1846
Jeff Johnsone7245742012-09-05 17:12:55 -07001847 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001849
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 wdiStartScanRspCb: callback for passing back the
1851 response of the start scan operation received from the
1852 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001853
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 callback
1856
Jeff Johnson295189b2012-06-20 16:38:30 -07001857 @see WDI_InitScanReq
1858 @return Result of the function call
1859*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001860WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001861WDI_StartScanReq
1862(
1863 WDI_StartScanReqParamsType* pwdiStartScanParams,
1864 WDI_StartScanRspCb wdiStartScanRspCb,
1865 void* pUserData
1866)
1867{
1868 WDI_EventInfoType wdiEventData;
1869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1870
1871 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 ------------------------------------------------------------------------*/
1874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1875 {
1876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1877 "WDI API call before module is initialized - Fail request");
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 }
1881
1882 /*------------------------------------------------------------------------
1883 Fill in Event data and post to the Main FSM
1884 ------------------------------------------------------------------------*/
1885 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 wdiEventData.pEventData = pwdiStartScanParams;
1887 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1888 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 wdiEventData.pUserData = pUserData;
1890
1891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1892
1893}/*WDI_StartScanReq*/
1894
1895
1896/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001897 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 wants to end scanning for a particular channel that it
1899 had set before by calling Scan Start on the WLAN Device.
1900 Upon the call of this API the WLAN DAL will pack and
1901 send a HAL End Scan request message to the lower RIVA
1902 sub-system if DAL is in state STARTED.
1903
1904 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001905 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001906
1907 WDI_StartScanReq must have been called.
1908
Jeff Johnsone7245742012-09-05 17:12:55 -07001909 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001910 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001911
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 wdiEndScanRspCb: callback for passing back the response
1913 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001914
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 callback
1917
Jeff Johnson295189b2012-06-20 16:38:30 -07001918 @see WDI_StartScanReq
1919 @return Result of the function call
1920*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001921WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001922WDI_EndScanReq
1923(
1924 WDI_EndScanReqParamsType* pwdiEndScanParams,
1925 WDI_EndScanRspCb wdiEndScanRspCb,
1926 void* pUserData
1927)
1928{
1929 WDI_EventInfoType wdiEventData;
1930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1931
1932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 ------------------------------------------------------------------------*/
1935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1936 {
1937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1938 "WDI API call before module is initialized - Fail request");
1939
Jeff Johnsone7245742012-09-05 17:12:55 -07001940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 }
1942
1943 /*------------------------------------------------------------------------
1944 Fill in Event data and post to the Main FSM
1945 ------------------------------------------------------------------------*/
1946 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 wdiEventData.pEventData = pwdiEndScanParams;
1948 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1949 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 wdiEventData.pUserData = pUserData;
1951
1952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1953
1954}/*WDI_EndScanReq*/
1955
1956
1957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 completed the scan process on the WLAN Device. Upon the
1960 call of this API the WLAN DAL will pack and send a HAL
1961 Finish Scan Request request message to the lower RIVA
1962 sub-system if DAL is in state STARTED.
1963
1964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001966
1967 WDI_InitScanReq must have been called.
1968
Jeff Johnsone7245742012-09-05 17:12:55 -07001969 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001970 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001971
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 wdiFinishScanRspCb: callback for passing back the
1973 response of the finish scan operation received from the
1974 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001975
Jeff Johnson295189b2012-06-20 16:38:30 -07001976 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 callback
1978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 @see WDI_InitScanReq
1980 @return Result of the function call
1981*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001982WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001983WDI_FinishScanReq
1984(
1985 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1986 WDI_FinishScanRspCb wdiFinishScanRspCb,
1987 void* pUserData
1988)
1989{
1990 WDI_EventInfoType wdiEventData;
1991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1992
1993 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001994 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001995 ------------------------------------------------------------------------*/
1996 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1997 {
1998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1999 "WDI API call before module is initialized - Fail request");
2000
Jeff Johnsone7245742012-09-05 17:12:55 -07002001 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 }
2003
2004 /*------------------------------------------------------------------------
2005 Fill in Event data and post to the Main FSM
2006 ------------------------------------------------------------------------*/
2007 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002008 wdiEventData.pEventData = pwdiFinishScanParams;
2009 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2010 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 wdiEventData.pUserData = pUserData;
2012
2013 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2014
2015}/*WDI_FinishScanReq*/
2016
Jeff Johnsone7245742012-09-05 17:12:55 -07002017/*========================================================================
2018
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002020
Jeff Johnson295189b2012-06-20 16:38:30 -07002021==========================================================================*/
2022
2023/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 to start an association procedure to a BSS. Upon the
2026 call of this API the WLAN DAL will pack and send a HAL
2027 Join request message to the lower RIVA sub-system if
2028 DAL is in state STARTED.
2029
2030 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002032
2033 WDI_Start must have been called.
2034
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002036 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002037
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 wdiJoinRspCb: callback for passing back the response of
2039 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002042 callback
2043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 @see WDI_Start
2045 @return Result of the function call
2046*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002048WDI_JoinReq
2049(
2050 WDI_JoinReqParamsType* pwdiJoinParams,
2051 WDI_JoinRspCb wdiJoinRspCb,
2052 void* pUserData
2053)
2054{
2055 WDI_EventInfoType wdiEventData;
2056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2057
2058 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002059 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 ------------------------------------------------------------------------*/
2061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2062 {
2063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2064 "WDI API call before module is initialized - Fail request");
2065
Jeff Johnsone7245742012-09-05 17:12:55 -07002066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002067 }
2068
2069 /*------------------------------------------------------------------------
2070 Fill in Event data and post to the Main FSM
2071 ------------------------------------------------------------------------*/
2072 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002073 wdiEventData.pEventData = pwdiJoinParams;
2074 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2075 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 wdiEventData.pUserData = pUserData;
2077
2078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2079
2080}/*WDI_JoinReq*/
2081
2082/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002083 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002084 wishes to configure the newly acquired or in process of
2085 being acquired BSS to the HW . Upon the call of this API
2086 the WLAN DAL will pack and send a HAL Config BSS request
2087 message to the lower RIVA sub-system if DAL is in state
2088 STARTED.
2089
2090 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002092
2093 WDI_JoinReq must have been called.
2094
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002096 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002097
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 wdiConfigBSSRspCb: callback for passing back the
2099 response of the config BSS operation received from the
2100 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002101
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 callback
2104
Jeff Johnson295189b2012-06-20 16:38:30 -07002105 @see WDI_JoinReq
2106 @return Result of the function call
2107*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002108WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002109WDI_ConfigBSSReq
2110(
2111 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2112 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2113 void* pUserData
2114)
2115{
2116 WDI_EventInfoType wdiEventData;
2117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2118
2119 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 ------------------------------------------------------------------------*/
2122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2123 {
2124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2125 "WDI API call before module is initialized - Fail request");
2126
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 }
2129
2130 /*------------------------------------------------------------------------
2131 Fill in Event data and post to the Main FSM
2132 ------------------------------------------------------------------------*/
2133 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002134 wdiEventData.pEventData = pwdiConfigBSSParams;
2135 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2136 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 wdiEventData.pUserData = pUserData;
2138
2139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2140
2141}/*WDI_ConfigBSSReq*/
2142
2143/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 disassociating from the BSS and wishes to notify HW.
2146 Upon the call of this API the WLAN DAL will pack and
2147 send a HAL Del BSS request message to the lower RIVA
2148 sub-system if DAL is in state STARTED.
2149
2150 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002152
2153 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2154
Jeff Johnsone7245742012-09-05 17:12:55 -07002155 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002157
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 wdiDelBSSRspCb: callback for passing back the response
2159 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002160
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002162 callback
2163
2164 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 @return Result of the function call
2166*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002167WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002168WDI_DelBSSReq
2169(
2170 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2171 WDI_DelBSSRspCb wdiDelBSSRspCb,
2172 void* pUserData
2173)
2174{
2175 WDI_EventInfoType wdiEventData;
2176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2177
2178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002179 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 ------------------------------------------------------------------------*/
2181 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2182 {
2183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2184 "WDI API call before module is initialized - Fail request");
2185
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 }
2188
2189 /*------------------------------------------------------------------------
2190 Fill in Event data and post to the Main FSM
2191 ------------------------------------------------------------------------*/
2192 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002193 wdiEventData.pEventData = pwdiDelBSSParams;
2194 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2195 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 wdiEventData.pUserData = pUserData;
2197
2198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2199
2200}/*WDI_DelBSSReq*/
2201
2202/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 associated to a BSS and wishes to configure HW for
2205 associated state. Upon the call of this API the WLAN DAL
2206 will pack and send a HAL Post Assoc request message to
2207 the lower RIVA sub-system if DAL is in state STARTED.
2208
2209 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002211
2212 WDI_JoinReq must have been called.
2213
2214 @param wdiPostAssocReqParams: the assoc parameters as specified
2215 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002216
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 wdiPostAssocRspCb: callback for passing back the
2218 response of the post assoc operation received from the
2219 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002220
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 callback
2223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 @see WDI_JoinReq
2225 @return Result of the function call
2226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002228WDI_PostAssocReq
2229(
2230 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2231 WDI_PostAssocRspCb wdiPostAssocRspCb,
2232 void* pUserData
2233)
2234{
2235 WDI_EventInfoType wdiEventData;
2236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2237
2238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 ------------------------------------------------------------------------*/
2241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2242 {
2243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2244 "WDI API call before module is initialized - Fail request");
2245
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 }
2248
2249 /*------------------------------------------------------------------------
2250 Fill in Event data and post to the Main FSM
2251 ------------------------------------------------------------------------*/
2252 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 wdiEventData.pEventData = pwdiPostAssocReqParams;
2254 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2255 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 wdiEventData.pUserData = pUserData;
2257
2258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2259
2260}/*WDI_PostAssocReq*/
2261
2262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 association with another STA has ended and the station
2265 must be deleted from HW. Upon the call of this API the
2266 WLAN DAL will pack and send a HAL Del STA request
2267 message to the lower RIVA sub-system if DAL is in state
2268 STARTED.
2269
2270 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002272
2273 WDI_PostAssocReq must have been called.
2274
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002277
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 wdiDelSTARspCb: callback for passing back the response
2279 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002280
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 callback
2283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 @see WDI_PostAssocReq
2285 @return Result of the function call
2286*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002288WDI_DelSTAReq
2289(
2290 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2291 WDI_DelSTARspCb wdiDelSTARspCb,
2292 void* pUserData
2293)
2294{
2295 WDI_EventInfoType wdiEventData;
2296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2297
2298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002299 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 ------------------------------------------------------------------------*/
2301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2302 {
2303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2304 "WDI API call before module is initialized - Fail request");
2305
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 }
2308
2309 /*------------------------------------------------------------------------
2310 Fill in Event data and post to the Main FSM
2311 ------------------------------------------------------------------------*/
2312 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002313 wdiEventData.pEventData = pwdiDelSTAParams;
2314 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2315 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 wdiEventData.pUserData = pUserData;
2317
2318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2319
2320}/*WDI_DelSTAReq*/
2321
Jeff Johnsone7245742012-09-05 17:12:55 -07002322/*========================================================================
2323
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002325
Jeff Johnson295189b2012-06-20 16:38:30 -07002326==========================================================================*/
2327
2328/**
2329 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2330 install a BSS encryption key on the HW. Upon the call of this
2331 API the WLAN DAL will pack and send a Set BSS Key request
2332 message to the lower RIVA sub-system if DAL is in state
2333 STARTED.
2334
2335 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002337
2338 WDI_PostAssocReq must have been called.
2339
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 wdiSetBSSKeyRspCb: callback for passing back the
2344 response of the set BSS Key operation received from the
2345 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002346
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 callback
2349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 @see WDI_PostAssocReq
2351 @return Result of the function call
2352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002354WDI_SetBSSKeyReq
2355(
2356 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2357 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2358 void* pUserData
2359)
2360{
2361 WDI_EventInfoType wdiEventData;
2362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2363
2364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 ------------------------------------------------------------------------*/
2367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2368 {
2369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2370 "WDI API call before module is initialized - Fail request");
2371
Jeff Johnsone7245742012-09-05 17:12:55 -07002372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 }
2374
2375 /*------------------------------------------------------------------------
2376 Fill in Event data and post to the Main FSM
2377 ------------------------------------------------------------------------*/
2378 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002379 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2380 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2381 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002382 wdiEventData.pUserData = pUserData;
2383
2384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2385
2386}/*WDI_SetBSSKeyReq*/
2387
2388/**
2389 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2390 uninstall a BSS key from HW. Upon the call of this API the
2391 WLAN DAL will pack and send a HAL Remove BSS Key request
2392 message to the lower RIVA sub-system if DAL is in state
2393 STARTED.
2394
2395 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002397
2398 WDI_SetBSSKeyReq must have been called.
2399
Jeff Johnsone7245742012-09-05 17:12:55 -07002400 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002402
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 wdiRemoveBSSKeyRspCb: callback for passing back the
2404 response of the remove BSS key operation received from
2405 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 callback
2409
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 @see WDI_SetBSSKeyReq
2411 @return Result of the function call
2412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002414WDI_RemoveBSSKeyReq
2415(
2416 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2417 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2418 void* pUserData
2419)
2420{
2421 WDI_EventInfoType wdiEventData;
2422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2423
2424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 ------------------------------------------------------------------------*/
2427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2428 {
2429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2430 "WDI API call before module is initialized - Fail request");
2431
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 }
2434
2435 /*------------------------------------------------------------------------
2436 Fill in Event data and post to the Main FSM
2437 ------------------------------------------------------------------------*/
2438 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2440 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2441 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 wdiEventData.pUserData = pUserData;
2443
2444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2445
2446}/*WDI_RemoveBSSKeyReq*/
2447
2448
2449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 ready to install a STA(ast) encryption key in HW. Upon
2452 the call of this API the WLAN DAL will pack and send a
2453 HAL Set STA Key request message to the lower RIVA
2454 sub-system if DAL is in state STARTED.
2455
2456 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002458
2459 WDI_PostAssocReq must have been called.
2460
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 wdiSetSTAKeyRspCb: callback for passing back the
2465 response of the set STA key operation received from the
2466 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 callback
2470
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 @see WDI_PostAssocReq
2472 @return Result of the function call
2473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002475WDI_SetSTAKeyReq
2476(
2477 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2478 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2479 void* pUserData
2480)
2481{
2482 WDI_EventInfoType wdiEventData;
2483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2484
2485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 ------------------------------------------------------------------------*/
2488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2489 {
2490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2491 "WDI API call before module is initialized - Fail request");
2492
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 }
2495
2496 /*------------------------------------------------------------------------
2497 Fill in Event data and post to the Main FSM
2498 ------------------------------------------------------------------------*/
2499 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2501 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2502 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 wdiEventData.pUserData = pUserData;
2504
2505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2506
2507}/*WDI_SetSTAKeyReq*/
2508
2509
2510/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 wants to uninstall a previously set STA key in HW. Upon
2513 the call of this API the WLAN DAL will pack and send a
2514 HAL Remove STA Key request message to the lower RIVA
2515 sub-system if DAL is in state STARTED.
2516
2517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002519
2520 WDI_SetSTAKeyReq must have been called.
2521
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002524
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 wdiRemoveSTAKeyRspCb: callback for passing back the
2526 response of the remove STA key operation received from
2527 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002528
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 callback
2531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 @see WDI_SetSTAKeyReq
2533 @return Result of the function call
2534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002536WDI_RemoveSTAKeyReq
2537(
2538 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2539 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2540 void* pUserData
2541)
2542{
2543 WDI_EventInfoType wdiEventData;
2544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2545
2546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 ------------------------------------------------------------------------*/
2549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2550 {
2551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2552 "WDI API call before module is initialized - Fail request");
2553
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002555 }
2556
2557 /*------------------------------------------------------------------------
2558 Fill in Event data and post to the Main FSM
2559 ------------------------------------------------------------------------*/
2560 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2562 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2563 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 wdiEventData.pUserData = pUserData;
2565
2566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2567
2568}/*WDI_RemoveSTAKeyReq*/
2569
2570
2571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wants to install a STA Bcast encryption key on the HW.
2574 Upon the call of this API the WLAN DAL will pack and
2575 send a HAL Start request message to the lower RIVA
2576 sub-system if DAL is in state STARTED.
2577
2578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002580
2581 WDI_PostAssocReq must have been called.
2582
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002585
Jeff Johnson295189b2012-06-20 16:38:30 -07002586 wdiSetSTABcastKeyRspCb: callback for passing back the
2587 response of the set BSS Key operation received from the
2588 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002589
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 callback
2592
Jeff Johnson295189b2012-06-20 16:38:30 -07002593 @see WDI_PostAssocReq
2594 @return Result of the function call
2595*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002596WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002597WDI_SetSTABcastKeyReq
2598(
2599 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2600 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2601 void* pUserData
2602)
2603
2604{
2605 WDI_EventInfoType wdiEventData;
2606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2607
2608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 ------------------------------------------------------------------------*/
2611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2612 {
2613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2614 "WDI API call before module is initialized - Fail request");
2615
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 }
2618
2619 /*------------------------------------------------------------------------
2620 Fill in Event data and post to the Main FSM
2621 ------------------------------------------------------------------------*/
2622 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2624 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2625 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiEventData.pUserData = pUserData;
2627
2628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2629
2630}/*WDI_SetSTABcastKeyReq*/
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 MAC wants to uninstall a STA Bcast key from HW. Upon the
2635 call of this API the WLAN DAL will pack and send a HAL
2636 Remove STA Bcast Key request message to the lower RIVA
2637 sub-system if DAL is in state STARTED.
2638
2639 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002641
2642 WDI_SetSTABcastKeyReq must have been called.
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 parameters as specified by the Device
2646 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002647
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2649 response of the remove STA Bcast key operation received
2650 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002653 callback
2654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 @see WDI_SetSTABcastKeyReq
2656 @return Result of the function call
2657*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002659WDI_RemoveSTABcastKeyReq
2660(
2661 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2662 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2663 void* pUserData
2664)
2665{
2666 WDI_EventInfoType wdiEventData;
2667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2668
2669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 ------------------------------------------------------------------------*/
2672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2673 {
2674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2675 "WDI API call before module is initialized - Fail request");
2676
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 }
2679
2680 /*------------------------------------------------------------------------
2681 Fill in Event data and post to the Main FSM
2682 ------------------------------------------------------------------------*/
2683 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2685 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2686 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 wdiEventData.pUserData = pUserData;
2688
2689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2690
2691}/*WDI_RemoveSTABcastKeyReq*/
2692
2693/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 MAC wants to set Max Tx Power to HW. Upon the
2696 call of this API the WLAN DAL will pack and send a HAL
2697 Remove STA Bcast Key request message to the lower RIVA
2698 sub-system if DAL is in state STARTED.
2699
2700 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002702
2703 WDI_SetSTABcastKeyReq must have been called.
2704
Jeff Johnsone7245742012-09-05 17:12:55 -07002705 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 parameters as specified by the Device
2707 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002708
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2710 response of the remove STA Bcast key operation received
2711 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 callback
2715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 @see WDI_SetMaxTxPowerReq
2717 @return Result of the function call
2718*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002719WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002720WDI_SetMaxTxPowerReq
2721(
2722 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2723 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2724 void* pUserData
2725)
2726{
2727 WDI_EventInfoType wdiEventData;
2728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2729
2730 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 ------------------------------------------------------------------------*/
2733 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2734 {
2735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2736 "WDI API call before module is initialized - Fail request");
2737
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 }
2740
2741 /*------------------------------------------------------------------------
2742 Fill in Event data and post to the Main FSM
2743 ------------------------------------------------------------------------*/
2744 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2746 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2747 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 wdiEventData.pUserData = pUserData;
2749
2750 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2751}
2752
schangd82195a2013-03-13 18:41:24 -07002753/**
2754 @brief WDI_SetTxPowerReq will be called when the upper
2755 MAC wants to set Tx Power to HW.
2756 In state BUSY this request will be queued. Request won't
2757 be allowed in any other state.
2758
2759
2760 @param pwdiSetTxPowerParams: set TS Power parameters
2761 BSSID and target TX Power with dbm included
2762
2763 wdiReqStatusCb: callback for passing back the response
2764
2765 pUserData: user data will be passed back with the
2766 callback
2767
2768 @return Result of the function call
2769*/
2770WDI_Status
2771WDI_SetTxPowerReq
2772(
2773 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2774 WDA_SetTxPowerRspCb wdiReqStatusCb,
2775 void* pUserData
2776)
2777{
2778 WDI_EventInfoType wdiEventData;
2779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2780
2781 /*------------------------------------------------------------------------
2782 Sanity Check
2783 ------------------------------------------------------------------------*/
2784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2785 {
2786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2787 "WDI API call before module is initialized - Fail request");
2788
2789 return WDI_STATUS_E_NOT_ALLOWED;
2790 }
2791
2792 /*------------------------------------------------------------------------
2793 Fill in Event data and post to the Main FSM
2794 ------------------------------------------------------------------------*/
2795 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2796 wdiEventData.pEventData = pwdiSetTxPowerParams;
2797 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2798 wdiEventData.pCBfnc = wdiReqStatusCb;
2799 wdiEventData.pUserData = pUserData;
2800
2801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2802}
2803
Jeff Johnson295189b2012-06-20 16:38:30 -07002804#ifdef FEATURE_WLAN_CCX
2805WDI_Status
2806WDI_TSMStatsReq
2807(
2808 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2809 WDI_TsmRspCb wdiReqStatusCb,
2810 void* pUserData
2811)
2812{
2813 WDI_EventInfoType wdiEventData;
2814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 /*------------------------------------------------------------------------
2816 Sanity Check
2817 ------------------------------------------------------------------------*/
2818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2819 {
2820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2821 "WDI API call before module is initialized - Fail request");
2822
2823 return WDI_STATUS_E_NOT_ALLOWED;
2824 }
2825
2826 /*------------------------------------------------------------------------
2827 Fill in Event data and post to the Main FSM
2828 ------------------------------------------------------------------------*/
2829 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2830 wdiEventData.pEventData = pwdiTsmReqParams;
2831 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2832 wdiEventData.pCBfnc = wdiReqStatusCb;
2833 wdiEventData.pUserData = pUserData;
2834
2835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2836
2837}
2838#endif
2839
2840/*========================================================================
2841
2842 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844==========================================================================*/
2845
2846/**
2847 @brief WDI_AddTSReq will be called when the upper MAC to inform
2848 the device of a successful add TSpec negotiation. HW
2849 needs to receive the TSpec Info from the UMAC in order
2850 to configure properly the QoS data traffic. Upon the
2851 call of this API the WLAN DAL will pack and send a HAL
2852 Add TS request message to the lower RIVA sub-system if
2853 DAL is in state STARTED.
2854
2855 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002857
2858 WDI_PostAssocReq must have been called.
2859
2860 @param wdiAddTsReqParams: the add TS parameters as specified by
2861 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002862
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 wdiAddTsRspCb: callback for passing back the response of
2864 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002865
Jeff Johnson295189b2012-06-20 16:38:30 -07002866 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 callback
2868
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 @see WDI_PostAssocReq
2870 @return Result of the function call
2871*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002873WDI_AddTSReq
2874(
2875 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2876 WDI_AddTsRspCb wdiAddTsRspCb,
2877 void* pUserData
2878)
2879{
2880 WDI_EventInfoType wdiEventData;
2881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2882
2883 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 ------------------------------------------------------------------------*/
2886 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2887 {
2888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2889 "WDI API call before module is initialized - Fail request");
2890
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 }
2893
2894 /*------------------------------------------------------------------------
2895 Fill in Event data and post to the Main FSM
2896 ------------------------------------------------------------------------*/
2897 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002898 wdiEventData.pEventData = pwdiAddTsReqParams;
2899 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2900 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 wdiEventData.pUserData = pUserData;
2902
2903 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2904
2905}/*WDI_AddTSReq*/
2906
2907
2908
2909/**
2910 @brief WDI_DelTSReq will be called when the upper MAC has ended
2911 admission on a specific AC. This is to inform HW that
2912 QoS traffic parameters must be rest. Upon the call of
2913 this API the WLAN DAL will pack and send a HAL Del TS
2914 request message to the lower RIVA sub-system if DAL is
2915 in state STARTED.
2916
2917 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002919
2920 WDI_AddTSReq must have been called.
2921
2922 @param wdiDelTsReqParams: the del TS parameters as specified by
2923 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 wdiDelTsRspCb: callback for passing back the response of
2926 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002927
Jeff Johnson295189b2012-06-20 16:38:30 -07002928 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 callback
2930
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 @see WDI_AddTSReq
2932 @return Result of the function call
2933*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002934WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002935WDI_DelTSReq
2936(
2937 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2938 WDI_DelTsRspCb wdiDelTsRspCb,
2939 void* pUserData
2940)
2941{
2942 WDI_EventInfoType wdiEventData;
2943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2944
2945 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 ------------------------------------------------------------------------*/
2948 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2949 {
2950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2951 "WDI API call before module is initialized - Fail request");
2952
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 }
2955
2956 /*------------------------------------------------------------------------
2957 Fill in Event data and post to the Main FSM
2958 ------------------------------------------------------------------------*/
2959 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002960 wdiEventData.pEventData = pwdiDelTsReqParams;
2961 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2962 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 wdiEventData.pUserData = pUserData;
2964
2965 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2966
2967}/*WDI_DelTSReq*/
2968
2969
2970
2971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002973 wishes to update the EDCA parameters used by HW for QoS
2974 data traffic. Upon the call of this API the WLAN DAL
2975 will pack and send a HAL Update EDCA Params request
2976 message to the lower RIVA sub-system if DAL is in state
2977 STARTED.
2978
2979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002981
2982 WDI_PostAssocReq must have been called.
2983
Jeff Johnsone7245742012-09-05 17:12:55 -07002984 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002986
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 wdiUpdateEDCAParamsRspCb: callback for passing back the
2988 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002989
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002991 callback
2992
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 @see WDI_PostAssocReq
2994 @return Result of the function call
2995*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002996WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002997WDI_UpdateEDCAParams
2998(
2999 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3000 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3001 void* pUserData
3002)
3003{
3004 WDI_EventInfoType wdiEventData;
3005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3006
3007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003008 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003009 ------------------------------------------------------------------------*/
3010 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3011 {
3012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3013 "WDI API call before module is initialized - Fail request");
3014
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 }
3017
3018 /*------------------------------------------------------------------------
3019 Fill in Event data and post to the Main FSM
3020 ------------------------------------------------------------------------*/
3021 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003022 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3023 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3024 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 wdiEventData.pUserData = pUserData;
3026
3027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3028
3029}/*WDI_UpdateEDCAParams*/
3030
3031
3032/**
3033 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3034 successfully a BA session and needs to notify the HW for
3035 the appropriate settings to take place. Upon the call of
3036 this API the WLAN DAL will pack and send a HAL Add BA
3037 request message to the lower RIVA sub-system if DAL is
3038 in state STARTED.
3039
3040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003042
3043 WDI_PostAssocReq must have been called.
3044
3045 @param wdiAddBAReqParams: the add BA parameters as specified by
3046 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003047
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 wdiAddBARspCb: callback for passing back the response of
3049 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003050
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003052 callback
3053
Jeff Johnson295189b2012-06-20 16:38:30 -07003054 @see WDI_PostAssocReq
3055 @return Result of the function call
3056*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003057WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003058WDI_AddBASessionReq
3059(
3060 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3061 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3062 void* pUserData
3063)
3064{
3065 WDI_EventInfoType wdiEventData;
3066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3067
3068 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003070 ------------------------------------------------------------------------*/
3071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3072 {
3073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3074 "WDI API call before module is initialized - Fail request");
3075
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 }
3078
3079 /*------------------------------------------------------------------------
3080 Fill in Event data and post to the Main FSM
3081 ------------------------------------------------------------------------*/
3082 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3084 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3085 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 wdiEventData.pUserData = pUserData;
3087
3088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3089
3090}/*WDI_AddBASessionReq*/
3091
3092/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003093 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003094 inform HW that it has deleted a previously created BA
3095 session. Upon the call of this API the WLAN DAL will
3096 pack and send a HAL Del BA request message to the lower
3097 RIVA sub-system if DAL is in state STARTED.
3098
3099 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003101
3102 WDI_AddBAReq must have been called.
3103
3104 @param wdiDelBAReqParams: the del BA parameters as specified by
3105 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003106
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 wdiDelBARspCb: callback for passing back the response of
3108 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003109
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 callback
3112
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 @see WDI_AddBAReq
3114 @return Result of the function call
3115*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003116WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003117WDI_DelBAReq
3118(
3119 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3120 WDI_DelBARspCb wdiDelBARspCb,
3121 void* pUserData
3122)
3123{
3124 WDI_EventInfoType wdiEventData;
3125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3126
3127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 ------------------------------------------------------------------------*/
3130 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3131 {
3132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3133 "WDI API call before module is initialized - Fail request");
3134
Jeff Johnsone7245742012-09-05 17:12:55 -07003135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 }
3137
3138 /*------------------------------------------------------------------------
3139 Fill in Event data and post to the Main FSM
3140 ------------------------------------------------------------------------*/
3141 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 wdiEventData.pEventData = pwdiDelBAReqParams;
3143 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3144 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 wdiEventData.pUserData = pUserData;
3146
3147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3148
3149}/*WDI_DelBAReq*/
3150
Jeff Johnsone7245742012-09-05 17:12:55 -07003151/*========================================================================
3152
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003154
Jeff Johnson295189b2012-06-20 16:38:30 -07003155==========================================================================*/
3156
3157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 wants to set the power save related configurations of
3160 the WLAN Device. Upon the call of this API the WLAN DAL
3161 will pack and send a HAL Update CFG request message to
3162 the lower RIVA sub-system if DAL is in state STARTED.
3163
3164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003166
3167 WDI_Start must have been called.
3168
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003170 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003171
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 wdiSetPwrSaveCfgCb: callback for passing back the
3173 response of the set power save cfg operation received
3174 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003175
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 callback
3178
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 @return Result of the function call
3181*/
3182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003183WDI_SetPwrSaveCfgReq
3184(
3185 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3186 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3187 void* pUserData
3188)
3189{
3190 WDI_EventInfoType wdiEventData;
3191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3192
3193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 ------------------------------------------------------------------------*/
3196 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3197 {
3198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3199 "WDI API call before module is initialized - Fail request");
3200
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 }
3203
3204 /*------------------------------------------------------------------------
3205 Fill in Event data and post to the Main FSM
3206 ------------------------------------------------------------------------*/
3207 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 wdiEventData.pEventData = pwdiPowerSaveCfg;
3209 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3210 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 wdiEventData.pUserData = pUserData;
3212
3213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3214
3215}/*WDI_SetPwrSaveCfgReq*/
3216
3217/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 request the device to get into IMPS power state. Upon
3220 the call of this API the WLAN DAL will send a HAL Enter
3221 IMPS request message to the lower RIVA sub-system if DAL
3222 is in state STARTED.
3223
3224 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003226
Jeff Johnsone7245742012-09-05 17:12:55 -07003227
3228 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003229 response of the Enter IMPS operation received from the
3230 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003231
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 callback
3234
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 @see WDI_Start
3236 @return Result of the function call
3237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003239WDI_EnterImpsReq
3240(
3241 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3242 void* pUserData
3243)
3244{
3245 WDI_EventInfoType wdiEventData;
3246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3247
3248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 ------------------------------------------------------------------------*/
3251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3252 {
3253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3254 "WDI API call before module is initialized - Fail request");
3255
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 }
3258
3259 /*------------------------------------------------------------------------
3260 Fill in Event data and post to the Main FSM
3261 ------------------------------------------------------------------------*/
3262 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 wdiEventData.pEventData = NULL;
3264 wdiEventData.uEventDataSize = 0;
3265 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 wdiEventData.pUserData = pUserData;
3267
3268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3269
3270}/*WDI_EnterImpsReq*/
3271
3272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 request the device to get out of IMPS power state. Upon
3275 the call of this API the WLAN DAL will send a HAL Exit
3276 IMPS request message to the lower RIVA sub-system if DAL
3277 is in state STARTED.
3278
3279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003281
Jeff Johnson295189b2012-06-20 16:38:30 -07003282
Jeff Johnsone7245742012-09-05 17:12:55 -07003283
3284 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003286
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003288 callback
3289
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 @see WDI_Start
3291 @return Result of the function call
3292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003294WDI_ExitImpsReq
3295(
3296 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3297 void* pUserData
3298)
3299{
3300 WDI_EventInfoType wdiEventData;
3301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3302
3303 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003304 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003305 ------------------------------------------------------------------------*/
3306 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3307 {
3308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3309 "WDI API call before module is initialized - Fail request");
3310
Jeff Johnsone7245742012-09-05 17:12:55 -07003311 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 }
3313
3314 /*------------------------------------------------------------------------
3315 Fill in Event data and post to the Main FSM
3316 ------------------------------------------------------------------------*/
3317 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003318 wdiEventData.pEventData = NULL;
3319 wdiEventData.uEventDataSize = 0;
3320 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003321 wdiEventData.pUserData = pUserData;
3322
3323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3324
3325}/*WDI_ExitImpsReq*/
3326
3327/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003329 request the device to get into BMPS power state. Upon
3330 the call of this API the WLAN DAL will pack and send a
3331 HAL Enter BMPS request message to the lower RIVA
3332 sub-system if DAL is in state STARTED.
3333
3334 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003336
3337 WDI_PostAssocReq must have been called.
3338
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003341
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 wdiEnterBmpsRspCb: callback for passing back the
3343 response of the Enter BMPS operation received from the
3344 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003345
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003347 callback
3348
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 @see WDI_PostAssocReq
3350 @return Result of the function call
3351*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003352WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003353WDI_EnterBmpsReq
3354(
3355 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3356 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3357 void* pUserData
3358)
3359{
3360 WDI_EventInfoType wdiEventData;
3361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3362
3363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003364 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 ------------------------------------------------------------------------*/
3366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3367 {
3368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3369 "WDI API call before module is initialized - Fail request");
3370
Jeff Johnsone7245742012-09-05 17:12:55 -07003371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003372 }
3373
3374 /*------------------------------------------------------------------------
3375 Fill in Event data and post to the Main FSM
3376 ------------------------------------------------------------------------*/
3377 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003378 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3379 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3380 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 wdiEventData.pUserData = pUserData;
3382
3383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3384
3385}/*WDI_EnterBmpsReq*/
3386
3387/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003389 request the device to get out of BMPS power state. Upon
3390 the call of this API the WLAN DAL will pack and send a
3391 HAL Exit BMPS request message to the lower RIVA
3392 sub-system if DAL is in state STARTED.
3393
3394 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003396
3397 WDI_PostAssocReq must have been called.
3398
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003401
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 wdiExitBmpsRspCb: callback for passing back the response
3403 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003404
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 callback
3407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 @see WDI_PostAssocReq
3409 @return Result of the function call
3410*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003411WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003412WDI_ExitBmpsReq
3413(
3414 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3415 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3416 void* pUserData
3417)
3418{
3419 WDI_EventInfoType wdiEventData;
3420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3421
3422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 ------------------------------------------------------------------------*/
3425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3426 {
3427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3428 "WDI API call before module is initialized - Fail request");
3429
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 }
3432
3433 /*------------------------------------------------------------------------
3434 Fill in Event data and post to the Main FSM
3435 ------------------------------------------------------------------------*/
3436 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3438 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3439 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 wdiEventData.pUserData = pUserData;
3441
3442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3443
3444}/*WDI_ExitBmpsReq*/
3445
3446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003447 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 request the device to get into UAPSD power state. Upon
3449 the call of this API the WLAN DAL will pack and send a
3450 HAL Enter UAPSD request message to the lower RIVA
3451 sub-system if DAL is in state STARTED.
3452
3453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003455
3456 WDI_PostAssocReq must have been called.
3457 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003458
3459 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003461
Jeff Johnson295189b2012-06-20 16:38:30 -07003462 wdiEnterUapsdRspCb: callback for passing back the
3463 response of the Enter UAPSD operation received from the
3464 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003465
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 callback
3468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3470 @return Result of the function call
3471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003473WDI_EnterUapsdReq
3474(
3475 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3476 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3477 void* pUserData
3478)
3479{
3480 WDI_EventInfoType wdiEventData;
3481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3482
3483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 ------------------------------------------------------------------------*/
3486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3487 {
3488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3489 "WDI API call before module is initialized - Fail request");
3490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 }
3493
3494 /*------------------------------------------------------------------------
3495 Fill in Event data and post to the Main FSM
3496 ------------------------------------------------------------------------*/
3497 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3499 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3500 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiEventData.pUserData = pUserData;
3502
3503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3504
3505}/*WDI_EnterUapsdReq*/
3506
3507/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 request the device to get out of UAPSD power state. Upon
3510 the call of this API the WLAN DAL will send a HAL Exit
3511 UAPSD request message to the lower RIVA sub-system if
3512 DAL is in state STARTED.
3513
3514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003516
3517 WDI_PostAssocReq must have been called.
3518
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 response of the Exit UAPSD operation received from the
3521 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003522
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003524 callback
3525
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 @see WDI_PostAssocReq
3527 @return Result of the function call
3528*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003529WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003530WDI_ExitUapsdReq
3531(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003532 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3534 void* pUserData
3535)
3536{
3537 WDI_EventInfoType wdiEventData;
3538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3539
3540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 ------------------------------------------------------------------------*/
3543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3544 {
3545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3546 "WDI API call before module is initialized - Fail request");
3547
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 }
3550
3551 /*------------------------------------------------------------------------
3552 Fill in Event data and post to the Main FSM
3553 ------------------------------------------------------------------------*/
3554 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003555 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3556 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003557 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 wdiEventData.pUserData = pUserData;
3559
3560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3561
3562}/*WDI_ExitUapsdReq*/
3563
3564/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 MAC wants to set the UAPSD related configurations
3567 of an associated STA (while acting as an AP) to the WLAN
3568 Device. Upon the call of this API the WLAN DAL will pack
3569 and send a HAL Update UAPSD params request message to
3570 the lower RIVA sub-system if DAL is in state STARTED.
3571
3572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003574
3575 WDI_ConfigBSSReq must have been called.
3576
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003579
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 wdiUpdateUapsdParamsCb: callback for passing back the
3581 response of the update UAPSD params operation received
3582 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003583
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003585 callback
3586
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 @see WDI_ConfigBSSReq
3588 @return Result of the function call
3589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003591WDI_UpdateUapsdParamsReq
3592(
3593 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3594 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3595 void* pUserData
3596)
3597{
3598 WDI_EventInfoType wdiEventData;
3599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3600
3601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 ------------------------------------------------------------------------*/
3604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3605 {
3606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3607 "WDI API call before module is initialized - Fail request");
3608
Jeff Johnsone7245742012-09-05 17:12:55 -07003609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003610 }
3611
3612 /*------------------------------------------------------------------------
3613 Fill in Event data and post to the Main FSM
3614 ------------------------------------------------------------------------*/
3615 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003616 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003617 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 wdiEventData.pUserData = pUserData;
3620
3621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3622
3623}/*WDI_UpdateUapsdParamsReq*/
3624
3625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 MAC wants to set the UAPSD related configurations before
3628 requesting for enter UAPSD power state to the WLAN
3629 Device. Upon the call of this API the WLAN DAL will pack
3630 and send a HAL Set UAPSD params request message to
3631 the lower RIVA sub-system if DAL is in state STARTED.
3632
3633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003635
3636 WDI_PostAssocReq must have been called.
3637
3638 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003640
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 wdiSetUapsdAcParamsCb: callback for passing back the
3642 response of the set UAPSD params operation received from
3643 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 callback
3647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 @see WDI_PostAssocReq
3649 @return Result of the function call
3650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003652WDI_SetUapsdAcParamsReq
3653(
3654 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3655 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3656 void* pUserData
3657)
3658{
3659 WDI_EventInfoType wdiEventData;
3660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3661
3662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 ------------------------------------------------------------------------*/
3665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3666 {
3667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3668 "WDI API call before module is initialized - Fail request");
3669
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 }
3672
3673 /*------------------------------------------------------------------------
3674 Fill in Event data and post to the Main FSM
3675 ------------------------------------------------------------------------*/
3676 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 wdiEventData.pEventData = pwdiUapsdInfo;
3678 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3679 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 wdiEventData.pUserData = pUserData;
3681
3682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3683
3684}/*WDI_SetUapsdAcParamsReq*/
3685
3686/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 MAC wants to set/reset the RXP filters for received pkts
3689 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3690 and send a HAL configure RXP filter request message to
3691 the lower RIVA sub-system.
3692
3693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003695
Jeff Johnsone7245742012-09-05 17:12:55 -07003696
3697 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 filter as specified by the Device
3699 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003700
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 wdiConfigureRxpFilterCb: callback for passing back the
3702 response of the configure RXP filter operation received
3703 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003704
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003706 callback
3707
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 @return Result of the function call
3709*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003711WDI_ConfigureRxpFilterReq
3712(
3713 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3714 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3715 void* pUserData
3716)
3717{
3718 WDI_EventInfoType wdiEventData;
3719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3720
3721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 ------------------------------------------------------------------------*/
3724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3725 {
3726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3727 "WDI API call before module is initialized - Fail request");
3728
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 }
3731
3732 /*------------------------------------------------------------------------
3733 Fill in Event data and post to the Main FSM
3734 ------------------------------------------------------------------------*/
3735 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003736 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3737 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3738 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 wdiEventData.pUserData = pUserData;
3740
3741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3742}/*WDI_ConfigureRxpFilterReq*/
3743
3744/**
3745 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3746 wants to set the beacon filters while in power save.
3747 Upon the call of this API the WLAN DAL will pack and
3748 send a Beacon filter request message to the
3749 lower RIVA sub-system.
3750
3751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003753
Jeff Johnsone7245742012-09-05 17:12:55 -07003754
3755 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 filter as specified by the Device
3757 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003758
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 wdiBeaconFilterCb: callback for passing back the
3760 response of the set beacon filter operation received
3761 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003762
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 callback
3765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 @return Result of the function call
3767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003769WDI_SetBeaconFilterReq
3770(
3771 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3772 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3773 void* pUserData
3774)
3775{
3776 WDI_EventInfoType wdiEventData;
3777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3778
3779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 ------------------------------------------------------------------------*/
3782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3783 {
3784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3785 "WDI API call before module is initialized - Fail request");
3786
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 }
3789
3790 /*------------------------------------------------------------------------
3791 Fill in Event data and post to the Main FSM
3792 ------------------------------------------------------------------------*/
3793 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003794 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003795 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 wdiEventData.pUserData = pUserData;
3798
3799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3800}/*WDI_SetBeaconFilterReq*/
3801
3802/**
3803 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3804 wants to remove the beacon filter for particular IE
3805 while in power save. Upon the call of this API the WLAN
3806 DAL will pack and send a remove Beacon filter request
3807 message to the lower RIVA sub-system.
3808
3809 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003811
Jeff Johnsone7245742012-09-05 17:12:55 -07003812
3813 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 filter as specified by the Device
3815 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003816
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 wdiBeaconFilterCb: callback for passing back the
3818 response of the remove beacon filter operation received
3819 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 callback
3823
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 @return Result of the function call
3825*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003826WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003827WDI_RemBeaconFilterReq
3828(
3829 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3830 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3831 void* pUserData
3832)
3833{
3834 WDI_EventInfoType wdiEventData;
3835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3836
3837 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003839 ------------------------------------------------------------------------*/
3840 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3841 {
3842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3843 "WDI API call before module is initialized - Fail request");
3844
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 }
3847
3848 /*------------------------------------------------------------------------
3849 Fill in Event data and post to the Main FSM
3850 ------------------------------------------------------------------------*/
3851 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003853 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 wdiEventData.pUserData = pUserData;
3856
3857 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3858}/*WDI_RemBeaconFilterReq*/
3859
3860/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 MAC wants to set the RSSI thresholds related
3863 configurations while in power save. Upon the call of
3864 this API the WLAN DAL will pack and send a HAL Set RSSI
3865 thresholds request message to the lower RIVA
3866 sub-system if DAL is in state STARTED.
3867
3868 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003869 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003870
3871 WDI_PostAssocReq must have been called.
3872
3873 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3874 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003875
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 wdiSetUapsdAcParamsCb: callback for passing back the
3877 response of the set UAPSD params operation received from
3878 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003879
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 callback
3882
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 @see WDI_PostAssocReq
3884 @return Result of the function call
3885*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003886WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003887WDI_SetRSSIThresholdsReq
3888(
3889 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3890 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3891 void* pUserData
3892)
3893{
3894 WDI_EventInfoType wdiEventData;
3895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3896
3897 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 ------------------------------------------------------------------------*/
3900 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3901 {
3902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3903 "WDI API call before module is initialized - Fail request");
3904
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 }
3907
3908 /*------------------------------------------------------------------------
3909 Fill in Event data and post to the Main FSM
3910 ------------------------------------------------------------------------*/
3911 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003913 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 wdiEventData.pUserData = pUserData;
3916
3917 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3918}/* WDI_SetRSSIThresholdsReq*/
3919
3920/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003922 wants to set the filter to minimize unnecessary host
3923 wakeup due to broadcast traffic while in power save.
3924 Upon the call of this API the WLAN DAL will pack and
3925 send a HAL host offload request message to the
3926 lower RIVA sub-system if DAL is in state STARTED.
3927
3928 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003929 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003930
3931 WDI_PostAssocReq must have been called.
3932
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003935
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 wdiHostOffloadCb: callback for passing back the response
3937 of the host offload operation received from the
3938 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003939
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003941 callback
3942
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 @see WDI_PostAssocReq
3944 @return Result of the function call
3945*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003946WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003947WDI_HostOffloadReq
3948(
3949 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3950 WDI_HostOffloadCb wdiHostOffloadCb,
3951 void* pUserData
3952)
3953{
3954 WDI_EventInfoType wdiEventData;
3955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3956
3957 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 ------------------------------------------------------------------------*/
3960 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3961 {
3962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3963 "WDI API call before module is initialized - Fail request");
3964
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 }
3967
3968 /*------------------------------------------------------------------------
3969 Fill in Event data and post to the Main FSM
3970 ------------------------------------------------------------------------*/
3971 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003973 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 wdiEventData.pUserData = pUserData;
3976
3977 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3978}/*WDI_HostOffloadReq*/
3979
3980/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 @brief WDI_KeepAliveReq will be called when the upper MAC
3982 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 and minimize unnecessary host wakeups due to while in power save.
3984 Upon the call of this API the WLAN DAL will pack and
3985 send a HAL Keep Alive request message to the
3986 lower RIVA sub-system if DAL is in state STARTED.
3987
3988 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003990
3991 WDI_PostAssocReq must have been called.
3992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003995
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 wdiKeepAliveCb: callback for passing back the response
3997 of the Keep Alive operation received from the
3998 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003999
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 callback
4002
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 @see WDI_PostAssocReq
4004 @return Result of the function call
4005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004007WDI_KeepAliveReq
4008(
4009 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4010 WDI_KeepAliveCb wdiKeepAliveCb,
4011 void* pUserData
4012)
4013{
4014 WDI_EventInfoType wdiEventData;
4015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4016
4017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 ------------------------------------------------------------------------*/
4020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4021 {
4022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4023 "WDI_KeepAliveReq: WDI API call before module "
4024 "is initialized - Fail request");
4025
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 }
4028
4029 /*------------------------------------------------------------------------
4030 Fill in Event data and post to the Main FSM
4031 ------------------------------------------------------------------------*/
4032 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 wdiEventData.pEventData = pwdiKeepAliveParams;
4034 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4035 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 wdiEventData.pUserData = pUserData;
4037
4038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4039}/*WDI_KeepAliveReq*/
4040
4041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 wants to set the Wowl Bcast ptrn to minimize unnecessary
4044 host wakeup due to broadcast traffic while in power
4045 save. Upon the call of this API the WLAN DAL will pack
4046 and send a HAL Wowl Bcast ptrn request message to the
4047 lower RIVA sub-system if DAL is in state STARTED.
4048
4049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004051
4052 WDI_PostAssocReq must have been called.
4053
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiWowlAddBcPtrnCb: callback for passing back the
4058 response of the add Wowl bcast ptrn operation received
4059 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 callback
4063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 @see WDI_PostAssocReq
4065 @return Result of the function call
4066*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004068WDI_WowlAddBcPtrnReq
4069(
4070 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4071 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4072 void* pUserData
4073)
4074{
4075 WDI_EventInfoType wdiEventData;
4076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4077
4078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 ------------------------------------------------------------------------*/
4081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4082 {
4083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4084 "WDI API call before module is initialized - Fail request");
4085
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 }
4088
4089 /*------------------------------------------------------------------------
4090 Fill in Event data and post to the Main FSM
4091 ------------------------------------------------------------------------*/
4092 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004094 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 wdiEventData.pUserData = pUserData;
4097
4098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4099}/*WDI_WowlAddBcPtrnReq*/
4100
4101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wants to clear the Wowl Bcast ptrn. Upon the call of
4104 this API the WLAN DAL will pack and send a HAL delete
4105 Wowl Bcast ptrn request message to the lower RIVA
4106 sub-system if DAL is in state STARTED.
4107
4108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004110
4111 WDI_WowlAddBcPtrnReq must have been called.
4112
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 wdiWowlDelBcPtrnCb: callback for passing back the
4117 response of the del Wowl bcast ptrn operation received
4118 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_WowlAddBcPtrnReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_WowlDelBcPtrnReq
4128(
4129 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4130 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004153 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158}/*WDI_WowlDelBcPtrnReq*/
4159
4160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wants to enter the Wowl state to minimize unnecessary
4163 host wakeup while in power save. Upon the call of this
4164 API the WLAN DAL will pack and send a HAL Wowl enter
4165 request message to the lower RIVA sub-system if DAL is
4166 in state STARTED.
4167
4168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004170
4171 WDI_PostAssocReq must have been called.
4172
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004175
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 wdiWowlEnterReqCb: callback for passing back the
4177 response of the enter Wowl operation received from the
4178 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004179
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 callback
4182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 @see WDI_PostAssocReq
4184 @return Result of the function call
4185*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004186WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004187WDI_WowlEnterReq
4188(
4189 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4190 WDI_WowlEnterReqCb wdiWowlEnterCb,
4191 void* pUserData
4192)
4193{
4194 WDI_EventInfoType wdiEventData;
4195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4196
4197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 ------------------------------------------------------------------------*/
4200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4201 {
4202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4203 "WDI API call before module is initialized - Fail request");
4204
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 }
4207
4208 /*------------------------------------------------------------------------
4209 Fill in Event data and post to the Main FSM
4210 ------------------------------------------------------------------------*/
4211 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004212 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004213 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 wdiEventData.pUserData = pUserData;
4216
4217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4218}/*WDI_WowlEnterReq*/
4219
4220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004222 wants to exit the Wowl state. Upon the call of this API
4223 the WLAN DAL will pack and send a HAL Wowl exit request
4224 message to the lower RIVA sub-system if DAL is in state
4225 STARTED.
4226
4227 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004228 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004229
4230 WDI_WowlEnterReq must have been called.
4231
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004234
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 wdiWowlExitReqCb: callback for passing back the response
4236 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 callback
4240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 @see WDI_WowlEnterReq
4242 @return Result of the function call
4243*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004244WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004245WDI_WowlExitReq
4246(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004247 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 WDI_WowlExitReqCb wdiWowlExitCb,
4249 void* pUserData
4250)
4251{
4252 WDI_EventInfoType wdiEventData;
4253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4254
4255 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 ------------------------------------------------------------------------*/
4258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4259 {
4260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4261 "WDI API call before module is initialized - Fail request");
4262
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 }
4265
4266 /*------------------------------------------------------------------------
4267 Fill in Event data and post to the Main FSM
4268 ------------------------------------------------------------------------*/
4269 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004270 wdiEventData.pEventData = pwdiWowlExitParams;
4271 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 wdiEventData.pUserData = pUserData;
4274
4275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4276}/*WDI_WowlExitReq*/
4277
4278/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 the upper MAC wants to dynamically adjusts the listen
4281 interval based on the WLAN/MSM activity. Upon the call
4282 of this API the WLAN DAL will pack and send a HAL
4283 configure Apps Cpu Wakeup State request message to the
4284 lower RIVA sub-system.
4285
4286 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004288
Jeff Johnsone7245742012-09-05 17:12:55 -07004289
4290 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 Apps Cpu Wakeup State as specified by the
4292 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004293
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4295 back the response of the configure Apps Cpu Wakeup State
4296 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004297
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 callback
4300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 @return Result of the function call
4302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004304WDI_ConfigureAppsCpuWakeupStateReq
4305(
4306 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4307 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4308 void* pUserData
4309)
4310{
4311 WDI_EventInfoType wdiEventData;
4312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4313
4314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 ------------------------------------------------------------------------*/
4317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4318 {
4319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4320 "WDI API call before module is initialized - Fail request");
4321
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 }
4324
4325 /*------------------------------------------------------------------------
4326 Fill in Event data and post to the Main FSM
4327 ------------------------------------------------------------------------*/
4328 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4330 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4331 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004332 wdiEventData.pUserData = pUserData;
4333
4334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4335}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 to to perform a flush operation on a given AC. Upon the
4339 call of this API the WLAN DAL will pack and send a HAL
4340 Flush AC request message to the lower RIVA sub-system if
4341 DAL is in state STARTED.
4342
4343 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004345
4346 WDI_AddBAReq must have been called.
4347
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004350
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 wdiFlushAcRspCb: callback for passing back the response
4352 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004353
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004355 callback
4356
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 @see WDI_AddBAReq
4358 @return Result of the function call
4359*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004360WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004361WDI_FlushAcReq
4362(
4363 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4364 WDI_FlushAcRspCb wdiFlushAcRspCb,
4365 void* pUserData
4366)
4367{
4368 WDI_EventInfoType wdiEventData;
4369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4370
4371 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004372 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004373 ------------------------------------------------------------------------*/
4374 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4375 {
4376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4377 "WDI API call before module is initialized - Fail request");
4378
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 }
4381
4382 /*------------------------------------------------------------------------
4383 Fill in Event data and post to the Main FSM
4384 ------------------------------------------------------------------------*/
4385 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 wdiEventData.pEventData = pwdiFlushAcReqParams;
4387 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4388 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 wdiEventData.pUserData = pUserData;
4390
4391 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4392
4393}/*WDI_FlushAcReq*/
4394
4395/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 wants to notify the lower mac on a BT AMP event. This is
4398 to inform BTC-SLM that some BT AMP event occurred. Upon
4399 the call of this API the WLAN DAL will pack and send a
4400 HAL BT AMP event request message to the lower RIVA
4401 sub-system if DAL is in state STARTED.
4402
4403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004405
Jeff Johnsone7245742012-09-05 17:12:55 -07004406
4407 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004408 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004409
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 wdiBtAmpEventRspCb: callback for passing back the
4411 response of the BT AMP event operation received from the
4412 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004413
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004415 callback
4416
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 @return Result of the function call
4418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004420WDI_BtAmpEventReq
4421(
4422 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4423 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4424 void* pUserData
4425)
4426{
4427 WDI_EventInfoType wdiEventData;
4428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4429
4430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 ------------------------------------------------------------------------*/
4433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4434 {
4435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4436 "WDI API call before module is initialized - Fail request");
4437
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 }
4440
4441 /*------------------------------------------------------------------------
4442 Fill in Event data and post to the Main FSM
4443 ------------------------------------------------------------------------*/
4444 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4446 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4447 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 wdiEventData.pUserData = pUserData;
4449
4450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4451
4452}/*WDI_BtAmpEventReq*/
4453
Jeff Johnsone7245742012-09-05 17:12:55 -07004454#ifdef FEATURE_OEM_DATA_SUPPORT
4455/**
4456 @brief WDI_Start Oem Data Req will be called when the upper MAC
4457 wants to notify the lower mac on a oem data Req event.Upon
4458 the call of this API the WLAN DAL will pack and send a
4459 HAL OEM Data Req event request message to the lower RIVA
4460 sub-system if DAL is in state STARTED.
4461
4462 In state BUSY this request will be queued. Request won't
4463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004464
4465
Jeff Johnsone7245742012-09-05 17:12:55 -07004466
4467 @param pwdiOemDataReqParams: the Oem Data Req as
4468 specified by the Device Interface
4469
4470 wdiStartOemDataRspCb: callback for passing back the
4471 response of the Oem Data Req received from the
4472 device
4473
4474 pUserData: user data will be passed back with the
4475 callback
4476
4477 @return Result of the function call
4478*/
4479WDI_Status
4480WDI_StartOemDataReq
4481(
4482 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4483 WDI_oemDataRspCb wdiOemDataRspCb,
4484 void* pUserData
4485)
4486{
4487 WDI_EventInfoType wdiEventData;
4488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4489
4490 /*------------------------------------------------------------------------
4491 Sanity Check
4492 ------------------------------------------------------------------------*/
4493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4494 {
4495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4496 "WDI API call before module is initialized - Fail request");
4497
4498 return WDI_STATUS_E_NOT_ALLOWED;
4499 }
4500
4501 /*------------------------------------------------------------------------
4502 Fill in Event data and post to the Main FSM
4503 ------------------------------------------------------------------------*/
4504 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4505 wdiEventData.pEventData = pwdiOemDataReqParams;
4506 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4507 wdiEventData.pCBfnc = wdiOemDataRspCb;
4508 wdiEventData.pUserData = pUserData;
4509
4510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4511
4512
4513}
4514
4515#endif
4516
4517
4518/*========================================================================
4519
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522==========================================================================*/
4523/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004524 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 the WLAN HW to change the current channel of operation.
4526 Upon the call of this API the WLAN DAL will pack and
4527 send a HAL Start request message to the lower RIVA
4528 sub-system if DAL is in state STARTED.
4529
4530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004532
4533 WDI_Start must have been called.
4534
Jeff Johnsone7245742012-09-05 17:12:55 -07004535 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004536 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004537
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 wdiSwitchChRspCb: callback for passing back the response
4539 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004540
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 callback
4543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 @see WDI_Start
4545 @return Result of the function call
4546*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004547WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004548WDI_SwitchChReq
4549(
4550 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4551 WDI_SwitchChRspCb wdiSwitchChRspCb,
4552 void* pUserData
4553)
4554{
4555 WDI_EventInfoType wdiEventData;
4556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4557
4558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 ------------------------------------------------------------------------*/
4561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4562 {
4563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4564 "WDI API call before module is initialized - Fail request");
4565
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 }
4568
4569 /*------------------------------------------------------------------------
4570 Fill in Event data and post to the Main FSM
4571 ------------------------------------------------------------------------*/
4572 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 wdiEventData.pEventData = pwdiSwitchChReqParams;
4574 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4575 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 wdiEventData.pUserData = pUserData;
4577
4578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4579
4580}/*WDI_SwitchChReq*/
4581
4582
4583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 wishes to add or update a STA in HW. Upon the call of
4586 this API the WLAN DAL will pack and send a HAL Start
4587 message request message to the lower RIVA sub-system if
4588 DAL is in state STARTED.
4589
4590 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004591 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004592
4593 WDI_Start must have been called.
4594
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004596 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004597
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 wdiConfigSTARspCb: callback for passing back the
4599 response of the config STA operation received from the
4600 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004601
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 callback
4604
Jeff Johnson295189b2012-06-20 16:38:30 -07004605 @see WDI_Start
4606 @return Result of the function call
4607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004609WDI_ConfigSTAReq
4610(
4611 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4612 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4613 void* pUserData
4614)
4615{
4616 WDI_EventInfoType wdiEventData;
4617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4618
4619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004621 ------------------------------------------------------------------------*/
4622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4623 {
4624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4625 "WDI API call before module is initialized - Fail request");
4626
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 }
4629
4630 /*------------------------------------------------------------------------
4631 Fill in Event data and post to the Main FSM
4632 ------------------------------------------------------------------------*/
4633 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4635 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4636 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004637 wdiEventData.pUserData = pUserData;
4638
4639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4640
4641}/*WDI_ConfigSTAReq*/
4642
4643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 wants to change the state of an ongoing link. Upon the
4646 call of this API the WLAN DAL will pack and send a HAL
4647 Start message request message to the lower RIVA
4648 sub-system if DAL is in state STARTED.
4649
4650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004652
4653 WDI_JoinStartReq must have been called.
4654
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 wdiSetLinkStateRspCb: callback for passing back the
4659 response of the set link state operation received from
4660 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004661
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 callback
4664
Jeff Johnson295189b2012-06-20 16:38:30 -07004665 @see WDI_JoinStartReq
4666 @return Result of the function call
4667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004669WDI_SetLinkStateReq
4670(
4671 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4672 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4673 void* pUserData
4674)
4675{
4676 WDI_EventInfoType wdiEventData;
4677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4678
4679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 ------------------------------------------------------------------------*/
4682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4683 {
4684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4685 "WDI API call before module is initialized - Fail request");
4686
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 }
4689
4690 /*------------------------------------------------------------------------
4691 Fill in Event data and post to the Main FSM
4692 ------------------------------------------------------------------------*/
4693 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4695 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4696 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiEventData.pUserData = pUserData;
4698
4699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4700
4701}/*WDI_SetLinkStateReq*/
4702
4703
4704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 to get statistics (MIB counters) from the device. Upon
4707 the call of this API the WLAN DAL will pack and send a
4708 HAL Start request message to the lower RIVA sub-system
4709 if DAL is in state STARTED.
4710
4711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004713
4714 WDI_Start must have been called.
4715
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004718
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 wdiGetStatsRspCb: callback for passing back the response
4720 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 callback
4724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 @see WDI_Start
4726 @return Result of the function call
4727*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004729WDI_GetStatsReq
4730(
4731 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4732 WDI_GetStatsRspCb wdiGetStatsRspCb,
4733 void* pUserData
4734)
4735{
4736 WDI_EventInfoType wdiEventData;
4737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4738
4739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 ------------------------------------------------------------------------*/
4742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4743 {
4744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4745 "WDI API call before module is initialized - Fail request");
4746
Jeff Johnsone7245742012-09-05 17:12:55 -07004747 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 wdiEventData.pEventData = pwdiGetStatsReqParams;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4756 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760
4761}/*WDI_GetStatsReq*/
4762
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004763#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4764/**
4765 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4766 to get roam rssi from the device. Upon
4767 the call of this API the WLAN DAL will pack and send a
4768 HAL Start request message to the lower RIVA sub-system
4769 if DAL is in state STARTED.
4770
4771 In state BUSY this request will be queued. Request won't
4772 be allowed in any other state.
4773
4774 WDI_Start must have been called.
4775
4776 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4777 specified by the Device Interface
4778
4779 wdiGetRoamRssiRspCb: callback for passing back the response
4780 of the get stats operation received from the device
4781
4782 pUserData: user data will be passed back with the
4783 callback
4784
4785 @see WDI_Start
4786 @return Result of the function call
4787*/
4788WDI_Status
4789WDI_GetRoamRssiReq
4790(
4791 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4792 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4793 void* pUserData
4794)
4795{
4796 WDI_EventInfoType wdiEventData;
4797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4798
4799 /*------------------------------------------------------------------------
4800 Sanity Check
4801 ------------------------------------------------------------------------*/
4802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4803 {
4804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4805 "WDI API call before module is initialized - Fail request");
4806
4807 return WDI_STATUS_E_NOT_ALLOWED;
4808 }
4809 /*------------------------------------------------------------------------
4810 Fill in Event data and post to the Main FSM
4811 ------------------------------------------------------------------------*/
4812 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4813 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4814 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4815 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4816 wdiEventData.pUserData = pUserData;
4817
4818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4819
4820}/*WDI_GetRoamRssiReq*/
4821#endif
4822
Jeff Johnson295189b2012-06-20 16:38:30 -07004823
4824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 it wishes to change the configuration of the WLAN
4827 Device. Upon the call of this API the WLAN DAL will pack
4828 and send a HAL Update CFG request message to the lower
4829 RIVA sub-system if DAL is in state STARTED.
4830
4831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004833
4834 WDI_Start must have been called.
4835
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004838
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 wdiUpdateCfgsRspCb: callback for passing back the
4840 response of the update cfg operation received from the
4841 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004842
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 callback
4845
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 @see WDI_Start
4847 @return Result of the function call
4848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004850WDI_UpdateCfgReq
4851(
4852 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4853 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4854 void* pUserData
4855)
4856{
4857 WDI_EventInfoType wdiEventData;
4858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4859
4860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 ------------------------------------------------------------------------*/
4863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4864 {
4865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4866 "WDI API call before module is initialized - Fail request");
4867
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 }
4870
4871 /*------------------------------------------------------------------------
4872 Fill in Event data and post to the Main FSM
4873 ------------------------------------------------------------------------*/
4874 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4876 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4877 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiEventData.pUserData = pUserData;
4879
4880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4881
4882}/*WDI_UpdateCfgReq*/
4883
4884
4885
4886/**
4887 @brief WDI_AddBAReq will be called when the upper MAC has setup
4888 successfully a BA session and needs to notify the HW for
4889 the appropriate settings to take place. Upon the call of
4890 this API the WLAN DAL will pack and send a HAL Add BA
4891 request message to the lower RIVA sub-system if DAL is
4892 in state STARTED.
4893
4894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004896
4897 WDI_PostAssocReq must have been called.
4898
4899 @param wdiAddBAReqParams: the add BA parameters as specified by
4900 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004901
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 wdiAddBARspCb: callback for passing back the response of
4903 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 callback
4907
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 @see WDI_PostAssocReq
4909 @return Result of the function call
4910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004912WDI_AddBAReq
4913(
4914 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4915 WDI_AddBARspCb wdiAddBARspCb,
4916 void* pUserData
4917)
4918{
4919 WDI_EventInfoType wdiEventData;
4920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4921
4922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 ------------------------------------------------------------------------*/
4925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4926 {
4927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4928 "WDI API call before module is initialized - Fail request");
4929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 }
4932
4933 /*------------------------------------------------------------------------
4934 Fill in Event data and post to the Main FSM
4935 ------------------------------------------------------------------------*/
4936 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 wdiEventData.pEventData = pwdiAddBAReqParams;
4938 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4939 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004940 wdiEventData.pUserData = pUserData;
4941
4942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4943
4944}/*WDI_AddBAReq*/
4945
4946
4947/**
4948 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4949 successfully a BA session and needs to notify the HW for
4950 the appropriate settings to take place. Upon the call of
4951 this API the WLAN DAL will pack and send a HAL Add BA
4952 request message to the lower RIVA sub-system if DAL is
4953 in state STARTED.
4954
4955 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004957
4958 WDI_PostAssocReq must have been called.
4959
4960 @param wdiAddBAReqParams: the add BA parameters as specified by
4961 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004962
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 wdiAddBARspCb: callback for passing back the response of
4964 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004965
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004967 callback
4968
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 @see WDI_PostAssocReq
4970 @return Result of the function call
4971*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004973WDI_TriggerBAReq
4974(
4975 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4976 WDI_TriggerBARspCb wdiTriggerBARspCb,
4977 void* pUserData
4978)
4979{
4980 WDI_EventInfoType wdiEventData;
4981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4982
4983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 ------------------------------------------------------------------------*/
4986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4987 {
4988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4989 "WDI API call before module is initialized - Fail request");
4990
Jeff Johnsone7245742012-09-05 17:12:55 -07004991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 }
4993
4994 /*------------------------------------------------------------------------
4995 Fill in Event data and post to the Main FSM
4996 ------------------------------------------------------------------------*/
4997 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004998 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4999 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5000 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 wdiEventData.pUserData = pUserData;
5002
5003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5004
5005}/*WDI_AddBAReq*/
5006
5007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 wishes to update any of the Beacon parameters used by HW.
5010 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5011 message to the lower RIVA sub-system if DAL is in state
5012 STARTED.
5013
5014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005016
5017 WDI_PostAssocReq must have been called.
5018
Jeff Johnsone7245742012-09-05 17:12:55 -07005019 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005021
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 wdiUpdateBeaconParamsRspCb: callback for passing back the
5023 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005024
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005026 callback
5027
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 @see WDI_PostAssocReq
5029 @return Result of the function call
5030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005032WDI_UpdateBeaconParamsReq
5033(
5034 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5035 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5036 void* pUserData
5037)
5038{
5039 WDI_EventInfoType wdiEventData;
5040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5041
5042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 ------------------------------------------------------------------------*/
5045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5046 {
5047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5048 "WDI API call before module is initialized - Fail request");
5049
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 }
5052
5053 /*------------------------------------------------------------------------
5054 Fill in Event data and post to the Main FSM
5055 ------------------------------------------------------------------------*/
5056 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005057 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5058 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5059 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 wdiEventData.pUserData = pUserData;
5061
5062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5063
5064}/*WDI_UpdateBeaconParamsReq*/
5065
5066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 wishes to update the Beacon template used by HW.
5069 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5070 message to the lower RIVA sub-system if DAL is in state
5071 STARTED.
5072
5073 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005075
5076 WDI_PostAssocReq must have been called.
5077
Jeff Johnsone7245742012-09-05 17:12:55 -07005078 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005080
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 wdiSendBeaconParamsRspCb: callback for passing back the
5082 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005083
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 callback
5086
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 @see WDI_PostAssocReq
5088 @return Result of the function call
5089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005091WDI_SendBeaconParamsReq
5092(
5093 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5094 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5095 void* pUserData
5096)
5097{
5098 WDI_EventInfoType wdiEventData;
5099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5100
5101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 ------------------------------------------------------------------------*/
5104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5105 {
5106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5107 "WDI API call before module is initialized - Fail request");
5108
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 }
5111
5112 /*------------------------------------------------------------------------
5113 Fill in Event data and post to the Main FSM
5114 ------------------------------------------------------------------------*/
5115 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 wdiEventData.pEventData = pwdiSendBeaconParams;
5117 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5118 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 wdiEventData.pUserData = pUserData;
5120
5121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5122
5123}/*WDI_SendBeaconParamsReq*/
5124
5125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005126 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005127 upper MAC wants to update the probe response template to
5128 be transmitted as Soft AP
5129 Upon the call of this API the WLAN DAL will
5130 pack and send the probe rsp template message to the
5131 lower RIVA sub-system if DAL is in state STARTED.
5132
5133 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005135
5136
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005139
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 wdiSendBeaconParamsRspCb: callback for passing back the
5141 response of the Send Beacon Params operation received
5142 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 callback
5146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 @see WDI_AddBAReq
5148 @return Result of the function call
5149*/
5150
Jeff Johnsone7245742012-09-05 17:12:55 -07005151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005152WDI_UpdateProbeRspTemplateReq
5153(
5154 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5155 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5156 void* pUserData
5157)
5158{
5159 WDI_EventInfoType wdiEventData;
5160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5161
5162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 ------------------------------------------------------------------------*/
5165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5166 {
5167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5168 "WDI API call before module is initialized - Fail request");
5169
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 }
5172
5173 /*------------------------------------------------------------------------
5174 Fill in Event data and post to the Main FSM
5175 ------------------------------------------------------------------------*/
5176 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5178 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5179 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 wdiEventData.pUserData = pUserData;
5181
5182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5183
5184}/*WDI_UpdateProbeRspTemplateReq*/
5185
5186/**
5187 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5188 to the NV memory.
5189
5190
5191 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5192 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005193
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 wdiNvDownloadRspCb: callback for passing back the response of
5195 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005196
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 callback
5199
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 @see WDI_PostAssocReq
5201 @return Result of the function call
5202*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005203WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005204WDI_NvDownloadReq
5205(
5206 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5207 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5208 void* pUserData
5209)
5210{
5211 WDI_EventInfoType wdiEventData;
5212
5213 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 ------------------------------------------------------------------------*/
5216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5217 {
5218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5219 "WDI API call before module is initialized - Fail request");
5220
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 }
5223
5224 /*------------------------------------------------------------------------
5225 Fill in Event data and post to the Main FSM
5226 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005227 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5228 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5229 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5230 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 wdiEventData.pUserData = pUserData;
5232
5233 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5234
5235}/*WDI_NVDownloadReq*/
5236
Jeff Johnson295189b2012-06-20 16:38:30 -07005237/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 upper MAC wants to send Notice of Absence
5240 Upon the call of this API the WLAN DAL will
5241 pack and send the probe rsp template message to the
5242 lower RIVA sub-system if DAL is in state STARTED.
5243
5244 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005246
5247
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005250
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 wdiSendBeaconParamsRspCb: callback for passing back the
5252 response of the Send Beacon Params operation received
5253 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005254
Jeff Johnson295189b2012-06-20 16:38:30 -07005255 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 callback
5257
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 @see WDI_AddBAReq
5259 @return Result of the function call
5260*/
5261WDI_Status
5262WDI_SetP2PGONOAReq
5263(
5264 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5265 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5266 void* pUserData
5267)
5268{
5269 WDI_EventInfoType wdiEventData;
5270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5271
5272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 ------------------------------------------------------------------------*/
5275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5276 {
5277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5278 "WDI API call before module is initialized - Fail request");
5279
Jeff Johnsone7245742012-09-05 17:12:55 -07005280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005281 }
5282
5283 /*------------------------------------------------------------------------
5284 Fill in Event data and post to the Main FSM
5285 ------------------------------------------------------------------------*/
5286 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005287 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5288 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5289 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 wdiEventData.pUserData = pUserData;
5291
5292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5293
5294}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005295
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305296#ifdef FEATURE_WLAN_TDLS
5297/**
5298 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5299 upper MAC wants to send TDLS Link Establish Request Parameters
5300 Upon the call of this API the WLAN DAL will
5301 pack and send the TDLS Link Establish Request message to the
5302 lower RIVA sub-system if DAL is in state STARTED.
5303
5304 In state BUSY this request will be queued. Request won't
5305 be allowed in any other state.
5306
5307
5308 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5309 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5310
5311 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5312 response of the TDLS Link Establish request received
5313 from the device
5314
5315 pUserData: user data will be passed back with the
5316 callback
5317
5318 @see
5319 @return Result of the function call
5320*/
5321WDI_Status
5322WDI_SetTDLSLinkEstablishReq
5323(
5324 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5325 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5326 void* pUserData
5327)
5328{
5329 WDI_EventInfoType wdiEventData;
5330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5331
5332 /*------------------------------------------------------------------------
5333 Sanity Check
5334 ------------------------------------------------------------------------*/
5335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5336 {
5337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5338 "WDI API call before module is initialized - Fail request");
5339
5340 return WDI_STATUS_E_NOT_ALLOWED;
5341 }
5342
5343 /*------------------------------------------------------------------------
5344 Fill in Event data and post to the Main FSM
5345 ------------------------------------------------------------------------*/
5346 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5347 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5348 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5349 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5350 wdiEventData.pUserData = pUserData;
5351
5352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5353
5354}/*WDI_SetTDLSLinkEstablishReq*/
5355#endif
5356
Jeff Johnson295189b2012-06-20 16:38:30 -07005357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 UMAC wanted to add STA self while opening any new session
5360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005362
5363
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005366
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 callback
5369
5370 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 @return Result of the function call
5372*/
5373WDI_Status
5374WDI_AddSTASelfReq
5375(
5376 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5377 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5378 void* pUserData
5379)
5380{
5381 WDI_EventInfoType wdiEventData;
5382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5383
5384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 ------------------------------------------------------------------------*/
5387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5388 {
5389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5390 "WDI API call before module is initialized - Fail request");
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 }
5394
5395 /*------------------------------------------------------------------------
5396 Fill in Event data and post to the Main FSM
5397 ------------------------------------------------------------------------*/
5398 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5400 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5401 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 wdiEventData.pUserData = pUserData;
5403
5404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5405
5406}/*WDI_AddSTASelfReq*/
5407
5408
Jeff Johnsone7245742012-09-05 17:12:55 -07005409#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005410/**
5411 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5412 the device of a successful add TSpec negotiation. HW
5413 needs to receive the TSpec Info from the UMAC in order
5414 to configure properly the QoS data traffic. Upon the
5415 call of this API the WLAN DAL will pack and send a HAL
5416 Add TS request message to the lower RIVA sub-system if
5417 DAL is in state STARTED.
5418
5419 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005421
5422 WDI_PostAssocReq must have been called.
5423
5424 @param wdiAddTsReqParams: the add TS parameters as specified by
5425 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005426
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 wdiAddTsRspCb: callback for passing back the response of
5428 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005429
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005431 callback
5432
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 @see WDI_PostAssocReq
5434 @return Result of the function call
5435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005437WDI_AggrAddTSReq
5438(
5439 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5440 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5441 void* pUserData
5442)
5443{
5444 WDI_EventInfoType wdiEventData;
5445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5446
5447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 ------------------------------------------------------------------------*/
5450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5451 {
5452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5453 "WDI API call before module is initialized - Fail request");
5454
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 }
5457
5458 /*------------------------------------------------------------------------
5459 Fill in Event data and post to the Main FSM
5460 ------------------------------------------------------------------------*/
5461 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5463 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5464 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 wdiEventData.pUserData = pUserData;
5466
5467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5468
5469}/*WDI_AggrAddTSReq*/
5470
5471#endif /* WLAN_FEATURE_VOWIFI_11R */
5472
Jeff Johnson295189b2012-06-20 16:38:30 -07005473/**
5474 @brief WDI_FTMCommandReq
5475 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005476
5477 @param ftmCommandReq: FTM Command Body
5478 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005479 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 @see
5482 @return Result of the function call
5483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005485WDI_FTMCommandReq
5486(
5487 WDI_FTMCommandReqType *ftmCommandReq,
5488 WDI_FTMCommandRspCb ftmCommandRspCb,
5489 void *pUserData
5490)
5491{
5492 WDI_EventInfoType wdiEventData;
5493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5494
5495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 ------------------------------------------------------------------------*/
5498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5499 {
5500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5501 "WDI API call before module is initialized - Fail request");
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 }
5505
5506 /*------------------------------------------------------------------------
5507 Fill in Event data and post to the Main FSM
5508 ------------------------------------------------------------------------*/
5509 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5510 wdiEventData.pEventData = (void *)ftmCommandReq;
5511 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5512 wdiEventData.pCBfnc = ftmCommandRspCb;
5513 wdiEventData.pUserData = pUserData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516}
Jeff Johnson295189b2012-06-20 16:38:30 -07005517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005518 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005519
5520 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005522
5523
5524 @param pwdiResumeReqParams: as specified by
5525 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 wdiResumeReqRspCb: callback for passing back the response of
5528 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005529
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 callback
5532
5533 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 @return Result of the function call
5535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005537WDI_HostResumeReq
5538(
5539 WDI_ResumeParamsType* pwdiResumeReqParams,
5540 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5541 void* pUserData
5542)
5543{
5544 WDI_EventInfoType wdiEventData;
5545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5546
5547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 ------------------------------------------------------------------------*/
5550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5551 {
5552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5553 "WDI API call before module is initialized - Fail request");
5554
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 }
5557
5558 /*------------------------------------------------------------------------
5559 Fill in Event data and post to the Main FSM
5560 ------------------------------------------------------------------------*/
5561 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 wdiEventData.pEventData = pwdiResumeReqParams;
5563 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5564 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiEventData.pUserData = pUserData;
5566
5567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5568
5569}/*WDI_HostResumeReq*/
5570
5571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005572 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005573
5574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005576
5577
5578 @param pwdiDelStaSelfReqParams: as specified by
5579 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005580
Jeff Johnson295189b2012-06-20 16:38:30 -07005581 wdiDelStaSelfRspCb: callback for passing back the response of
5582 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005583
Jeff Johnson295189b2012-06-20 16:38:30 -07005584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 callback
5586
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 @see WDI_PostAssocReq
5588 @return Result of the function call
5589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005591WDI_DelSTASelfReq
5592(
5593 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5594 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5595 void* pUserData
5596)
5597{
5598 WDI_EventInfoType wdiEventData;
5599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5600
5601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005603 ------------------------------------------------------------------------*/
5604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5605 {
5606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5607 "WDI API call before module is initialized - Fail request");
5608
Jeff Johnsone7245742012-09-05 17:12:55 -07005609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005610 }
5611
5612 /*------------------------------------------------------------------------
5613 Fill in Event data and post to the Main FSM
5614 ------------------------------------------------------------------------*/
5615 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5617 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5618 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 wdiEventData.pUserData = pUserData;
5620
5621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5622
5623}/*WDI_AggrAddTSReq*/
5624
5625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5627 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005628 Upon the call of this API the WLAN DAL will pack
5629 and send a HAL Set Tx Per Tracking request message to the
5630 lower RIVA sub-system if DAL is in state STARTED.
5631
5632 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005634
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005637
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 pwdiSetTxPerTrackingRspCb: callback for passing back the
5639 response of the set Tx PER Tracking configurations operation received
5640 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005641
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 callback
5644
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 @return Result of the function call
5646*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005647WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005648WDI_SetTxPerTrackingReq
5649(
5650 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5651 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5652 void* pUserData
5653)
5654{
5655 WDI_EventInfoType wdiEventData;
5656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5657
5658 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 ------------------------------------------------------------------------*/
5661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5662 {
5663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5664 "WDI API call before module is initialized - Fail request");
5665
Jeff Johnsone7245742012-09-05 17:12:55 -07005666 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 }
5668
5669 /*------------------------------------------------------------------------
5670 Fill in Event data and post to the Main FSM
5671 ------------------------------------------------------------------------*/
5672 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005673 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiEventData.pUserData = pUserData;
5677
5678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5679
5680}/*WDI_SetTxPerTrackingReq*/
5681
5682/**
5683 @brief WDI_SetTmLevelReq
5684 If HW Thermal condition changed, driver should react based on new
5685 HW thermal condition.
5686
5687 @param pwdiSetTmLevelReq: New thermal condition information
5688
5689 pwdiSetTmLevelRspCb: callback
5690
5691 usrData: user data will be passed back with the
5692 callback
5693
5694 @return Result of the function call
5695*/
5696WDI_Status
5697WDI_SetTmLevelReq
5698(
5699 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5700 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5701 void *usrData
5702)
5703{
5704 WDI_EventInfoType wdiEventData;
5705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5706
5707 /*------------------------------------------------------------------------
5708 Sanity Check
5709 ------------------------------------------------------------------------*/
5710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5711 {
5712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5713 "WDI API call before module is initialized - Fail request");
5714
5715 return WDI_STATUS_E_NOT_ALLOWED;
5716 }
5717
5718 /*------------------------------------------------------------------------
5719 Fill in Event data and post to the Main FSM
5720 ------------------------------------------------------------------------*/
5721 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5722 wdiEventData.pEventData = pwdiSetTmLevelReq;
5723 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5724 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5725 wdiEventData.pUserData = usrData;
5726
5727 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5728}
5729
5730/**
5731 @brief WDI_HostSuspendInd
5732
5733 Suspend Indication from the upper layer will be sent
5734 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005735
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005737
5738 @see
5739
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 @return Status of the request
5741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005743WDI_HostSuspendInd
5744(
5745 WDI_SuspendParamsType* pwdiSuspendIndParams
5746)
5747{
5748
5749 WDI_EventInfoType wdiEventData;
5750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5751
5752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005754 ------------------------------------------------------------------------*/
5755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5756 {
5757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5758 "WDI API call before module is initialized - Fail request");
5759
Jeff Johnsone7245742012-09-05 17:12:55 -07005760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005761 }
5762
5763 /*------------------------------------------------------------------------
5764 Fill in Event data and post to the Main FSM
5765 ------------------------------------------------------------------------*/
5766 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 wdiEventData.pEventData = pwdiSuspendIndParams;
5768 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5769 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 wdiEventData.pUserData = NULL;
5771
5772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5773
5774}/*WDI_HostSuspendInd*/
5775
5776/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005777 @brief WDI_TrafficStatsInd
5778 Traffic Stats from the upper layer will be sent
5779 down to HAL
5780
5781 @param WDI_TrafficStatsIndType
5782
5783 @see
5784
5785 @return Status of the request
5786*/
5787WDI_Status
5788WDI_TrafficStatsInd
5789(
5790 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5791)
5792{
5793
5794 WDI_EventInfoType wdiEventData;
5795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5796
5797 /*------------------------------------------------------------------------
5798 Sanity Check
5799 ------------------------------------------------------------------------*/
5800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5801 {
5802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5803 "WDI API call before module is initialized - Fail request");
5804
5805 return WDI_STATUS_E_NOT_ALLOWED;
5806 }
5807
5808 /*------------------------------------------------------------------------
5809 Fill in Event data and post to the Main FSM
5810 ------------------------------------------------------------------------*/
5811 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5812 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5813 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5814 wdiEventData.pCBfnc = NULL;
5815 wdiEventData.pUserData = NULL;
5816
5817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5818
5819}/*WDI_TrafficStatsInd*/
5820
Chet Lanctota96bb432013-03-18 10:26:30 -07005821#ifdef WLAN_FEATURE_11W
5822/**
5823 @brief WDI_ExcludeUnencryptedInd
5824 Register with HAL to receive/drop unencrypted frames
5825
5826 @param WDI_ExcludeUnencryptIndType
5827
5828 @see
5829
5830 @return Status of the request
5831*/
5832WDI_Status
5833WDI_ExcludeUnencryptedInd
5834(
5835 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5836)
5837{
5838
5839 WDI_EventInfoType wdiEventData;
5840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5841
5842 /*------------------------------------------------------------------------
5843 Sanity Check
5844 ------------------------------------------------------------------------*/
5845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5846 {
5847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5848 "WDI API call before module is initialized - Fail request");
5849
5850 return WDI_STATUS_E_NOT_ALLOWED;
5851 }
5852
5853 /*------------------------------------------------------------------------
5854 Fill in Event data and post to the Main FSM
5855 ------------------------------------------------------------------------*/
5856 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5857 wdiEventData.pEventData = pWdiExcUnencParams;
5858 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5859 wdiEventData.pCBfnc = NULL;
5860 wdiEventData.pUserData = NULL;
5861
5862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5863
5864}/*WDI_TrafficStatsInd*/
5865#endif
5866
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005867/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 @brief WDI_HALDumpCmdReq
5869 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005870
5871 @param halDumpCmdReqParams: Hal Dump Command Body
5872 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005873 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005874
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 @see
5876 @return Result of the function call
5877*/
5878WDI_Status WDI_HALDumpCmdReq
5879(
5880 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5881 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5882 void *pUserData
5883)
5884{
5885 WDI_EventInfoType wdiEventData;
5886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5887
5888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 ------------------------------------------------------------------------*/
5891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5892 {
5893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5894 "WDI API call before module is initialized - Fail request");
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 }
5898
5899 /*------------------------------------------------------------------------
5900 Fill in Event data and post to the Main FSM
5901 ------------------------------------------------------------------------*/
5902 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5903 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5904 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5905 wdiEventData.pCBfnc = halDumpCmdRspCb;
5906 wdiEventData.pUserData = pUserData;
5907
5908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5909}
5910
Jeff Johnsone7245742012-09-05 17:12:55 -07005911/*============================================================================
5912
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005914
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 ============================================================================*/
5916
5917/**
5918 @brief Main FSM Start function for all states except BUSY
5919
Jeff Johnsone7245742012-09-05 17:12:55 -07005920
5921 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005922 wdiEV: event posted to the main DAL FSM
5923 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005924 structure
5925
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 @see
5927 @return Result of the function call
5928*/
5929WDI_Status
5930WDI_PostMainEvent
5931(
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 WDI_ControlBlockType* pWDICtx,
5933 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005935
Jeff Johnson295189b2012-06-20 16:38:30 -07005936)
5937{
Jeff Johnsone7245742012-09-05 17:12:55 -07005938 WDI_Status wdiStatus;
5939 WDI_MainFuncType pfnWDIMainEvHdlr;
5940 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5942
5943 /*-------------------------------------------------------------------------
5944 Sanity check
5945 -------------------------------------------------------------------------*/
5946 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5947 ( wdiEV >= WDI_MAX_EVENT ))
5948 {
5949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5950 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5951 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005952 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005953 }
5954
5955 /*Access to the global state must be locked */
5956 wpalMutexAcquire(&pWDICtx->wptMutex);
5957
5958 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005959 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005960
5961 wdiOldState = pWDICtx->uGlobalState;
5962
5963 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005964 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5965 response comes from CCPU for the request sent by host:
5966 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 -07005967 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 -07005968 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 CCPU:
5970 don't change the state */
5971 if ( WDI_RESPONSE_EVENT != wdiEV)
5972 {
5973 /*Transition to BUSY State - the request is now being processed by the FSM,
5974 if the request fails we shall transition back to the old state, if not
5975 the request will manage its own state transition*/
5976 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5977 }
5978 /* If the state function associated with the EV is NULL it means that this
5979 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 {
5982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005983 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005984 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 }
5987 else
5988 {
5989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005990 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 }
5994
5995 /* If a request handles itself well it will end up in a success or in a
5996 pending
5997 Success - means that the request was processed and the proper state
5998 transition already occurred or will occur when the resp is received
5999 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006000
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 Pending - means the request could not be processed at this moment in time
6002 because the FSM was already busy so no state transition or dequeueing
6003 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006004
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 Success for synchronous case means that the transition may occur and
6006 processing of pending requests may continue - so it should go through
6007 and restores the state and continue processing queued requests*/
6008 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6009 ( WDI_STATUS_PENDING != wdiStatus ))
6010 {
6011 if ( WDI_RESPONSE_EVENT != wdiEV)
6012 {
6013 /*The request has failed or could not be processed - transition back to
6014 the old state - check to see if anything was queued and try to execute
6015 The dequeue logic should post a message to a thread and return - no
6016 actual processing can occur */
6017 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6018 }
6019 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006020
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 }
6022
6023 /* we have completed processing the event */
6024 wpalMutexRelease(&pWDICtx->wptMutex);
6025
Jeff Johnsone7245742012-09-05 17:12:55 -07006026 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006027
6028}/*WDI_PostMainEvent*/
6029
6030
6031/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006032 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006033--------------------------------------------------------------------------*/
6034/**
6035 @brief Main FSM Start function for all states except BUSY
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037
6038 @param pWDICtx: pointer to the WLAN DAL context
6039 pEventData: pointer to the event information structure
6040
Jeff Johnson295189b2012-06-20 16:38:30 -07006041 @see
6042 @return Result of the function call
6043*/
6044WDI_Status
6045WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006046(
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 WDI_ControlBlockType* pWDICtx,
6048 WDI_EventInfoType* pEventData
6049)
6050{
6051
6052 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 ----------------------------------------------------------------------*/
6055 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6056 {
6057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 pWDICtx, pEventData);
6060 return WDI_STATUS_E_FAILURE;
6061 }
6062
6063 wpalMutexAcquire(&pWDICtx->wptMutex);
6064
6065 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006066 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 ----------------------------------------------------------------------*/
6068 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6069 {
6070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6071 "Control Transport not yet Open - queueing the request");
6072
6073 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006074 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006075
6076 wpalMutexRelease(&pWDICtx->wptMutex);
6077 return WDI_STATUS_PENDING;
6078 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 wpalMutexRelease(&pWDICtx->wptMutex);
6081
6082 /*Return Success*/
6083 return WDI_ProcessRequest( pWDICtx, pEventData );
6084
6085}/*WDI_MainStart*/
6086
6087/**
6088 @brief Main FSM Response function for state INIT
6089
Jeff Johnsone7245742012-09-05 17:12:55 -07006090
6091 @param pWDICtx: pointer to the WLAN DAL context
6092 pEventData: pointer to the event information structure
6093
Jeff Johnson295189b2012-06-20 16:38:30 -07006094 @see
6095 @return Result of the function call
6096*/
6097WDI_Status
6098WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006099(
Jeff Johnson295189b2012-06-20 16:38:30 -07006100 WDI_ControlBlockType* pWDICtx,
6101 WDI_EventInfoType* pEventData
6102)
6103{
6104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006105 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006108
6109 /*Return Success*/
6110 return WDI_STATUS_E_NOT_ALLOWED;
6111}/* WDI_MainRspInit */
6112
6113/**
6114 @brief Main FSM Close function for all states except BUSY
6115
Jeff Johnsone7245742012-09-05 17:12:55 -07006116
6117 @param pWDICtx: pointer to the WLAN DAL context
6118 pEventData: pointer to the event information structure
6119
Jeff Johnson295189b2012-06-20 16:38:30 -07006120 @see
6121 @return Result of the function call
6122*/
6123WDI_Status
6124WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006125(
Jeff Johnson295189b2012-06-20 16:38:30 -07006126 WDI_ControlBlockType* pWDICtx,
6127 WDI_EventInfoType* pEventData
6128)
6129{
6130
6131 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 ----------------------------------------------------------------------*/
6134 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6135 {
6136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 pWDICtx, pEventData);
6139 return WDI_STATUS_E_FAILURE;
6140 }
6141
6142 /*Return Success*/
6143 return WDI_ProcessRequest( pWDICtx, pEventData );
6144
6145}/*WDI_MainClose*/
6146/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006147 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006148--------------------------------------------------------------------------*/
6149/**
6150 @brief Main FSM Start function for state STARTED
6151
Jeff Johnsone7245742012-09-05 17:12:55 -07006152
6153 @param pWDICtx: pointer to the WLAN DAL context
6154 pEventData: pointer to the event information structure
6155
Jeff Johnson295189b2012-06-20 16:38:30 -07006156 @see
6157 @return Result of the function call
6158*/
6159WDI_Status
6160WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006161(
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 WDI_ControlBlockType* pWDICtx,
6163 WDI_EventInfoType* pEventData
6164)
6165{
6166 WDI_StartRspCb wdiStartRspCb = NULL;
6167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6168
6169 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 ----------------------------------------------------------------------*/
6172 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6173 {
6174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006175 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 pWDICtx, pEventData);
6177 return WDI_STATUS_E_FAILURE;
6178 }
6179
6180 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 ----------------------------------------------------------------------*/
6183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006185
6186 wpalMutexAcquire(&pWDICtx->wptMutex);
6187
6188 /*Transition back to started because the post function transitioned us to
6189 busy*/
6190 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6191
6192 /*Check to see if any request is pending*/
6193 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006194
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 wpalMutexRelease(&pWDICtx->wptMutex);
6196
6197 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006198 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6199
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 /*Notify UMAC*/
6201 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6202
6203 /*Return Success*/
6204 return WDI_STATUS_SUCCESS;
6205
6206}/*WDI_MainStartStarted*/
6207
6208/**
6209 @brief Main FSM Stop function for state STARTED
6210
Jeff Johnsone7245742012-09-05 17:12:55 -07006211
6212 @param pWDICtx: pointer to the WLAN DAL context
6213 pEventData: pointer to the event information structure
6214
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 @see
6216 @return Result of the function call
6217*/
6218WDI_Status
6219WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006220(
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 WDI_ControlBlockType* pWDICtx,
6222 WDI_EventInfoType* pEventData
6223)
6224{
6225 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 ----------------------------------------------------------------------*/
6228 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6229 {
6230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006231 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 pWDICtx, pEventData);
6233 return WDI_STATUS_E_FAILURE;
6234 }
6235
6236 /*State at this point is BUSY - because we enter this state before posting
6237 an event to the FSM in order to prevent potential race conditions*/
6238
6239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6240 "Processing stop request in FSM");
6241
6242 /*Return Success*/
6243 return WDI_ProcessRequest( pWDICtx, pEventData );
6244
6245}/*WDI_MainStopStarted*/
6246/**
6247 @brief Main FSM Request function for state started
6248
Jeff Johnsone7245742012-09-05 17:12:55 -07006249
6250 @param pWDICtx: pointer to the WLAN DAL context
6251 pEventData: pointer to the event information structure
6252
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 @see
6254 @return Result of the function call
6255*/
6256WDI_Status
6257WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006258(
Jeff Johnson295189b2012-06-20 16:38:30 -07006259 WDI_ControlBlockType* pWDICtx,
6260 WDI_EventInfoType* pEventData
6261)
6262{
6263
6264 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 ----------------------------------------------------------------------*/
6267 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6268 {
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 pWDICtx, pEventData);
6272 return WDI_STATUS_E_FAILURE;
6273 }
6274
6275 /*State at this point is BUSY - because we enter this state before posting
6276 an event to the FSM in order to prevent potential race conditions*/
6277
6278 /*Return Success*/
6279 return WDI_ProcessRequest( pWDICtx, pEventData );
6280
6281}/*WDI_MainReqStarted*/
6282
6283/**
6284 @brief Main FSM Response function for all states except INIT
6285
Jeff Johnsone7245742012-09-05 17:12:55 -07006286
6287 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006289
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 @see
6291 @return Result of the function call
6292*/
6293WDI_Status
6294WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006295(
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 WDI_ControlBlockType* pWDICtx,
6297 WDI_EventInfoType* pEventData
6298)
6299{
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 wpt_boolean expectedResponse;
6302
6303 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 ----------------------------------------------------------------------*/
6306 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6307 {
6308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 pWDICtx, pEventData);
6311 return WDI_STATUS_E_FAILURE;
6312 }
6313
6314 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6315 {
6316 /* we received an expected response */
6317 expectedResponse = eWLAN_PAL_TRUE;
6318
6319 /*We expect that we will transition to started after this processing*/
6320 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6321
6322 /* we are no longer expecting a response */
6323 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6324 }
6325 else
6326 {
6327 /* we received an indication or unexpected response */
6328 expectedResponse = eWLAN_PAL_FALSE;
6329 /* for indications no need to update state from what it is right
6330 now, unless it explicitly does it in the indication handler (say
6331 for device failure ind) */
6332 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6333 }
6334
6335 /*Process the response and indication */
6336 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6337
6338 /*Lock the CB as we are about to do a state transition*/
6339 wpalMutexAcquire(&pWDICtx->wptMutex);
6340
6341 /*Transition to the expected state after the response processing
6342 - this should always be started state with the following exceptions:
6343 1. processing of a failed start response
6344 2. device failure detected while processing response
6345 3. stop response received*/
6346 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006347
Jeff Johnson295189b2012-06-20 16:38:30 -07006348 /*Dequeue request that may have been queued while we were waiting for the
6349 response */
6350 if ( expectedResponse )
6351 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 }
6354
6355 wpalMutexRelease(&pWDICtx->wptMutex);
6356
6357 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006358 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006359
6360}/*WDI_MainRsp*/
6361
6362/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006364--------------------------------------------------------------------------*/
6365/**
6366 @brief Main FSM Stop function for state STOPPED
6367
Jeff Johnsone7245742012-09-05 17:12:55 -07006368
6369 @param pWDICtx: pointer to the WLAN DAL context
6370 pEventData: pointer to the event information structure
6371
Jeff Johnson295189b2012-06-20 16:38:30 -07006372 @see
6373 @return Result of the function call
6374*/
6375WDI_Status
6376WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006377(
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 WDI_ControlBlockType* pWDICtx,
6379 WDI_EventInfoType* pEventData
6380)
6381{
6382 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 ----------------------------------------------------------------------*/
6385 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6386 {
6387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 pWDICtx, pEventData);
6390 return WDI_STATUS_E_FAILURE;
6391 }
6392
6393 /*We should normally not get a STOP request if we are already stopped
6394 since we should normally be stopped by the UMAC. However in some
6395 error situations we put ourselves in the stopped state without the
6396 UMAC knowing, so when we get a STOP request in this state we still
6397 process it since we need to clean up the underlying state */
6398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6399 "Processing stop request while stopped in FSM");
6400
6401 /*Return Success*/
6402 return WDI_ProcessRequest( pWDICtx, pEventData );
6403
6404}/*WDI_MainStopStopped*/
6405
6406/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006407 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006408--------------------------------------------------------------------------*/
6409/**
6410 @brief Main FSM Start function for state BUSY
6411
Jeff Johnsone7245742012-09-05 17:12:55 -07006412
6413 @param pWDICtx: pointer to the WLAN DAL context
6414 pEventData: pointer to the event information structure
6415
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 @see
6417 @return Result of the function call
6418*/
6419WDI_Status
6420WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006421(
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 WDI_ControlBlockType* pWDICtx,
6423 WDI_EventInfoType* pEventData
6424)
6425{
6426 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006428 ----------------------------------------------------------------------*/
6429 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6430 {
6431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 pWDICtx, pEventData);
6434 return WDI_STATUS_E_FAILURE;
6435 }
6436
6437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 ----------------------------------------------------------------------*/
6440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6441 "WDI Busy state - queue start request");
6442
6443 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006445
6446 /*Return Success*/
6447 return WDI_STATUS_PENDING;
6448}/*WDI_MainStartBusy*/
6449
6450/**
6451 @brief Main FSM Stop function for state BUSY
6452
Jeff Johnsone7245742012-09-05 17:12:55 -07006453
6454 @param pWDICtx: pointer to the WLAN DAL context
6455 pEventData: pointer to the event information structure
6456
Jeff Johnson295189b2012-06-20 16:38:30 -07006457 @see
6458 @return Result of the function call
6459*/
6460WDI_Status
6461WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006462(
Jeff Johnson295189b2012-06-20 16:38:30 -07006463 WDI_ControlBlockType* pWDICtx,
6464 WDI_EventInfoType* pEventData
6465)
6466{
6467 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 ----------------------------------------------------------------------*/
6470 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6471 {
6472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 pWDICtx, pEventData);
6475 return WDI_STATUS_E_FAILURE;
6476 }
6477
6478 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 ----------------------------------------------------------------------*/
6481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6482 "WDI Busy state - queue stop request");
6483
Jeff Johnsone7245742012-09-05 17:12:55 -07006484 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006486
Jeff Johnson295189b2012-06-20 16:38:30 -07006487}/*WDI_MainStopBusy*/
6488
6489/**
6490 @brief Main FSM Request function for state BUSY
6491
Jeff Johnsone7245742012-09-05 17:12:55 -07006492
6493 @param pWDICtx: pointer to the WLAN DAL context
6494 pEventData: pointer to the event information structure
6495
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 @see
6497 @return Result of the function call
6498*/
6499WDI_Status
6500WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006501(
Jeff Johnson295189b2012-06-20 16:38:30 -07006502 WDI_ControlBlockType* pWDICtx,
6503 WDI_EventInfoType* pEventData
6504)
6505{
6506 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006508 ----------------------------------------------------------------------*/
6509 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6510 {
6511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 pWDICtx, pEventData);
6514 return WDI_STATUS_E_FAILURE;
6515 }
6516
6517 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 ----------------------------------------------------------------------*/
6520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6521 "WDI Busy state - queue request %d because waiting for response %d",
6522 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6523
Jeff Johnsone7245742012-09-05 17:12:55 -07006524 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006526
Jeff Johnson295189b2012-06-20 16:38:30 -07006527}/*WDI_MainReqBusy*/
6528/**
6529 @brief Main FSM Close function for state BUSY
6530
Jeff Johnsone7245742012-09-05 17:12:55 -07006531
6532 @param pWDICtx: pointer to the WLAN DAL context
6533 pEventData: pointer to the event information structure
6534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 @see
6536 @return Result of the function call
6537*/
6538WDI_Status
6539WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006540(
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 WDI_ControlBlockType* pWDICtx,
6542 WDI_EventInfoType* pEventData
6543)
6544{
6545 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 ----------------------------------------------------------------------*/
6548 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006551 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 pWDICtx, pEventData);
6553 return WDI_STATUS_E_FAILURE;
6554 }
6555
6556 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 ----------------------------------------------------------------------*/
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6560 "WDI Busy state - queue close request");
6561
Jeff Johnsone7245742012-09-05 17:12:55 -07006562 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006563 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006564
Jeff Johnson295189b2012-06-20 16:38:30 -07006565}/*WDI_MainCloseBusy*/
6566
6567/**
6568 @brief Main FSM Shutdown function for INIT & STARTED states
6569
6570
6571 @param pWDICtx: pointer to the WLAN DAL context
6572 pEventData: pointer to the event information structure
6573
6574 @see
6575 @return Result of the function call
6576*/
6577WDI_Status
6578WDI_MainShutdown
6579(
6580 WDI_ControlBlockType* pWDICtx,
6581 WDI_EventInfoType* pEventData
6582)
6583{
6584 /*--------------------------------------------------------------------
6585 Sanity Check
6586 ----------------------------------------------------------------------*/
6587 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6590 "Invalid parameters on Main Start %x %x",
6591 pWDICtx, pEventData);
6592 return WDI_STATUS_E_FAILURE;
6593 }
6594
6595 /*State at this point is BUSY - because we enter this state before posting
6596 an event to the FSM in order to prevent potential race conditions*/
6597
6598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6599 "Processing shutdown request in FSM");
6600
6601 /*Return Success*/
6602 return WDI_ProcessRequest( pWDICtx, pEventData );
6603
6604}/*WDI_MainShutdown*/
6605
6606/**
6607 @brief Main FSM Shutdown function for BUSY state
6608
6609
6610 @param pWDICtx: pointer to the WLAN DAL context
6611 pEventData: pointer to the event information structure
6612
6613 @see
6614 @return Result of the function call
6615*/
6616WDI_Status
6617WDI_MainShutdownBusy
6618(
6619 WDI_ControlBlockType* pWDICtx,
6620 WDI_EventInfoType* pEventData
6621)
6622{
6623 /*--------------------------------------------------------------------
6624 Sanity Check
6625 ----------------------------------------------------------------------*/
6626 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6627 {
6628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6629 "Invalid parameters on Main Start %x %x",
6630 pWDICtx, pEventData);
6631 return WDI_STATUS_E_FAILURE;
6632 }
6633
6634 /* If you are waiting for a HAL response at this stage, you are not
6635 * going to get it. Riva is already shutdown/crashed.
6636 */
6637 wpalTimerStop(&gWDICb.wptResponseTimer);
6638
6639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6640 "Processing shutdown request in FSM: Busy state ");
6641
6642 return WDI_ProcessRequest( pWDICtx, pEventData );
6643
6644}/*WDI_MainShutdownBusy*/
6645
6646
Jeff Johnsone7245742012-09-05 17:12:55 -07006647/*=======================================================================
6648
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006650
Jeff Johnson295189b2012-06-20 16:38:30 -07006651*=======================================================================*/
6652
6653/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006655========================================================================*/
6656/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006659
6660 @param pWDICtx: pointer to the WLAN DAL context
6661 pEventData: pointer to the event information structure
6662
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 @see
6664 @return Result of the function call
6665*/
6666WDI_Status
6667WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006668(
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 WDI_ControlBlockType* pWDICtx,
6670 WDI_EventInfoType* pEventData
6671)
6672{
6673 WDI_StartReqParamsType* pwdiStartParams = NULL;
6674 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006675 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 wpt_uint16 usDataOffset = 0;
6677 wpt_uint16 usSendSize = 0;
6678
Jeff Johnsone7245742012-09-05 17:12:55 -07006679 tHalMacStartReqMsg halStartReq;
6680 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6682
6683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006685 -------------------------------------------------------------------------*/
6686 if (( NULL == pEventData ) ||
6687 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6688 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6689 {
6690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 }
6695
6696 /*-----------------------------------------------------------------------
6697 Get message buffer
6698 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 pwdiStartParams->usConfigBufferLen;
6701
Jeff Johnsone7245742012-09-05 17:12:55 -07006702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006703 usLen,
6704 &pSendBuffer, &usDataOffset, &usSendSize))||
6705 ( usSendSize < (usDataOffset + usLen )))
6706 {
6707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6708 "Unable to get send buffer in start req %x %x %x",
6709 pEventData, pwdiStartParams, wdiStartRspCb);
6710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 }
6713
6714 /*-----------------------------------------------------------------------
6715 Fill in the message
6716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 halStartReq.startReqParams.driverType =
6718 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006719
Jeff Johnsone7245742012-09-05 17:12:55 -07006720 halStartReq.startReqParams.uConfigBufferLen =
6721 pwdiStartParams->usConfigBufferLen;
6722 wpalMemoryCopy( pSendBuffer+usDataOffset,
6723 &halStartReq.startReqParams,
6724 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006725
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 usDataOffset += sizeof(halStartReq.startReqParams);
6727 wpalMemoryCopy( pSendBuffer+usDataOffset,
6728 pwdiStartParams->pConfigBuffer,
6729 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006730
6731 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006733
6734 /*Save Low Level Ind CB and associated user data - it will be used further
6735 on when an indication is coming from the lower MAC*/
6736 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006738
Jeff Johnsone7245742012-09-05 17:12:55 -07006739 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6745
Jeff Johnsone7245742012-09-05 17:12:55 -07006746
Jeff Johnson295189b2012-06-20 16:38:30 -07006747}/*WDI_ProcessStartReq*/
6748
6749/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
6753 @param pWDICtx: pointer to the WLAN DAL context
6754 pEventData: pointer to the event information structure
6755
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 @see
6757 @return Result of the function call
6758*/
6759WDI_Status
6760WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006761(
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 WDI_ControlBlockType* pWDICtx,
6763 WDI_EventInfoType* pEventData
6764)
6765{
6766 WDI_StopReqParamsType* pwdiStopParams = NULL;
6767 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 wpt_uint16 usDataOffset = 0;
6770 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006771 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006772 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6774
6775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 -------------------------------------------------------------------------*/
6778 if (( NULL == pEventData ) ||
6779 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6780 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6781 {
6782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006784 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006785 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 }
6787
6788 /*-----------------------------------------------------------------------
6789 Get message buffer
6790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 sizeof(halStopReq.stopReqParams),
6793 &pSendBuffer, &usDataOffset, &usSendSize))||
6794 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6795 {
6796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6797 "Unable to get send buffer in stop req %x %x %x",
6798 pEventData, pwdiStopParams, wdiStopRspCb);
6799 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006800 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 }
6802
6803 /*-----------------------------------------------------------------------
6804 Fill in the message
6805 -----------------------------------------------------------------------*/
6806 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6807 pwdiStopParams->wdiStopReason);
6808
Jeff Johnsone7245742012-09-05 17:12:55 -07006809 wpalMemoryCopy( pSendBuffer+usDataOffset,
6810 &halStopReq.stopReqParams,
6811 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006812
6813 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006815
6816 /*! TO DO: stop the data services */
6817 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6818 {
6819 /*Stop the STA Table !UT- check this logic again
6820 It is safer to do it here than on the response - because a stop is imminent*/
6821 WDI_STATableStop(pWDICtx);
6822
6823 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006824 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6825 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 {
6827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6828 "WDI Init failed to reset power state event");
6829
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006831 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 }
6833 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006834 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6835 if( eWLAN_PAL_STATUS_SUCCESS != status )
6836 {
6837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6838 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6839 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006840 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006841 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006844 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006845 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6846 WDI_SET_POWER_STATE_TIMEOUT);
6847 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 {
6849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6850 "WDI Init failed to wait on an event");
6851
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006853 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855 }
6856
6857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6862
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006863fail:
6864 // Release the message buffer so we don't leak
6865 wpalMemoryFree(pSendBuffer);
6866
6867failRequest:
6868 //WDA should have failure check to avoid the memory leak
6869 return WDI_STATUS_E_FAILURE;
6870
Jeff Johnson295189b2012-06-20 16:38:30 -07006871}/*WDI_ProcessStopReq*/
6872
6873/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006876
6877 @param pWDICtx: pointer to the WLAN DAL context
6878 pEventData: pointer to the event information structure
6879
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 @see
6881 @return Result of the function call
6882*/
6883WDI_Status
6884WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006885(
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 WDI_ControlBlockType* pWDICtx,
6887 WDI_EventInfoType* pEventData
6888)
6889{
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6892
6893 /*Lock control block for cleanup*/
6894 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006895
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 /*Clear all pending request*/
6897 WDI_ClearPendingRequests(pWDICtx);
6898
6899 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006901
6902 /* Close Data transport*/
6903 /* FTM mode does not open Data Path */
6904 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6905 {
6906 WDTS_Close(pWDICtx);
6907 }
6908
6909 /*Close the STA Table !UT- check this logic again*/
6910 WDI_STATableClose(pWDICtx);
6911
6912 /*close the PAL */
6913 wptStatus = wpalClose(pWDICtx->pPALContext);
6914 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6915 {
6916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6917 "Failed to wpal Close %d", wptStatus);
6918 WDI_ASSERT(0);
6919 }
6920
6921 /*Transition back to init state*/
6922 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6923
6924 wpalMutexRelease(&pWDICtx->wptMutex);
6925
6926 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006927 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006928
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006930}/*WDI_ProcessCloseReq*/
6931
6932
6933/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006935===========================================================================*/
6936
6937/**
6938 @brief Process Init Scan Request function (called when Main FSM
6939 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006940
6941 @param pWDICtx: pointer to the WLAN DAL context
6942 pEventData: pointer to the event information structure
6943
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 @see
6945 @return Result of the function call
6946*/
6947WDI_Status
6948WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006949(
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 WDI_ControlBlockType* pWDICtx,
6951 WDI_EventInfoType* pEventData
6952)
6953{
6954 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6955 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 wpt_uint16 usDataOffset = 0;
6958 wpt_uint16 usSendSize = 0;
6959 wpt_uint8 i = 0;
6960
6961 tHalInitScanReqMsg halInitScanReqMsg;
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 * It shold be removed once host and riva changes are in sync*/
6965 tHalInitScanConReqMsg halInitScanConReqMsg;
6966
6967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6968
6969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006971 -------------------------------------------------------------------------*/
6972 if (( NULL == pEventData ) ||
6973 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6974 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6975 {
6976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 }
6981
6982#if 0
6983 wpalMutexAcquire(&pWDICtx->wptMutex);
6984 /*-----------------------------------------------------------------------
6985 Check to see if SCAN is already in progress - if so reject the req
6986 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 -----------------------------------------------------------------------*/
6989 if ( pWDICtx->bScanInProgress )
6990 {
6991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6992 "Scan is already in progress - subsequent scan is not allowed"
6993 " until the first scan completes");
6994
6995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 }
6998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7000 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001
7002 wpalMutexRelease(&pWDICtx->wptMutex);
7003#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007004 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 * It shold be removed once host and riva changes are in sync*/
7008 /*-----------------------------------------------------------------------
7009 Get message buffer
7010 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 sizeof(halInitScanConReqMsg.initScanParams),
7013 &pSendBuffer, &usDataOffset, &usSendSize))||
7014 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7015 {
7016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7017 "Unable to get send buffer in init scan req %x %x %x",
7018 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 }
7022
7023
7024 /*-----------------------------------------------------------------------
7025 Fill in the message
7026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007027 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7029
7030 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7031 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7032
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007035 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007036 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7039
7040 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7041 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7042
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7044 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7048
7049 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7050 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7053 }
7054
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 wpalMemoryCopy( pSendBuffer+usDataOffset,
7056 &halInitScanConReqMsg.initScanParams,
7057 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 }
7059 else
7060 {
7061 /*-----------------------------------------------------------------------
7062 Get message buffer
7063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 sizeof(halInitScanReqMsg.initScanParams),
7066 &pSendBuffer, &usDataOffset, &usSendSize))||
7067 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7068 {
7069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7070 "Unable to get send buffer in init scan req %x %x %x",
7071 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 }
7075
7076
7077 /*-----------------------------------------------------------------------
7078 Fill in the message
7079 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007080 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007081 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7082
7083 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7084 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7085
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7092
7093 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7094 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7095
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7098
7099 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7100 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007101 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7103 }
7104
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 wpalMemoryCopy( pSendBuffer+usDataOffset,
7106 &halInitScanReqMsg.initScanParams,
7107 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 }
7109
7110 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007112
7113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7118
7119}/*WDI_ProcessInitScanReq*/
7120
7121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007122 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007124
7125 @param pWDICtx: pointer to the WLAN DAL context
7126 pEventData: pointer to the event information structure
7127
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 @see
7129 @return Result of the function call
7130*/
7131WDI_Status
7132WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007133(
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 WDI_ControlBlockType* pWDICtx,
7135 WDI_EventInfoType* pEventData
7136)
7137{
7138 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7139 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007140 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 wpt_uint16 usDataOffset = 0;
7142 wpt_uint16 usSendSize = 0;
7143
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7146
7147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 -------------------------------------------------------------------------*/
7150 if (( NULL == pEventData ) ||
7151 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7152 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7153 {
7154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 }
7159
7160#if 0
7161 wpalMutexAcquire(&pWDICtx->wptMutex);
7162 /*-----------------------------------------------------------------------
7163 Check to see if SCAN is already in progress - start scan is only
7164 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7169 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7170 {
7171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7172 "Scan start not allowed in this state %d %d",
7173 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007174
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 }
7178
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007180
7181 wpalMutexRelease(&pWDICtx->wptMutex);
7182#endif
7183
7184 /*-----------------------------------------------------------------------
7185 Get message buffer
7186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 sizeof(halStartScanReqMsg.startScanParams),
7189 &pSendBuffer, &usDataOffset, &usSendSize))||
7190 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7191 {
7192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7193 "Unable to get send buffer in start scan req %x %x %x",
7194 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007201 wpalMemoryCopy( pSendBuffer+usDataOffset,
7202 &halStartScanReqMsg.startScanParams,
7203 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007204
7205 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007207
7208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007209 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7213}/*WDI_ProcessStartScanReq*/
7214
7215
7216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007219
7220 @param pWDICtx: pointer to the WLAN DAL context
7221 pEventData: pointer to the event information structure
7222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 @see
7224 @return Result of the function call
7225*/
7226WDI_Status
7227WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007228(
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 WDI_ControlBlockType* pWDICtx,
7230 WDI_EventInfoType* pEventData
7231)
7232{
7233 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7234 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 wpt_uint16 usDataOffset = 0;
7237 wpt_uint16 usSendSize = 0;
7238
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7241
7242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 -------------------------------------------------------------------------*/
7245 if (( NULL == pEventData ) ||
7246 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7247 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7248 {
7249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 }
7254
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7256 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007257 * forwarded to HAL and result in hang*/
7258#if 0
7259 wpalMutexAcquire(&pWDICtx->wptMutex);
7260 /*-----------------------------------------------------------------------
7261 Check to see if SCAN is already in progress - end scan is only
7262 allowed when a scan is ongoing and the state of the scan procedure
7263 is started
7264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7267 {
7268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7269 "End start not allowed in this state %d %d",
7270 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007271
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 }
7275
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007277
7278 wpalMutexRelease(&pWDICtx->wptMutex);
7279#endif
7280
7281 /*-----------------------------------------------------------------------
7282 Get message buffer
7283 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 sizeof(halEndScanReqMsg.endScanParams),
7286 &pSendBuffer, &usDataOffset, &usSendSize))||
7287 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7288 {
7289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7290 "Unable to get send buffer in start scan req %x %x %x",
7291 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 }
7295
7296 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7297
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 wpalMemoryCopy( pSendBuffer+usDataOffset,
7299 &halEndScanReqMsg.endScanParams,
7300 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007301
7302 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007304
7305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7310}/*WDI_ProcessEndScanReq*/
7311
7312
7313/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007316
7317 @param pWDICtx: pointer to the WLAN DAL context
7318 pEventData: pointer to the event information structure
7319
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 @see
7321 @return Result of the function call
7322*/
7323WDI_Status
7324WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007325(
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 WDI_ControlBlockType* pWDICtx,
7327 WDI_EventInfoType* pEventData
7328)
7329{
7330 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7331 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 wpt_uint16 usDataOffset = 0;
7334 wpt_uint16 usSendSize = 0;
7335 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007336 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7339
7340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 -------------------------------------------------------------------------*/
7343 if (( NULL == pEventData ) ||
7344 ( NULL == pEventData->pEventData) ||
7345 ( NULL == pEventData->pCBfnc))
7346 {
7347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 }
7352
7353 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7354 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7356 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 * forwarded to HAL and result in hang*/
7358#if 0
7359 wpalMutexAcquire(&pWDICtx->wptMutex);
7360 /*-----------------------------------------------------------------------
7361 Check to see if SCAN is already in progress
7362 Finish scan gets invoked any scan states. ie. abort scan
7363 It should be allowed in any states.
7364 -----------------------------------------------------------------------*/
7365 if ( !pWDICtx->bScanInProgress )
7366 {
7367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7368 "Finish start not allowed in this state %d",
7369 pWDICtx->bScanInProgress );
7370
7371 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 }
7374
7375 /*-----------------------------------------------------------------------
7376 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7380 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 wpalMutexRelease(&pWDICtx->wptMutex);
7382#endif
7383
7384 if ( pWDICtx->bInBmps )
7385 {
7386 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007387 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7388 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7389 {
7390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7391 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7392 WDI_ASSERT(0);
7393 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
7396 /*-----------------------------------------------------------------------
7397 Get message buffer
7398 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007400 sizeof(halFinishScanReqMsg.finishScanParams),
7401 &pSendBuffer, &usDataOffset, &usSendSize))||
7402 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7403 {
7404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7405 "Unable to get send buffer in start scan req %x %x %x",
7406 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 }
7410
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7413
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7416
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7419
7420 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7421 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7422
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7429
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7432
7433 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7434 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7437 }
7438
7439 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7440 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7441
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 wpalMemoryCopy( pSendBuffer+usDataOffset,
7443 &halFinishScanReqMsg.finishScanParams,
7444 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007445
7446 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007448
7449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7454}/*WDI_ProcessFinishScanReq*/
7455
7456
7457/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007459==========================================================================*/
7460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 @brief Process BSS Join for a given Session
7462
7463 @param pWDICtx: pointer to the WLAN DAL context
7464 pEventData: pointer to the event information structure
7465
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 @see
7467 @return Result of the function call
7468*/
7469WDI_Status
7470WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007471(
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 WDI_ControlBlockType* pWDICtx,
7473 WDI_JoinReqParamsType* pwdiJoinParams,
7474 WDI_JoinRspCb wdiJoinRspCb,
7475 void* pUserData
7476)
7477{
7478 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 wpt_uint16 usDataOffset = 0;
7481 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7486
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007487 wpalMutexAcquire(&pWDICtx->wptMutex);
7488
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 /*------------------------------------------------------------------------
7490 Check to see if we have any session with this BSSID already stored, we
7491 should not
7492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7494 pwdiJoinParams->wdiReqInfo.macBSSID,
7495 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007496
7497 if ( NULL != pBSSSes )
7498 {
7499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007500 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7501 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007502
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007503 /*reset the bAssociationInProgress otherwise the next
7504 *join request will be queued*/
7505 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7506 wpalMutexRelease(&pWDICtx->wptMutex);
7507 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 }
7509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 if ( NULL == pBSSSes )
7515 {
7516
7517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7518 "DAL has no free sessions - cannot run another join");
7519
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007520 /*reset the bAssociationInProgress otherwise the next
7521 *join request will be queued*/
7522 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007524 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 }
7526
7527 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7529 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 WDI_MAC_ADDR_LEN);
7531
7532 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007535
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 wpalMutexRelease(&pWDICtx->wptMutex);
7537
7538 /*-----------------------------------------------------------------------
7539 Get message buffer
7540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 sizeof(halJoinReqMsg.joinReqParams),
7543 &pSendBuffer, &usDataOffset, &usSendSize))||
7544 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7545 {
7546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7547 "Unable to get send buffer in join req %x %x %x",
7548 pUserData, pwdiJoinParams, wdiJoinRspCb);
7549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 }
7552
7553 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007555
7556 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 pwdiJoinParams->wdiReqInfo.macSTASelf,
7558 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007559
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7562
7563 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7564
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007565#ifdef WLAN_FEATURE_VOWIFI
7566 halJoinReqMsg.joinReqParams.maxTxPower =
7567 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7568#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7571#endif
7572
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7575 wdiSecondaryChannelOffset);
7576
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 wpalMemoryCopy( pSendBuffer+usDataOffset,
7578 &halJoinReqMsg.joinReqParams,
7579 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007580
7581 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583
7584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7588 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007589
7590}/*WDI_ProcessBSSSessionJoinReq*/
7591
7592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007595
7596 @param pWDICtx: pointer to the WLAN DAL context
7597 pEventData: pointer to the event information structure
7598
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 @see
7600 @return Result of the function call
7601*/
7602WDI_Status
7603WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007604(
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 WDI_ControlBlockType* pWDICtx,
7606 WDI_EventInfoType* pEventData
7607)
7608{
7609 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7610 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7611 WDI_JoinRspCb wdiJoinRspCb = NULL;
7612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7613
7614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 -------------------------------------------------------------------------*/
7617 if (( NULL == pEventData ) ||
7618 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7619 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7620 {
7621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007626
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 /*-------------------------------------------------------------------------
7628 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 -------------------------------------------------------------------------*/
7631 wpalMutexAcquire(&pWDICtx->wptMutex);
7632
7633 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7634 {
7635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7636 "Association is currently in progress, queueing new join req");
7637
7638 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 pwdiJoinParams->wdiReqInfo.macBSSID);
7641
7642 wpalMutexRelease(&pWDICtx->wptMutex);
7643
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 }
7646
7647 /*Starting a new association */
7648 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7649 wpalMutexRelease(&pWDICtx->wptMutex);
7650
7651 /*Process the Join Request*/
7652 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7653 wdiJoinRspCb,pEventData->pUserData);
7654
7655}/*WDI_ProcessJoinReq*/
7656
7657
7658/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007661
7662 @param pWDICtx: pointer to the WLAN DAL context
7663 pEventData: pointer to the event information structure
7664
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 @see
7666 @return Result of the function call
7667*/
7668WDI_Status
7669WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007670(
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 WDI_ControlBlockType* pWDICtx,
7672 WDI_EventInfoType* pEventData
7673)
7674{
7675 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7676 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 wpt_uint16 uMsgSize = 0;
7680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 wpt_uint16 usDataOffset = 0;
7682 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007684
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7687
7688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007690 -------------------------------------------------------------------------*/
7691 if (( NULL == pEventData ) ||
7692 ( NULL == pEventData->pEventData ) ||
7693 ( NULL == pEventData->pCBfnc ))
7694 {
7695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 }
7700
7701 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7702 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7703 /*-------------------------------------------------------------------------
7704 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 -------------------------------------------------------------------------*/
7707 wpalMutexAcquire(&pWDICtx->wptMutex);
7708
7709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7713 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7714 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 {
7718#ifdef WLAN_FEATURE_VOWIFI_11R
7719 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 if ( NULL == pBSSSes )
7724 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007725
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7727 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007728
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007732
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7735 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007737
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7741#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 * Request in case of IBSS*/
7744 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7745 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7746 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7747 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7748 {
7749 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 if ( NULL == pBSSSes )
7754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007755
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7757 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007758
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007762
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7765 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007767
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7771 }
7772 else
7773 {
7774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7776 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7777 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7778
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 /* for IBSS testing */
7780 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 }
7783#endif
7784 }
7785
7786 /*------------------------------------------------------------------------
7787 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 ------------------------------------------------------------------------*/
7790 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7791 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7793 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7794 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7795 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007796
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007798
7799 wpalMutexRelease(&pWDICtx->wptMutex);
7800
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 }
7803
7804 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7806 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 sizeof(pWDICtx->wdiCachedConfigBssReq));
7808
7809 wpalMutexRelease(&pWDICtx->wptMutex);
7810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7812#ifdef WLAN_FEATURE_11AC
7813 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007814 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 else
7816#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007817 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007818
7819 /*-----------------------------------------------------------------------
7820 Get message buffer
7821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7824 ( usSendSize < (usDataOffset + uMsgSize )))
7825 {
7826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7827 "Unable to get send buffer in config bss req %x %x %x",
7828 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 }
7832
7833 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007834#ifdef WLAN_FEATURE_11AC
7835 if (WDI_getFwWlanFeatCaps(DOT11AC))
7836 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7837 &pwdiConfigBSSParams->wdiReqInfo);
7838 else
7839#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 &pwdiConfigBSSParams->wdiReqInfo);
7842
7843 /* Need to fill in the STA Index to invalid, since at this point we have not
7844 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846
7847 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7849
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007850#ifdef WLAN_FEATURE_11AC
7851 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7852 wpalMemoryCopy( pSendBuffer+usDataOffset,
7853 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7854 uMsgSize);
7855 }else
7856#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007857 {
7858 if ( uMsgSize <= sizeof(tConfigBssParams) )
7859 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007860 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007861 &halConfigBssReqMsg.uBssParams.configBssParams,
7862 uMsgSize);
7863 }
7864 else
7865 {
7866 return WDI_STATUS_E_FAILURE;
7867 }
7868 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007869
7870 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872
7873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7877 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 WDI_CONFIG_BSS_RESP);
7879
7880}/*WDI_ProcessConfigBSSReq*/
7881
7882
7883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007886
7887 @param pWDICtx: pointer to the WLAN DAL context
7888 pEventData: pointer to the event information structure
7889
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 @see
7891 @return Result of the function call
7892*/
7893WDI_Status
7894WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007895(
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 WDI_ControlBlockType* pWDICtx,
7897 WDI_EventInfoType* pEventData
7898)
7899{
7900 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7901 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 wpt_uint16 usDataOffset = 0;
7906 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007908
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7911
7912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 -------------------------------------------------------------------------*/
7915 if (( NULL == pEventData ) ||
7916 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7917 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7918 {
7919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 }
7924
7925 /*-------------------------------------------------------------------------
7926 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 -------------------------------------------------------------------------*/
7929 wpalMutexAcquire(&pWDICtx->wptMutex);
7930
7931 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7935 pwdiDelBSSParams->ucBssIdx,
7936 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007937
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 {
7940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 "%s: BSS does not yet exist. ucBssIdx %d",
7942 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007943
7944 wpalMutexRelease(&pWDICtx->wptMutex);
7945
7946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007948
7949 /*------------------------------------------------------------------------
7950 Check if this BSS is being currently processed or queued,
7951 if queued - queue the new request as well
7952 ------------------------------------------------------------------------*/
7953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7956 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7957 __func__, pwdiDelBSSParams->ucBssIdx);
7958
7959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
7962
7963 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007965
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 /*-----------------------------------------------------------------------
7967 If we receive a Del BSS request for an association that is already in
7968 progress, it indicates that the assoc has failed => we no longer have
7969 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 -----------------------------------------------------------------------*/
7972 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7973 {
7974 /*We can switch to false here because even if a subsequent Join comes in
7975 it will only be processed when DAL transitions out of BUSY state which
7976 happens when the Del BSS request comes */
7977 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7978
7979 /*Former association is complete - prepare next pending assoc for
7980 processing */
7981 WDI_DequeueAssocRequest(pWDICtx);
7982 }
7983
7984 wpalMutexRelease(&pWDICtx->wptMutex);
7985 /*-----------------------------------------------------------------------
7986 Get message buffer
7987 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 sizeof(halBssReqMsg.deleteBssParams),
7990 &pSendBuffer, &usDataOffset, &usSendSize))||
7991 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7992 {
7993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7994 "Unable to get send buffer in start req %x %x %x",
7995 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 }
7999
8000 /*Fill in the message request structure*/
8001
8002 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008003 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 wpalMemoryCopy( pSendBuffer+usDataOffset,
8006 &halBssReqMsg.deleteBssParams,
8007 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008008
8009 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008011
Jeff Johnsone7245742012-09-05 17:12:55 -07008012
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8018
Jeff Johnsone7245742012-09-05 17:12:55 -07008019
Jeff Johnson295189b2012-06-20 16:38:30 -07008020}/*WDI_ProcessDelBSSReq*/
8021
8022/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008025
8026 @param pWDICtx: pointer to the WLAN DAL context
8027 pEventData: pointer to the event information structure
8028
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 @see
8030 @return Result of the function call
8031*/
8032WDI_Status
8033WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008034(
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 WDI_ControlBlockType* pWDICtx,
8036 WDI_EventInfoType* pEventData
8037)
8038{
8039 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8040 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 wpt_uint16 usDataOffset = 0;
8045 wpt_uint16 usSendSize = 0;
8046 wpt_uint16 uMsgSize = 0;
8047 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8052
8053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 -------------------------------------------------------------------------*/
8056 if (( NULL == pEventData ) ||
8057 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8058 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8059 {
8060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 }
8065
8066 /*-------------------------------------------------------------------------
8067 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 -------------------------------------------------------------------------*/
8070 wpalMutexAcquire(&pWDICtx->wptMutex);
8071
8072 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8076 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8077 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008078
8079 if ( NULL == pBSSSes )
8080 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8082 "%s: Association sequence for this BSS does not yet exist - "
8083 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8084 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008085
8086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 }
8089
8090 /*------------------------------------------------------------------------
8091 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 ------------------------------------------------------------------------*/
8094 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8095 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8097 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8098 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008099
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008101
8102 wpalMutexRelease(&pWDICtx->wptMutex);
8103
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 }
8106
8107 /*-----------------------------------------------------------------------
8108 If Post Assoc was not yet received - the current association must
8109 be in progress
8110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8113 {
8114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8115 "Association sequence for this BSS association no longer in "
8116 "progress - not allowed");
8117
8118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 }
8121
8122 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 -----------------------------------------------------------------------*/
8125 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8126 {
8127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8128 "Post Assoc not allowed before JOIN - failing request");
8129
8130 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 }
8133
8134 wpalMutexRelease(&pWDICtx->wptMutex);
8135
8136 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8137 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8138 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8143 ( usSendSize < (usDataOffset + uMsgSize )))
8144 {
8145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8146 "Unable to get send buffer in start req %x %x %x",
8147 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 }
8151
8152 /*Copy the STA parameters */
8153 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8154 &pwdiPostAssocParams->wdiSTAParams );
8155
8156 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 WDI_STATableFindStaidByAddr(pWDICtx,
8159 pwdiPostAssocParams->wdiSTAParams.macSTA,
8160 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8161 {
8162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8163 "This station does not exist in the WDI Station Table %d");
8164 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008165 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 }
8168
8169 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 pBSSSes->ucBSSIdx;
8172
8173 /*Copy the BSS parameters */
8174 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8175 &pwdiPostAssocParams->wdiBSSParams);
8176
8177 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 WDI_STATableFindStaidByAddr(pWDICtx,
8180 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 {
8183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8184 "This station does not exist in the WDI Station Table %d");
8185 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008186 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 }
8189
8190 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 pBSSSes->ucBSSIdx;
8193
Jeff Johnsone7245742012-09-05 17:12:55 -07008194
8195 wpalMemoryCopy( pSendBuffer+usDataOffset,
8196 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8197 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008198
8199 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8200
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8202 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8203 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008204
Jeff Johnsone7245742012-09-05 17:12:55 -07008205
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008208
Jeff Johnsone7245742012-09-05 17:12:55 -07008209
8210 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008213
8214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8219
Jeff Johnsone7245742012-09-05 17:12:55 -07008220
Jeff Johnson295189b2012-06-20 16:38:30 -07008221}/*WDI_ProcessPostAssocReq*/
8222
8223/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008226
8227 @param pWDICtx: pointer to the WLAN DAL context
8228 pEventData: pointer to the event information structure
8229
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 @see
8231 @return Result of the function call
8232*/
8233WDI_Status
8234WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008235(
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 WDI_ControlBlockType* pWDICtx,
8237 WDI_EventInfoType* pEventData
8238)
8239{
8240 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8241 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 wpt_uint16 usDataOffset = 0;
8246 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8249
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8252
8253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 -------------------------------------------------------------------------*/
8256 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8257 ( NULL == pEventData->pCBfnc ))
8258 {
8259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 }
8264
8265 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8266 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8267 /*-------------------------------------------------------------------------
8268 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 -------------------------------------------------------------------------*/
8271 wpalMutexAcquire(&pWDICtx->wptMutex);
8272
8273 /*------------------------------------------------------------------------
8274 Find the BSS for which the request is made and identify WDI session
8275 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8277 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 &macBSSID))
8279 {
8280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8281 "This station does not exist in the WDI Station Table %d");
8282 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 }
8285
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8287 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8290 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8291 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008292
8293 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 }
8296
8297 /*------------------------------------------------------------------------
8298 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 ------------------------------------------------------------------------*/
8301 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8302 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8304 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8305 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008306
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 wpalMutexRelease(&pWDICtx->wptMutex);
8313 /*-----------------------------------------------------------------------
8314 Get message buffer
8315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 sizeof(halDelStaReqMsg.delStaParams),
8318 &pSendBuffer, &usDataOffset, &usSendSize))||
8319 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8320 {
8321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8322 "Unable to get send buffer in start req %x %x %x",
8323 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 }
8327
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8329 wpalMemoryCopy( pSendBuffer+usDataOffset,
8330 &halDelStaReqMsg.delStaParams,
8331 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008332
8333 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008335
8336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8341
8342}/*WDI_ProcessDelSTAReq*/
8343
8344
8345/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008347==========================================================================*/
8348/**
8349 @brief Process Set BSS Key Request function (called when Main FSM
8350 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008351
8352 @param pWDICtx: pointer to the WLAN DAL context
8353 pEventData: pointer to the event information structure
8354
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 @see
8356 @return Result of the function call
8357*/
8358WDI_Status
8359WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008360(
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 WDI_ControlBlockType* pWDICtx,
8362 WDI_EventInfoType* pEventData
8363)
8364{
8365 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8366 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 wpt_uint16 usDataOffset = 0;
8371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8374 wpt_uint8 keyIndex = 0;
8375
8376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8377
8378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 -------------------------------------------------------------------------*/
8381 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8382 ( NULL == pEventData->pCBfnc ))
8383 {
8384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 }
8389
8390 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8391 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8392 /*-------------------------------------------------------------------------
8393 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 -------------------------------------------------------------------------*/
8396 wpalMutexAcquire(&pWDICtx->wptMutex);
8397
8398 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8402 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8403 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 {
8407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8409 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008410
8411 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 }
8414
8415 /*------------------------------------------------------------------------
8416 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 ------------------------------------------------------------------------*/
8419 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8420 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8422 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8423 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 }
8429
8430
8431 wpalMutexRelease(&pWDICtx->wptMutex);
8432 /*-----------------------------------------------------------------------
8433 Get message buffer
8434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8437 &pSendBuffer, &usDataOffset, &usSendSize))||
8438 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8439 {
8440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8441 "Unable to get send buffer in set bss key req %x %x %x",
8442 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 }
8446
8447 /*-----------------------------------------------------------------------
8448 Copy the Key parameters into the HAL message
8449 -----------------------------------------------------------------------*/
8450
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8455
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8458
8459 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8460 keyIndex++)
8461 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8464 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8465 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8466 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8467 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8468 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8475 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 WDI_MAX_KEY_LENGTH);
8478 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008479
8480 wpalMemoryCopy( pSendBuffer+usDataOffset,
8481 &halSetBssKeyReqMsg.setBssKeyParams,
8482 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008483
8484 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008486
8487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8491 wdiSetBSSKeyRspCb, pEventData->pUserData,
8492 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008493
8494}/*WDI_ProcessSetBssKeyReq*/
8495
8496/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008499
8500 @param pWDICtx: pointer to the WLAN DAL context
8501 pEventData: pointer to the event information structure
8502
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 @see
8504 @return Result of the function call
8505*/
8506WDI_Status
8507WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008508(
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WDI_ControlBlockType* pWDICtx,
8510 WDI_EventInfoType* pEventData
8511)
8512{
8513 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8514 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 wpt_uint16 usDataOffset = 0;
8519 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8523
8524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 -------------------------------------------------------------------------*/
8527 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8528 ( NULL == pEventData->pCBfnc ))
8529 {
8530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 }
8535
8536 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8537 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8538 /*-------------------------------------------------------------------------
8539 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 -------------------------------------------------------------------------*/
8542 wpalMutexAcquire(&pWDICtx->wptMutex);
8543
8544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8548 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8549 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008550
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 {
8553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8555 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008556
8557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 }
8560
8561 /*------------------------------------------------------------------------
8562 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 ------------------------------------------------------------------------*/
8565 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8566 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8568 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8569 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008570
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
8576
8577 wpalMutexRelease(&pWDICtx->wptMutex);
8578
8579 /*-----------------------------------------------------------------------
8580 Get message buffer
8581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8584 &pSendBuffer, &usDataOffset, &usSendSize))||
8585 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8586 {
8587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8588 "Unable to get send buffer in set bss key req %x %x %x",
8589 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 }
8593 /*-----------------------------------------------------------------------
8594 Copy the Key parameters into the HAL message
8595 -----------------------------------------------------------------------*/
8596 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8597
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8600
8601 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8605
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 wpalMemoryCopy( pSendBuffer+usDataOffset,
8607 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8608 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008619}/*WDI_ProcessRemoveBssKeyReq*/
8620
8621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008624
8625 @param pWDICtx: pointer to the WLAN DAL context
8626 pEventData: pointer to the event information structure
8627
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 @see
8629 @return Result of the function call
8630*/
8631WDI_Status
8632WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008633(
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 WDI_ControlBlockType* pWDICtx,
8635 WDI_EventInfoType* pEventData
8636)
8637{
8638 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8639 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8640 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 wpt_uint16 usDataOffset = 0;
8643 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8648 wpt_uint8 keyIndex = 0;
8649
8650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8651
8652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 -------------------------------------------------------------------------*/
8655 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8656 ( NULL == pEventData->pCBfnc ))
8657 {
8658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 }
8663
8664 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8665 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8666 /*-------------------------------------------------------------------------
8667 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 -------------------------------------------------------------------------*/
8670 wpalMutexAcquire(&pWDICtx->wptMutex);
8671
8672 /*------------------------------------------------------------------------
8673 Find the BSS for which the request is made and identify WDI session
8674 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8676 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 &macBSSID))
8678 {
8679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8680 "This station does not exist in the WDI Station Table %d");
8681 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 }
8684
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8686 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8689 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8690 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008691
8692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008695
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 /*------------------------------------------------------------------------
8697 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 ------------------------------------------------------------------------*/
8700 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8701 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8703 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8704 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008705
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 }
8710
8711
8712 wpalMutexRelease(&pWDICtx->wptMutex);
8713 /*-----------------------------------------------------------------------
8714 Get message buffer
8715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8718 &pSendBuffer, &usDataOffset, &usSendSize))||
8719 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8720 {
8721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8722 "Unable to get send buffer in set bss key req %x %x %x",
8723 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727 /*-----------------------------------------------------------------------
8728 Copy the STA Key parameters into the HAL message
8729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8732
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8735
8736 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8737
8738 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8739
8740 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8741
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8743 keyIndex++)
8744 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8747 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8748 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8749 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8750 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8751 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8758 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 WDI_MAX_KEY_LENGTH);
8761 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008762
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 wpalMemoryCopy( pSendBuffer+usDataOffset,
8764 &halSetStaKeyReqMsg.setStaKeyParams,
8765 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008766
8767 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769
8770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8774 wdiSetSTAKeyRspCb, pEventData->pUserData,
8775 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008776
8777}/*WDI_ProcessSetSTAKeyReq*/
8778
8779/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008782
8783 @param pWDICtx: pointer to the WLAN DAL context
8784 pEventData: pointer to the event information structure
8785
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 @see
8787 @return Result of the function call
8788*/
8789WDI_Status
8790WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008791(
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 WDI_ControlBlockType* pWDICtx,
8793 WDI_EventInfoType* pEventData
8794)
8795{
8796 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8797 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8798 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 wpt_uint16 usDataOffset = 0;
8801 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 wpt_macAddr macBSSID;
8804 wpt_uint8 ucCurrentBSSSesIdx;
8805 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8807
8808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 -------------------------------------------------------------------------*/
8811 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8812 ( NULL == pEventData->pCBfnc ))
8813 {
8814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 }
8819
8820 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8821 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8822 /*-------------------------------------------------------------------------
8823 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 -------------------------------------------------------------------------*/
8826 wpalMutexAcquire(&pWDICtx->wptMutex);
8827
8828 /*------------------------------------------------------------------------
8829 Find the BSS for which the request is made and identify WDI session
8830 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8832 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 &macBSSID))
8834 {
8835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8836 "This station does not exist in the WDI Station Table %d");
8837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 }
8840
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8842 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8845 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8846 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008847
8848 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008851
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 /*------------------------------------------------------------------------
8853 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 ------------------------------------------------------------------------*/
8856 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8857 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8859 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8860 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008861
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 }
8866
8867
8868
8869 wpalMutexRelease(&pWDICtx->wptMutex);
8870 /*-----------------------------------------------------------------------
8871 Get message buffer
8872 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8875 &pSendBuffer, &usDataOffset, &usSendSize))||
8876 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8877 {
8878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8879 "Unable to get send buffer in set bss key req %x %x %x",
8880 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 }
8884
8885 /*-----------------------------------------------------------------------
8886 Copy the Key parameters into the HAL message
8887 -----------------------------------------------------------------------*/
8888
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8891
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8894
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8900
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 wpalMemoryCopy( pSendBuffer+usDataOffset,
8902 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8903 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008904
8905 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907
8908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008914
8915}/*WDI_ProcessRemoveSTAKeyReq*/
8916
8917/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008920
8921 @param pWDICtx: pointer to the WLAN DAL context
8922 pEventData: pointer to the event information structure
8923
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 @see
8925 @return Result of the function call
8926*/
8927WDI_Status
8928WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008929(
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 WDI_ControlBlockType* pWDICtx,
8931 WDI_EventInfoType* pEventData
8932)
8933{
8934 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8935 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8936 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 wpt_uint16 usDataOffset = 0;
8939 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8944 wpt_uint8 keyIndex = 0;
8945
8946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8947
8948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 -------------------------------------------------------------------------*/
8951 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8952 ( NULL == pEventData->pCBfnc ))
8953 {
8954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8961 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8962 /*-------------------------------------------------------------------------
8963 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 -------------------------------------------------------------------------*/
8966 wpalMutexAcquire(&pWDICtx->wptMutex);
8967
8968 /*------------------------------------------------------------------------
8969 Find the BSS for which the request is made and identify WDI session
8970 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8972 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 &macBSSID))
8974 {
8975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8976 "This station does not exist in the WDI Station Table %d");
8977 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 }
8980
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8982 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 {
8984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8986 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008987
8988 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008991
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 /*------------------------------------------------------------------------
8993 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 ------------------------------------------------------------------------*/
8996 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8997 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8999 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9000 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009001
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 }
9006
9007
9008 wpalMutexRelease(&pWDICtx->wptMutex);
9009 /*-----------------------------------------------------------------------
9010 Get message buffer
9011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9014 &pSendBuffer, &usDataOffset, &usSendSize))||
9015 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9018 "Unable to get send buffer in set bss key req %x %x %x",
9019 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023 /*-----------------------------------------------------------------------
9024 Copy the STA Key parameters into the HAL message
9025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9028
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9031
9032 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9033
9034 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9035
9036 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9037
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9039 keyIndex++)
9040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9043 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9044 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9045 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9046 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9047 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9054 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 WDI_MAX_KEY_LENGTH);
9057 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009058
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 wpalMemoryCopy( pSendBuffer+usDataOffset,
9060 &halSetStaKeyReqMsg.setStaKeyParams,
9061 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009062
9063 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009065
9066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9070 wdiSetSTAKeyRspCb, pEventData->pUserData,
9071 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009072
9073}/*WDI_ProcessSetSTABcastKeyReq*/
9074
9075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009078
9079 @param pWDICtx: pointer to the WLAN DAL context
9080 pEventData: pointer to the event information structure
9081
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 @see
9083 @return Result of the function call
9084*/
9085WDI_Status
9086WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009087(
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 WDI_ControlBlockType* pWDICtx,
9089 WDI_EventInfoType* pEventData
9090)
9091{
9092 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9093 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9094 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 wpt_uint16 usDataOffset = 0;
9097 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 wpt_macAddr macBSSID;
9100 wpt_uint8 ucCurrentBSSSesIdx;
9101 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9103
9104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 -------------------------------------------------------------------------*/
9107 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9108 ( NULL == pEventData->pCBfnc ))
9109 {
9110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 }
9115
9116 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9117 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9118 /*-------------------------------------------------------------------------
9119 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 -------------------------------------------------------------------------*/
9122 wpalMutexAcquire(&pWDICtx->wptMutex);
9123
9124 /*------------------------------------------------------------------------
9125 Find the BSS for which the request is made and identify WDI session
9126 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9128 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 &macBSSID))
9130 {
9131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9132 "This station does not exist in the WDI Station Table %d");
9133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
9136
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9138 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9141 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9142 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009143
9144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009147
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 /*------------------------------------------------------------------------
9149 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 ------------------------------------------------------------------------*/
9152 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9153 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9155 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9156 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 }
9162
9163
9164
9165 wpalMutexRelease(&pWDICtx->wptMutex);
9166 /*-----------------------------------------------------------------------
9167 Get message buffer
9168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9171 &pSendBuffer, &usDataOffset, &usSendSize))||
9172 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9173 {
9174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9175 "Unable to get send buffer in set bss key req %x %x %x",
9176 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 }
9180
9181 /*-----------------------------------------------------------------------
9182 Copy the Key parameters into the HAL message
9183 -----------------------------------------------------------------------*/
9184
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9187
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9190
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9193
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9196
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 wpalMemoryCopy( pSendBuffer+usDataOffset,
9198 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9199 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009200
9201 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009203
9204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009210
9211}/*WDI_ProcessRemoveSTABcastKeyReq*/
9212
9213/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009215==========================================================================*/
9216/**
9217 @brief Process Add TSpec Request function (called when Main FSM
9218 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009219
9220 @param pWDICtx: pointer to the WLAN DAL context
9221 pEventData: pointer to the event information structure
9222
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 @see
9224 @return Result of the function call
9225*/
9226WDI_Status
9227WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009228(
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 WDI_ControlBlockType* pWDICtx,
9230 WDI_EventInfoType* pEventData
9231)
9232{
9233 WDI_AddTSReqParamsType* pwdiAddTSParams;
9234 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 wpt_uint16 usDataOffset = 0;
9239 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 wpt_macAddr macBSSID;
9242 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009243
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9245
9246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 -------------------------------------------------------------------------*/
9249 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9250 ( NULL == pEventData->pCBfnc ))
9251 {
9252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 }
9257
9258 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9259 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9260 /*-------------------------------------------------------------------------
9261 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 -------------------------------------------------------------------------*/
9264 wpalMutexAcquire(&pWDICtx->wptMutex);
9265
9266 /*------------------------------------------------------------------------
9267 Find the BSS for which the request is made and identify WDI session
9268 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9270 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 &macBSSID))
9272 {
9273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9274 "This station does not exist in the WDI Station Table %d");
9275 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 }
9278
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9280 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9283 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9284 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009285
9286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009289
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 /*------------------------------------------------------------------------
9291 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 ------------------------------------------------------------------------*/
9294 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9295 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9297 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9298 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009299
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 }
9304
9305 wpalMutexRelease(&pWDICtx->wptMutex);
9306 /*-----------------------------------------------------------------------
9307 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9311 sizeof(halAddTsParams),
9312 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 &usSendSize))||
9314 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9315 {
9316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9317 "Unable to get send buffer in set bss key req %x %x %x",
9318 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
9322
9323 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9324 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9325
9326 //TSPEC IE
9327 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9328 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9359
9360 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9375
9376 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9381
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 wpalMemoryCopy( pSendBuffer+usDataOffset,
9383 &halAddTsParams,
9384 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
9386 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009388
9389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009395}/*WDI_ProcessAddTSpecReq*/
9396
9397
9398/**
9399 @brief Process Del TSpec Request function (called when Main FSM
9400 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009401
9402 @param pWDICtx: pointer to the WLAN DAL context
9403 pEventData: pointer to the event information structure
9404
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 @see
9406 @return Result of the function call
9407*/
9408WDI_Status
9409WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009410(
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 WDI_ControlBlockType* pWDICtx,
9412 WDI_EventInfoType* pEventData
9413)
9414{
9415 WDI_DelTSReqParamsType* pwdiDelTSParams;
9416 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 wpt_uint16 usDataOffset = 0;
9421 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9424
9425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 -------------------------------------------------------------------------*/
9428 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9429 ( NULL == pEventData->pCBfnc ))
9430 {
9431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 }
9436
9437 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9438 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9439
9440 /*-------------------------------------------------------------------------
9441 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 -------------------------------------------------------------------------*/
9444 wpalMutexAcquire(&pWDICtx->wptMutex);
9445
9446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9450 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9451 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009452
Jeff Johnsone7245742012-09-05 17:12:55 -07009453 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9456 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9457 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9458
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 }
9462
9463 /*------------------------------------------------------------------------
9464 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 ------------------------------------------------------------------------*/
9467 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9470 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9471 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
9477
9478
9479 wpalMutexRelease(&pWDICtx->wptMutex);
9480 /*-----------------------------------------------------------------------
9481 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9486 &pSendBuffer, &usDataOffset, &usSendSize))||
9487 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9488 {
9489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9490 "Unable to get send buffer in set bss key req %x %x %x",
9491 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 }
9495
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 wpalMemoryCopy( pSendBuffer+usDataOffset,
9497 &pwdiDelTSParams->wdiDelTSInfo,
9498 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009499
9500 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009502
9503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9507 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009508}/*WDI_ProcessDelTSpecReq*/
9509
9510/**
9511 @brief Process Update EDCA Params Request function (called when
9512 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009513
9514 @param pWDICtx: pointer to the WLAN DAL context
9515 pEventData: pointer to the event information structure
9516
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 @see
9518 @return Result of the function call
9519*/
9520WDI_Status
9521WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009522(
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 WDI_ControlBlockType* pWDICtx,
9524 WDI_EventInfoType* pEventData
9525)
9526{
9527 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9528 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 wpt_uint16 usDataOffset = 0;
9533 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9536
9537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 -------------------------------------------------------------------------*/
9540 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9541 ( NULL == pEventData->pCBfnc ))
9542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 }
9548
9549 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9550 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9551 /*-------------------------------------------------------------------------
9552 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 -------------------------------------------------------------------------*/
9555 wpalMutexAcquire(&pWDICtx->wptMutex);
9556
9557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9561 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9562 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009563
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 {
9566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9568 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009569
9570 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 }
9573
9574 /*------------------------------------------------------------------------
9575 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 ------------------------------------------------------------------------*/
9578 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9579 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9581 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9582 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009583
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 }
9588
9589
9590 wpalMutexRelease(&pWDICtx->wptMutex);
9591 /*-----------------------------------------------------------------------
9592 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9597 &pSendBuffer, &usDataOffset, &usSendSize))||
9598 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9599 {
9600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9601 "Unable to get send buffer in set bss key req %x %x %x",
9602 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 }
9606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 wpalMemoryCopy( pSendBuffer+usDataOffset,
9608 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9609 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009610
9611 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009613
9614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9618 wdiUpdateEDCARspCb, pEventData->pUserData,
9619 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009620}/*WDI_ProcessUpdateEDCAParamsReq*/
9621
9622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009625
9626 @param pWDICtx: pointer to the WLAN DAL context
9627 pEventData: pointer to the event information structure
9628
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 @see
9630 @return Result of the function call
9631*/
9632WDI_Status
9633WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009634(
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_ControlBlockType* pWDICtx,
9636 WDI_EventInfoType* pEventData
9637)
9638{
9639 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9640 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 wpt_uint16 usDataOffset = 0;
9645 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 wpt_macAddr macBSSID;
9648
9649 tAddBASessionReqMsg halAddBASessionReq;
9650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9651
9652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 -------------------------------------------------------------------------*/
9655 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9656 ( NULL == pEventData->pCBfnc ))
9657 {
9658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 }
9663
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9668 /*-------------------------------------------------------------------------
9669 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 -------------------------------------------------------------------------*/
9672 wpalMutexAcquire(&pWDICtx->wptMutex);
9673
9674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9678 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 &macBSSID))
9680 {
9681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9682 "This station does not exist in the WDI Station Table %d");
9683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 }
9686
9687
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9693 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9694 __func__, MAC_ADDR_ARRAY(macBSSID));
9695
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 }
9699
9700 /*------------------------------------------------------------------------
9701 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 ------------------------------------------------------------------------*/
9704 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9705 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9707 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9708 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009709
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 }
9714
9715
9716 wpalMutexRelease(&pWDICtx->wptMutex);
9717 /*-----------------------------------------------------------------------
9718 Get message buffer
9719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9721 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 sizeof(halAddBASessionReq.addBASessionParams),
9723 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9726 {
9727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9728 "Unable to get send buffer in Add BA session req %x %x %x",
9729 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 }
9733
9734 halAddBASessionReq.addBASessionParams.staIdx =
9735 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9736 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9737 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9738 WDI_MAC_ADDR_LEN);
9739 halAddBASessionReq.addBASessionParams.baTID =
9740 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9741 halAddBASessionReq.addBASessionParams.baPolicy =
9742 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9743 halAddBASessionReq.addBASessionParams.baBufferSize =
9744 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9745 halAddBASessionReq.addBASessionParams.baTimeout =
9746 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9747 halAddBASessionReq.addBASessionParams.baSSN =
9748 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9749 halAddBASessionReq.addBASessionParams.baDirection =
9750 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9751
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 wpalMemoryCopy( pSendBuffer+usDataOffset,
9753 &halAddBASessionReq.addBASessionParams,
9754 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009755
9756 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009758
9759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9763 wdiAddBASessionRspCb, pEventData->pUserData,
9764 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009765}/*WDI_ProcessAddBASessionReq*/
9766
9767/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009768 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009770
9771 @param pWDICtx: pointer to the WLAN DAL context
9772 pEventData: pointer to the event information structure
9773
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 @see
9775 @return Result of the function call
9776*/
9777WDI_Status
9778WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009779(
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 WDI_ControlBlockType* pWDICtx,
9781 WDI_EventInfoType* pEventData
9782)
9783{
9784 WDI_DelBAReqParamsType* pwdiDelBAParams;
9785 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 wpt_uint16 usDataOffset = 0;
9790 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 wpt_macAddr macBSSID;
9793 tDelBAParams halDelBAparam;
9794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9795
9796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 -------------------------------------------------------------------------*/
9799 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9800 ( NULL == pEventData->pCBfnc ))
9801 {
9802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9809 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9810 /*-------------------------------------------------------------------------
9811 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -------------------------------------------------------------------------*/
9814 wpalMutexAcquire(&pWDICtx->wptMutex);
9815
9816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9820 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 &macBSSID))
9822 {
9823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9824 "This station does not exist in the WDI Station Table %d");
9825 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 }
9828
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009830
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9834 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9835 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009836
9837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 }
9840
9841 /*------------------------------------------------------------------------
9842 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009843 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009844 ------------------------------------------------------------------------*/
9845 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9846 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9848 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9849 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009850
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 }
9855
9856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 sizeof(halDelBAparam),
9859 &pSendBuffer, &usDataOffset, &usSendSize))||
9860 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9861 {
9862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9863 "Unable to get send buffer for DEL BA req %x %x %x",
9864 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 }
9868
9869 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9870 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9871 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9872
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 wpalMemoryCopy( pSendBuffer+usDataOffset,
9874 &halDelBAparam,
9875 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009876
9877 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879
9880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9884 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009885}/*WDI_ProcessDelBAReq*/
9886
9887#ifdef FEATURE_WLAN_CCX
9888
9889WDI_Status
9890WDI_ProcessTSMStatsReq
9891(
9892 WDI_ControlBlockType* pWDICtx,
9893 WDI_EventInfoType* pEventData
9894)
9895{
9896 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9897 WDI_TsmRspCb wdiTSMRspCb;
9898 wpt_uint8 ucCurrentBSSSesIdx = 0;
9899 WDI_BSSSessionType* pBSSSes = NULL;
9900 wpt_uint8* pSendBuffer = NULL;
9901 wpt_uint16 usDataOffset = 0;
9902 wpt_uint16 usSendSize = 0;
9903 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9904 tTsmStatsParams halTsmStatsReqParams = {0};
9905
9906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9907
9908 /*-------------------------------------------------------------------------
9909 Sanity check
9910 -------------------------------------------------------------------------*/
9911 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9912 ( NULL == pEventData->pCBfnc ))
9913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 WDI_ASSERT(0);
9917 return WDI_STATUS_E_FAILURE;
9918 }
9919
9920 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9921 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9922 /*-------------------------------------------------------------------------
9923 Check to see if we are in the middle of an association, if so queue, if
9924 not it means it is free to process request
9925 -------------------------------------------------------------------------*/
9926 wpalMutexAcquire(&pWDICtx->wptMutex);
9927
9928 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9929 if ( NULL == pBSSSes )
9930 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9932 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9933 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009934
9935 wpalMutexRelease(&pWDICtx->wptMutex);
9936 return WDI_STATUS_E_NOT_ALLOWED;
9937 }
9938
9939 /*------------------------------------------------------------------------
9940 Check if this BSS is being currently processed or queued,
9941 if queued - queue the new request as well
9942 ------------------------------------------------------------------------*/
9943 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9944 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9946 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9947 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009948
9949 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9950 wpalMutexRelease(&pWDICtx->wptMutex);
9951 return wdiStatus;
9952 }
9953
9954 wpalMutexRelease(&pWDICtx->wptMutex);
9955 /*-----------------------------------------------------------------------
9956 Get message buffer
9957 ! TO DO : proper conversion into the HAL Message Request Format
9958 -----------------------------------------------------------------------*/
9959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9960 sizeof(halTsmStatsReqParams),
9961 &pSendBuffer, &usDataOffset, &usSendSize))||
9962 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9963 {
9964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9965 "Unable to get send buffer in set bss key req %x %x %x",
9966 pEventData, pwdiTSMParams, wdiTSMRspCb);
9967 WDI_ASSERT(0);
9968 return WDI_STATUS_E_FAILURE;
9969 }
9970
9971 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9972 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9973 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9974 WDI_MAC_ADDR_LEN);
9975 wpalMemoryCopy( pSendBuffer+usDataOffset,
9976 &halTsmStatsReqParams,
9977 sizeof(halTsmStatsReqParams));
9978
9979 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9980 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9981
9982 /*-------------------------------------------------------------------------
9983 Send TSM Stats Request to HAL
9984 -------------------------------------------------------------------------*/
9985 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9986 wdiTSMRspCb, pEventData->pUserData,
9987 WDI_TSM_STATS_RESP);
9988}/*WDI_ProcessTSMStatsReq*/
9989
9990#endif
9991
9992
9993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009996
9997 @param pWDICtx: pointer to the WLAN DAL context
9998 pEventData: pointer to the event information structure
9999
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 @see
10001 @return Result of the function call
10002*/
10003WDI_Status
10004WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010005(
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 WDI_ControlBlockType* pWDICtx,
10007 WDI_EventInfoType* pEventData
10008)
10009{
10010 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10011 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 wpt_uint16 usDataOffset = 0;
10014 wpt_uint16 usSendSize = 0;
10015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10016
10017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 -------------------------------------------------------------------------*/
10020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10021 ( NULL == pEventData->pCBfnc ))
10022 {
10023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 }
10028
10029 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10030 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10031 /*-----------------------------------------------------------------------
10032 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10037 &pSendBuffer, &usDataOffset, &usSendSize))||
10038 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10039 {
10040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "Unable to get send buffer in set bss key req %x %x %x",
10042 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 }
10046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 wpalMemoryCopy( pSendBuffer+usDataOffset,
10048 &pwdiFlushAcParams->wdiFlushAcInfo,
10049 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010050
10051 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010053
10054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10058 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010059}/*WDI_ProcessFlushAcReq*/
10060
10061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010064
10065 @param pWDICtx: pointer to the WLAN DAL context
10066 pEventData: pointer to the event information structure
10067
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 @see
10069 @return Result of the function call
10070*/
10071WDI_Status
10072WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010073(
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 WDI_ControlBlockType* pWDICtx,
10075 WDI_EventInfoType* pEventData
10076)
10077{
10078 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10079 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 wpt_uint16 usDataOffset = 0;
10082 wpt_uint16 usSendSize = 0;
10083
10084 tBtAmpEventMsg haltBtAmpEventMsg;
10085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10086
10087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 -------------------------------------------------------------------------*/
10090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10091 ( NULL == pEventData->pCBfnc ))
10092 {
10093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 }
10098
10099 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10100 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10101 /*-----------------------------------------------------------------------
10102 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10107 &pSendBuffer, &usDataOffset, &usSendSize))||
10108 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10109 {
10110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10111 "Unable to get send buffer in BT AMP event req %x %x %x",
10112 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 }
10116
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 wpalMemoryCopy( pSendBuffer+usDataOffset,
10120 &haltBtAmpEventMsg.btAmpEventParams,
10121 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010122
10123 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010125
10126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10130 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010131}/*WDI_ProcessBtAmpEventReq*/
10132
10133/**
10134 @brief Process Add STA self Request function (called when Main FSM
10135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010136
10137 @param pWDICtx: pointer to the WLAN DAL context
10138 pEventData: pointer to the event information structure
10139
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 @see
10141 @return Result of the function call
10142*/
10143WDI_Status
10144WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010145(
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 WDI_ControlBlockType* pWDICtx,
10147 WDI_EventInfoType* pEventData
10148)
10149{
10150 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10151 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 wpt_uint16 usDataOffset = 0;
10154 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10157
10158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 -------------------------------------------------------------------------*/
10161 if (( NULL == pEventData ) ||
10162 ( NULL == pEventData->pEventData) ||
10163 ( NULL == pEventData->pCBfnc))
10164 {
10165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 }
10170
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10175 /*-----------------------------------------------------------------------
10176 Get message buffer
10177 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10179 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 sizeof(tAddStaSelfParams),
10181 &pSendBuffer, &usDataOffset, &usSendSize))||
10182 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10183 {
10184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10185 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10186 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 }
10190
10191 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10194
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10197
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10199 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
10201 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203
10204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10208 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10209 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010210}/*WDI_ProcessAddSTASelfReq*/
10211
10212
10213
10214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010217
10218 @param pWDICtx: pointer to the WLAN DAL context
10219 pEventData: pointer to the event information structure
10220
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 @see
10222 @return Result of the function call
10223*/
10224WDI_Status
10225WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010226(
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 WDI_ControlBlockType* pWDICtx,
10228 WDI_EventInfoType* pEventData
10229)
10230{
10231 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10232 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 wpt_uint16 usDataOffset = 0;
10235 wpt_uint16 usSendSize = 0;
10236 tDelStaSelfParams halSetDelSelfSTAParams;
10237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10238
10239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 -------------------------------------------------------------------------*/
10242 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10243 ( NULL == pEventData->pCBfnc ))
10244 {
10245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 }
10250
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10253 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10254
10255 /*-----------------------------------------------------------------------
10256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10261 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10264 {
10265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10266 "Unable to get send buffer in Del Sta Self req %x %x %x",
10267 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 }
10271
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10274
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10276 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010277
10278 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
10281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10285 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 WDI_DEL_STA_SELF_RESP);
10287
10288}
10289
Jeff Johnsone7245742012-09-05 17:12:55 -070010290#ifdef FEATURE_OEM_DATA_SUPPORT
10291/**
10292 @brief Process Start Oem Data Request function (called when Main
10293 FSM allows it)
10294
10295 @param pWDICtx: pointer to the WLAN DAL context
10296 pEventData: pointer to the event information structure
10297
10298 @see
10299 @return Result of the function call
10300*/
10301WDI_Status
10302WDI_ProcessStartOemDataReq
10303(
10304 WDI_ControlBlockType* pWDICtx,
10305 WDI_EventInfoType* pEventData
10306)
10307{
10308 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10309 WDI_oemDataRspCb wdiOemDataRspCb;
10310 wpt_uint8* pSendBuffer = NULL;
10311 wpt_uint16 usDataOffset = 0;
10312 wpt_uint16 usSendSize = 0;
10313 wpt_uint16 reqLen;
10314 tStartOemDataReqParams* halStartOemDataReqParams;
10315
10316 /*-------------------------------------------------------------------------
10317 Sanity check
10318 -------------------------------------------------------------------------*/
10319 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10320 ( NULL == pEventData->pCBfnc ))
10321 {
10322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010323 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 WDI_ASSERT(0);
10325 return WDI_STATUS_E_FAILURE;
10326 }
10327
10328 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10329 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10330
10331 /*-----------------------------------------------------------------------
10332 Get message buffer
10333 -----------------------------------------------------------------------*/
10334
10335 reqLen = sizeof(tStartOemDataReqParams);
10336
10337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10338 WDI_START_OEM_DATA_REQ, reqLen,
10339 &pSendBuffer, &usDataOffset, &usSendSize))||
10340 (usSendSize < (usDataOffset + reqLen)))
10341 {
10342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10343 "Unable to get send buffer in Start Oem Data req %x %x %x",
10344 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10345 WDI_ASSERT(0);
10346 return WDI_STATUS_E_FAILURE;
10347 }
10348
10349 //copying WDI OEM DATA REQ PARAMS to shared memory
10350 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10351
10352 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10353 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10354
10355 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10356 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10357
10358 /*-------------------------------------------------------------------------
10359 Send Start Request to HAL
10360 -------------------------------------------------------------------------*/
10361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10362 wdiOemDataRspCb, pEventData->pUserData,
10363 WDI_START_OEM_DATA_RESP);
10364}/*WDI_ProcessStartOemDataReq*/
10365#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010366
10367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010370
10371 @param pWDICtx: pointer to the WLAN DAL context
10372 pEventData: pointer to the event information structure
10373
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 @see
10375 @return Result of the function call
10376*/
10377WDI_Status
10378WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010379(
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 WDI_ControlBlockType* pWDICtx,
10381 WDI_EventInfoType* pEventData
10382)
10383{
10384 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10385 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 wpt_uint16 usDataOffset = 0;
10388 wpt_uint16 usSendSize = 0;
10389 tHalWlanHostResumeReqParam halResumeReqParams;
10390
10391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10392
10393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 -------------------------------------------------------------------------*/
10396 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10397 ( NULL == pEventData->pCBfnc ))
10398 {
10399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010400 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 }
10404
10405 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10406 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10407
10408 /*-----------------------------------------------------------------------
10409 Get message buffer
10410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10413 &pSendBuffer, &usDataOffset, &usSendSize))||
10414 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10415 {
10416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 }
10422
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010425
10426 wpalMemoryCopy( pSendBuffer+usDataOffset,
10427 &halResumeReqParams,
10428 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010429
10430 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010432
10433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10437 wdiHostResumeRspCb, pEventData->pUserData,
10438 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010439}/*WDI_ProcessHostResumeReq*/
10440
10441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010444
10445 @param pWDICtx: pointer to the WLAN DAL context
10446 pEventData: pointer to the event information structure
10447
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 @see
10449 @return Result of the function call
10450*/
10451WDI_Status
10452WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010453(
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 WDI_ControlBlockType* pWDICtx,
10455 WDI_EventInfoType* pEventData
10456)
10457{
10458 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10459 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 wpt_uint16 usDataOffset = 0;
10462 wpt_uint16 usSendSize = 0;
10463 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10465
10466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 -------------------------------------------------------------------------*/
10469 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10470 ( NULL == pEventData->pCBfnc ))
10471 {
10472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010473 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 }
10477
10478 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10479 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010480
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 /*-----------------------------------------------------------------------
10482 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 sizeof(halTxPerTrackingReqParam),
10487 &pSendBuffer, &usDataOffset, &usSendSize))||
10488 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10489 {
10490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10491 "Unable to get send buffer in set tx per tracking req %x %x %x",
10492 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010496
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10498 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10499 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10500 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010501
10502 wpalMemoryCopy( pSendBuffer+usDataOffset,
10503 &halTxPerTrackingReqParam,
10504 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010505
10506 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010508
10509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10513 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010514}/*WDI_ProcessSetTxPerTrackingReq*/
10515
10516/*=========================================================================
10517 Indications
10518=========================================================================*/
10519
10520/**
10521 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010522
10523 @param pWDICtx: pointer to the WLAN DAL context
10524 pEventData: pointer to the event information structure
10525
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 @see
10527 @return Result of the function call
10528*/
10529WDI_Status
10530WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010531(
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 WDI_ControlBlockType* pWDICtx,
10533 WDI_EventInfoType* pEventData
10534)
10535{
10536 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 wpt_uint16 usDataOffset = 0;
10539 wpt_uint16 usSendSize = 0;
10540 WDI_Status wdiStatus;
10541 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10543
10544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 -------------------------------------------------------------------------*/
10547 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010550 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010553 }
10554
10555 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10556
10557 /*-----------------------------------------------------------------------
10558 Get message buffer
10559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10561 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 sizeof(halWlanSuspendIndparams),
10563 &pSendBuffer, &usDataOffset, &usSendSize))||
10564 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10565 {
10566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10567 "Unable to get send buffer in Suspend Ind ");
10568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 }
10571
10572 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10573 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10574
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010576 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010577
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10579 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010580
10581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 -------------------------------------------------------------------------*/
10584 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010586
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010588 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10589}/*WDI_ProcessHostSuspendInd*/
10590
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010591
10592
10593/**
10594 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10595
10596 @param pWDICtx: pointer to the WLAN DAL context
10597 pEventData: pointer to the event information structure
10598
10599 @see
10600 @return Result of the function call
10601*/
10602WDI_Status
10603WDI_ProcessTrafficStatsInd
10604(
10605 WDI_ControlBlockType* pWDICtx,
10606 WDI_EventInfoType* pEventData
10607)
10608{
10609 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10610 wpt_uint8* pSendBuffer = NULL;
10611 wpt_uint16 usDataOffset = 0;
10612 wpt_uint16 usSendSize = 0;
10613 WDI_Status wdiStatus;
10614 tStatsClassBIndParams* pStatsClassBIndParams;
10615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10616
10617 /*-------------------------------------------------------------------------
10618 Sanity check
10619 -------------------------------------------------------------------------*/
10620 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10621 {
10622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10623 "%s: Invalid parameters in Traffic Stats ind",__func__);
10624 WDI_ASSERT(0);
10625 return WDI_STATUS_E_FAILURE;
10626 }
10627
10628 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10629
10630 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10631 {
10632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10633 "%s: Invalid parameters in Traffic Stats ind",__func__);
10634 WDI_ASSERT(0);
10635 return WDI_STATUS_E_FAILURE;
10636 }
10637
10638 /*-----------------------------------------------------------------------
10639 Get message buffer
10640 -----------------------------------------------------------------------*/
10641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10642 WDI_TRAFFIC_STATS_IND,
10643 sizeof(tStatsClassBIndParams),
10644 &pSendBuffer, &usDataOffset, &usSendSize))||
10645 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10646 {
10647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10648 "Unable to get send buffer in Traffic Stats Ind ");
10649 WDI_ASSERT(0);
10650 return WDI_STATUS_E_FAILURE;
10651 }
10652
10653 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10654
10655 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10656
10657 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10658 pTrafficStatsIndParams->pTrafficStats,
10659 pTrafficStatsIndParams->length);
10660
10661 /*-------------------------------------------------------------------------
10662 Send Suspend Request to HAL
10663 -------------------------------------------------------------------------*/
10664 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10665 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10666
10667 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10668 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10669}/*WDI_ProcessTrafficStatsInd*/
10670
Chet Lanctota96bb432013-03-18 10:26:30 -070010671#ifdef WLAN_FEATURE_11W
10672/**
10673 @brief Process Exclude Unencrypted Indications function (called
10674 when Main FSM allows it)
10675
10676 @param pWDICtx: pointer to the WLAN DAL context
10677 pEventData: pointer to the event information structure
10678
10679 @see
10680 @return Result of the function call
10681*/
10682WDI_Status
10683WDI_ProcessExcludeUnencryptInd
10684(
10685 WDI_ControlBlockType* pWDICtx,
10686 WDI_EventInfoType* pEventData
10687)
10688{
10689 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10690 wpt_uint8* pSendBuffer = NULL;
10691 wpt_uint16 usDataOffset = 0;
10692 wpt_uint16 usSendSize = 0;
10693 WDI_Status wdiStatus;
10694 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10696
10697 /*-------------------------------------------------------------------------
10698 Sanity check
10699 -------------------------------------------------------------------------*/
10700 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10701 {
10702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10703 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10704 WDI_ASSERT(0);
10705 return WDI_STATUS_E_FAILURE;
10706 }
10707
10708 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10709
10710 /*-----------------------------------------------------------------------
10711 Get message buffer
10712 -----------------------------------------------------------------------*/
10713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10714 WDI_EXCLUDE_UNENCRYPTED_IND,
10715 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10716 &pSendBuffer, &usDataOffset, &usSendSize))||
10717 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10718 {
10719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10720 "Unable to get send buffer in Exclude Unencrypted Ind ");
10721 WDI_ASSERT(0);
10722 return WDI_STATUS_E_FAILURE;
10723 }
10724
10725 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10726
10727 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10728
10729 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10730 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10731
10732 /*-------------------------------------------------------------------------
10733 Send Suspend Request to HAL
10734 -------------------------------------------------------------------------*/
10735 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10736 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10737
10738 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10739 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10740}/*WDI_ProcessExcludeUnencryptInd*/
10741#endif
10742
Jeff Johnson295189b2012-06-20 16:38:30 -070010743/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010745==========================================================================*/
10746/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010749
10750 @param pWDICtx: pointer to the WLAN DAL context
10751 pEventData: pointer to the event information structure
10752
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 @see
10754 @return Result of the function call
10755*/
10756WDI_Status
10757WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010758(
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 WDI_ControlBlockType* pWDICtx,
10760 WDI_EventInfoType* pEventData
10761)
10762{
10763 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10764 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 wpt_uint16 usDataOffset = 0;
10767 wpt_uint16 usSendSize = 0;
10768 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10770
10771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 -------------------------------------------------------------------------*/
10774 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10775 ( NULL == pEventData->pCBfnc ))
10776 {
10777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 }
10782
10783 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10784 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10785 /*-----------------------------------------------------------------------
10786 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 sizeof(halSwitchChannelReq.switchChannelParams),
10791 &pSendBuffer, &usDataOffset, &usSendSize))||
10792 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10795 "Unable to get send buffer in channel switch req %x %x %x",
10796 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 }
10800
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010803#ifndef WLAN_FEATURE_VOWIFI
10804 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10806#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10809
10810#ifdef WLAN_FEATURE_VOWIFI
10811 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10814 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10815 WDI_MAC_ADDR_LEN);
10816 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10817 pwdiSwitchChParams->wdiChInfo.macBSSId,
10818 WDI_MAC_ADDR_LEN);
10819#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 wpalMemoryCopy( pSendBuffer+usDataOffset,
10821 &halSwitchChannelReq.switchChannelParams,
10822 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010823
10824 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010826
10827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10831 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010832}/*WDI_ProcessChannelSwitchReq*/
10833
10834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010837
10838 @param pWDICtx: pointer to the WLAN DAL context
10839 pEventData: pointer to the event information structure
10840
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 @see
10842 @return Result of the function call
10843*/
10844WDI_Status
10845WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010846(
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 WDI_ControlBlockType* pWDICtx,
10848 WDI_EventInfoType* pEventData
10849)
10850{
10851 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10852 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 wpt_uint16 usDataOffset = 0;
10857 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010859
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 tConfigStaReqMsg halConfigStaReqMsg;
10861 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10863
10864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 -------------------------------------------------------------------------*/
10867 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10868 ( NULL == pEventData->pCBfnc ))
10869 {
10870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 }
10875
10876 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10877 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10878 /*-------------------------------------------------------------------------
10879 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 -------------------------------------------------------------------------*/
10882 wpalMutexAcquire(&pWDICtx->wptMutex);
10883
10884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10888 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10889 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10894 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10895 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010896
10897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 }
10900
10901 /*------------------------------------------------------------------------
10902 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 ------------------------------------------------------------------------*/
10905 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10908 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10909 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010910
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
10916 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010917
10918 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10919#ifdef WLAN_FEATURE_11AC
10920 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010921 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 else
10923#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010924 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010925
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 /*-----------------------------------------------------------------------
10927 Get message buffer
10928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10930 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 {
10934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10935 "Unable to get send buffer in config sta req %x %x %x",
10936 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 }
10940
10941 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 &pwdiConfigSTAParams->wdiReqInfo);
10944
10945 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10946 {
10947 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 WDI_STATableFindStaidByAddr(pWDICtx,
10950 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 {
10953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10954 "This station does not exist in the WDI Station Table %d");
10955 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010956 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 }
10959 }
10960 else
10961 {
10962 /* Need to fill in the STA Index to invalid, since at this point we have not
10963 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070010964 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 }
10966
10967 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010969
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 wpalMemoryCopy( pSendBuffer+usDataOffset,
10971 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010972 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010973
10974 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010976
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10978 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 sizeof(pWDICtx->wdiCachedConfigStaReq));
10980
10981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10985 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010986}/*WDI_ProcessConfigStaReq*/
10987
10988
10989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010992
10993 @param pWDICtx: pointer to the WLAN DAL context
10994 pEventData: pointer to the event information structure
10995
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 @see
10997 @return Result of the function call
10998*/
10999WDI_Status
11000WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011001(
Jeff Johnson295189b2012-06-20 16:38:30 -070011002 WDI_ControlBlockType* pWDICtx,
11003 WDI_EventInfoType* pEventData
11004)
11005{
11006 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11007 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 wpt_uint16 usDataOffset = 0;
11012 wpt_uint16 usSendSize = 0;
11013 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11016
11017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 -------------------------------------------------------------------------*/
11020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11021 ( NULL == pEventData->pCBfnc ))
11022 {
11023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 }
11028
11029 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11030 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11031 /*-------------------------------------------------------------------------
11032 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 -------------------------------------------------------------------------*/
11035 wpalMutexAcquire(&pWDICtx->wptMutex);
11036
11037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11041 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11042 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011043
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011047 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11048 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 }
11050 else
11051 {
11052 /*------------------------------------------------------------------------
11053 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 ------------------------------------------------------------------------*/
11056 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11057 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11059 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11060 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11061
11062 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 }
11066 }
11067 /* If the link is set to enter IDLE - the Session allocated for this BSS
11068 will be deleted on the Set Link State response coming from HAL
11069 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11072
11073 wpalMutexRelease(&pWDICtx->wptMutex);
11074 /*-----------------------------------------------------------------------
11075 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011078
11079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 sizeof(halLinkStateReqMsg),
11081 &pSendBuffer, &usDataOffset, &usSendSize))||
11082 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11083 {
11084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11085 "Unable to get send buffer in set bss key req %x %x %x",
11086 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 }
11090
11091 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11092 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11093
11094 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11095 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11096
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011098 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11099
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 wpalMemoryCopy( pSendBuffer+usDataOffset,
11101 &halLinkStateReqMsg,
11102 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011103
11104 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011106
11107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011108 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11111 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011112}/*WDI_ProcessSetLinkStateReq*/
11113
11114
11115/**
11116 @brief Process Get Stats Request function (called when Main FSM
11117 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011118
11119 @param pWDICtx: pointer to the WLAN DAL context
11120 pEventData: pointer to the event information structure
11121
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 @see
11123 @return Result of the function call
11124*/
11125WDI_Status
11126WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011127(
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 WDI_ControlBlockType* pWDICtx,
11129 WDI_EventInfoType* pEventData
11130)
11131{
11132 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11133 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 wpt_uint16 usDataOffset = 0;
11136 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 WDI_BSSSessionType* pBSSSes = NULL;
11139 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 tHalStatsReqMsg halStatsReqMsg;
11142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11143
11144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 -------------------------------------------------------------------------*/
11147 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11148 ( NULL == pEventData->pCBfnc ) )
11149 {
11150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 }
11155
11156 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11157 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11158
11159 /*-------------------------------------------------------------------------
11160 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 -------------------------------------------------------------------------*/
11163 wpalMutexAcquire(&pWDICtx->wptMutex);
11164
11165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11169 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 &macBSSID))
11171 {
11172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11173 "This station does not exist in the WDI Station Table %d");
11174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 }
11177
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11179 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11182 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11183 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011184
11185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 }
11188
11189 /*------------------------------------------------------------------------
11190 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 ------------------------------------------------------------------------*/
11193 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11194 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11196 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11197 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011198
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 }
11203
11204
11205 wpalMutexRelease(&pWDICtx->wptMutex);
11206
11207 /*-----------------------------------------------------------------------
11208 Get message buffer
11209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 sizeof(halStatsReqMsg.statsReqParams),
11212 &pSendBuffer, &usDataOffset, &usSendSize))||
11213 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11214 {
11215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11216 "Unable to get send buffer in set bss key req %x %x %x",
11217 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 }
11221
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 wpalMemoryCopy( pSendBuffer+usDataOffset,
11227 &halStatsReqMsg.statsReqParams,
11228 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011229
11230 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232
11233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11237 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011238}/*WDI_ProcessGetStatsReq*/
11239
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011240#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11241/**
11242 @brief Process Get Roam Rssi Request function (called when Main FSM
11243 allows it)
11244
11245 @param pWDICtx: pointer to the WLAN DAL context
11246 pEventData: pointer to the event information structure
11247
11248 @see
11249 @return Result of the function call
11250*/
11251WDI_Status
11252WDI_ProcessGetRoamRssiReq
11253(
11254 WDI_ControlBlockType* pWDICtx,
11255 WDI_EventInfoType* pEventData
11256)
11257{
11258 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11259 WDI_GetStatsRspCb wdiGetStatsRspCb;
11260 wpt_uint8* pSendBuffer = NULL;
11261 wpt_uint16 usDataOffset = 0;
11262 wpt_uint16 usSendSize = 0;
11263 wpt_uint8 ucCurrentBSSSesIdx = 0;
11264 WDI_BSSSessionType* pBSSSes = NULL;
11265 wpt_macAddr macBSSID;
11266 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11267 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11269 /*-------------------------------------------------------------------------
11270 Sanity check
11271 -------------------------------------------------------------------------*/
11272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11273 ( NULL == pEventData->pCBfnc ) )
11274 {
11275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11276 "%s: Invalid parameters", __func__);
11277 WDI_ASSERT(0);
11278 return WDI_STATUS_E_FAILURE;
11279 }
11280
11281 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11282 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11283
11284 /*-------------------------------------------------------------------------
11285 Check to see if we are in the middle of an association, if so queue, if
11286 not it means it is free to process request
11287 -------------------------------------------------------------------------*/
11288 wpalMutexAcquire(&pWDICtx->wptMutex);
11289
11290 /*------------------------------------------------------------------------
11291 Find the BSS for which the request is made
11292 ------------------------------------------------------------------------*/
11293 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11294 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11295 &macBSSID))
11296 {
11297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11298 "This station does not exist in the WDI Station Table %d");
11299 wpalMutexRelease(&pWDICtx->wptMutex);
11300 return WDI_STATUS_E_FAILURE;
11301 }
11302
11303 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11304 if ( NULL == pBSSSes )
11305 {
11306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11307 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11308 __func__, MAC_ADDR_ARRAY(macBSSID));
11309
11310 wpalMutexRelease(&pWDICtx->wptMutex);
11311 return WDI_STATUS_E_NOT_ALLOWED;
11312 }
11313
11314 /*------------------------------------------------------------------------
11315 Check if this BSS is being currently processed or queued,
11316 if queued - queue the new request as well
11317 ------------------------------------------------------------------------*/
11318 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11321 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11322 __func__, MAC_ADDR_ARRAY(macBSSID));
11323
11324 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11325 wpalMutexRelease(&pWDICtx->wptMutex);
11326 return wdiStatus;
11327 }
11328
11329 wpalMutexRelease(&pWDICtx->wptMutex);
11330
11331 /*-----------------------------------------------------------------------
11332 Get message buffer
11333 -----------------------------------------------------------------------*/
11334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11335 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11336 &pSendBuffer, &usDataOffset, &usSendSize))||
11337 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11338 {
11339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11340 "Unable to get send buffer in set bss key req %x %x %x",
11341 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11342 WDI_ASSERT(0);
11343 return WDI_STATUS_E_FAILURE;
11344 }
11345
11346 halRssiRoamReqMsg.roamRssiReqParams.staId =
11347 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11348 wpalMemoryCopy( pSendBuffer+usDataOffset,
11349 &halRssiRoamReqMsg.roamRssiReqParams,
11350 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11351
11352 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11353 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11354
11355 /*-------------------------------------------------------------------------
11356 Send Get STA Request to HAL
11357 -------------------------------------------------------------------------*/
11358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11359 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11360}/*WDI_ProcessGetRoamRssiReq*/
11361#endif
11362
Jeff Johnson295189b2012-06-20 16:38:30 -070011363/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011364 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011366
11367 @param pWDICtx: pointer to the WLAN DAL context
11368 pEventData: pointer to the event information structure
11369
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 @see
11371 @return Result of the function call
11372*/
11373WDI_Status
11374WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011375(
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 WDI_ControlBlockType* pWDICtx,
11377 WDI_EventInfoType* pEventData
11378)
11379{
11380 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11381 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11382
Jeff Johnsone7245742012-09-05 17:12:55 -070011383 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 wpt_uint16 usDataOffset = 0;
11385 wpt_uint16 usSendSize = 0;
11386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11387
11388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 -------------------------------------------------------------------------*/
11391 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11392 ( NULL == pEventData->pCBfnc))
11393 {
11394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 }
11399
11400 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11401 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11402
11403 /*-----------------------------------------------------------------------
11404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 -----------------------------------------------------------------------*/
11407
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011409 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11410 &pSendBuffer, &usDataOffset, &usSendSize))||
11411 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11412 {
11413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11414 "Unable to get send buffer in set bss key req %x %x %x",
11415 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011418 }
11419
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 wpalMemoryCopy( pSendBuffer+usDataOffset,
11421 &pwdiUpdateCfgParams->uConfigBufferLen,
11422 sizeof(wpt_uint32));
11423 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11424 pwdiUpdateCfgParams->pConfigBuffer,
11425 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011426
11427 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011429
11430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011432 -------------------------------------------------------------------------*/
11433
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11435 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011436
11437}/*WDI_ProcessUpdateCfgReq*/
11438
11439
11440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011443
11444 @param pWDICtx: pointer to the WLAN DAL context
11445 pEventData: pointer to the event information structure
11446
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 @see
11448 @return Result of the function call
11449*/
11450WDI_Status
11451WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011452(
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 WDI_ControlBlockType* pWDICtx,
11454 WDI_EventInfoType* pEventData
11455)
11456{
11457 WDI_AddBAReqParamsType* pwdiAddBAParams;
11458 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 wpt_uint16 usDataOffset = 0;
11463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 wpt_macAddr macBSSID;
11466
11467 tAddBAReqMsg halAddBAReq;
11468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11469
11470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 -------------------------------------------------------------------------*/
11473 if (( NULL == pEventData ) ||
11474 ( NULL == pEventData->pEventData) ||
11475 ( NULL == pEventData->pCBfnc ))
11476 {
11477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 }
11482
11483 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11484 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11485
11486 /*-------------------------------------------------------------------------
11487 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 -------------------------------------------------------------------------*/
11490 wpalMutexAcquire(&pWDICtx->wptMutex);
11491
11492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11496 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 &macBSSID))
11498 {
11499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11500 "This station does not exist in the WDI Station Table %d");
11501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 }
11504
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11506 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11509 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11510 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011511
11512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 }
11515
11516 /*------------------------------------------------------------------------
11517 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 ------------------------------------------------------------------------*/
11520 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11521 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11523 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11524 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011525
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 }
11530
11531
11532 wpalMutexRelease(&pWDICtx->wptMutex);
11533 /*-----------------------------------------------------------------------
11534 Get message buffer
11535 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011536 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 sizeof(halAddBAReq.addBAParams),
11538 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11541 {
11542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11543 "Unable to get send buffer in Add BA req %x %x %x",
11544 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 }
11548
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11551 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11552#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11555#endif
11556
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 wpalMemoryCopy( pSendBuffer+usDataOffset,
11558 &halAddBAReq.addBAParams,
11559 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011560
11561 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011563
11564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11568 wdiAddBARspCb, pEventData->pUserData,
11569 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011570}/*WDI_ProcessAddBAReq*/
11571
11572
11573
11574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011577
11578 @param pWDICtx: pointer to the WLAN DAL context
11579 pEventData: pointer to the event information structure
11580
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 @see
11582 @return Result of the function call
11583*/
11584WDI_Status
11585WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011586(
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 WDI_ControlBlockType* pWDICtx,
11588 WDI_EventInfoType* pEventData
11589)
11590{
11591 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11592 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 wpt_uint16 usDataOffset = 0;
11597 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 wpt_uint16 index;
11600 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011601
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 tTriggerBAReqMsg halTriggerBAReq;
11603 tTriggerBaReqCandidate* halTriggerBACandidate;
11604 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11606
11607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 -------------------------------------------------------------------------*/
11610 if (( NULL == pEventData ) ||
11611 ( NULL == pEventData->pEventData ) ||
11612 ( NULL == pEventData->pCBfnc ))
11613 {
11614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 }
11619
11620 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11621 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11622 /*-------------------------------------------------------------------------
11623 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 -------------------------------------------------------------------------*/
11626 wpalMutexAcquire(&pWDICtx->wptMutex);
11627
11628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11632 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 &macBSSID))
11634 {
11635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11636 "This station does not exist in the WDI Station Table %d");
11637 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 }
11640
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11642 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11645 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11646 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011647
11648 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 }
11651
11652 /*------------------------------------------------------------------------
11653 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 ------------------------------------------------------------------------*/
11656 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11659 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11660 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011661
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 }
11666
11667
11668 wpalMutexRelease(&pWDICtx->wptMutex);
11669 /*-----------------------------------------------------------------------
11670 Get message buffer
11671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11673 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11677 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11682 {
11683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11684 "Unable to get send buffer in Trigger BA req %x %x %x",
11685 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 }
11689
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011691 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11694
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 wpalMemoryCopy( pSendBuffer+usDataOffset,
11696 &halTriggerBAReq.triggerBAParams,
11697 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011698
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11701 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11702 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011703
11704 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 index++)
11706 {
11707 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11708 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11709 halTriggerBACandidate++;
11710 wdiTriggerBACandidate++;
11711 }
11712
11713 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011715
11716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11720 wdiTriggerBARspCb, pEventData->pUserData,
11721 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011722}/*WDI_ProcessTriggerBAReq*/
11723
11724
11725
11726/**
11727 @brief Process Update Beacon Params Request function (called when Main FSM
11728 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011729
11730 @param pWDICtx: pointer to the WLAN DAL context
11731 pEventData: pointer to the event information structure
11732
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 @see
11734 @return Result of the function call
11735*/
11736WDI_Status
11737WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011738(
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 WDI_ControlBlockType* pWDICtx,
11740 WDI_EventInfoType* pEventData
11741)
11742{
11743 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11744 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 wpt_uint16 usDataOffset = 0;
11747 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11750
11751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011753 -------------------------------------------------------------------------*/
11754 if (( NULL == pEventData ) ||
11755 ( NULL == pEventData->pEventData) ||
11756 ( NULL == pEventData->pCBfnc))
11757 {
11758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 }
11763
11764 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11765 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11766 /*-----------------------------------------------------------------------
11767 Get message buffer
11768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 sizeof(halUpdateBeaconParams),
11771 &pSendBuffer, &usDataOffset, &usSendSize))||
11772 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11773 {
11774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11775 "Unable to get send buffer in set bss key req %x %x %x",
11776 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 }
11780
11781 /*BSS Index of the BSS*/
11782 halUpdateBeaconParams.bssIdx =
11783 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11784 /*shortPreamble mode. HAL should update all the STA rates when it
11785 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11788 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11791 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11794
11795 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11808 halUpdateBeaconParams.fRIFSMode =
11809 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011810 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11812
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11814 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011815
11816 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011818
11819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11823 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011824}/*WDI_ProcessUpdateBeaconParamsReq*/
11825
11826
11827
11828/**
11829 @brief Process Send Beacon template Request function (called when Main FSM
11830 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011831
11832 @param pWDICtx: pointer to the WLAN DAL context
11833 pEventData: pointer to the event information structure
11834
Jeff Johnson295189b2012-06-20 16:38:30 -070011835 @see
11836 @return Result of the function call
11837*/
11838WDI_Status
11839WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011840(
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 WDI_ControlBlockType* pWDICtx,
11842 WDI_EventInfoType* pEventData
11843)
11844{
11845 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11846 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 wpt_uint16 usDataOffset = 0;
11849 wpt_uint16 usSendSize = 0;
11850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11851
11852 tSendBeaconReqMsg halSendBeaconReq;
11853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 -------------------------------------------------------------------------*/
11856 if (( NULL == pEventData ) ||
11857 ( NULL == pEventData->pEventData ) ||
11858 ( NULL == pEventData->pCBfnc ))
11859 {
11860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 }
11865
11866 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11867 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11868 /*-----------------------------------------------------------------------
11869 Get message buffer
11870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 sizeof(halSendBeaconReq.sendBeaconParam),
11873 &pSendBuffer, &usDataOffset, &usSendSize))||
11874 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11875 {
11876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11877 "Unable to get send buffer in send beacon req %x %x %x",
11878 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 }
11882
11883 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11884 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11885 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11888 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11889 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11890 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011893 /* usP2PIeOffset should be atleast greater than timIeOffset */
11894 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11895 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11896 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11897 {
11898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11899 "Invalid usP2PIeOffset %hu",
11900 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11901 WDI_ASSERT(0);
11902 return WDI_STATUS_E_FAILURE;
11903 }
11904
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011906 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011907
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 wpalMemoryCopy( pSendBuffer+usDataOffset,
11909 &halSendBeaconReq.sendBeaconParam,
11910 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011911
11912 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914
11915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11919 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011920}/*WDI_ProcessSendBeaconParamsReq*/
11921
11922/**
11923 @brief Process Update Beacon Params Request function (called when Main FSM
11924 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011925
11926 @param pWDICtx: pointer to the WLAN DAL context
11927 pEventData: pointer to the event information structure
11928
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 @see
11930 @return Result of the function call
11931*/
11932WDI_Status
11933WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011934(
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 WDI_ControlBlockType* pWDICtx,
11936 WDI_EventInfoType* pEventData
11937)
11938{
11939 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11940 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 wpt_uint16 usDataOffset = 0;
11943 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11946
11947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 -------------------------------------------------------------------------*/
11950 if (( NULL == pEventData ) ||
11951 ( NULL == pEventData->pEventData) ||
11952 ( NULL == pEventData->pCBfnc))
11953 {
11954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 }
11959
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11964 /*-----------------------------------------------------------------------
11965 Get message buffer
11966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 sizeof(halUpdateProbeRspTmplParams),
11969 &pSendBuffer, &usDataOffset, &usSendSize))||
11970 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11971 {
11972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11973 "Unable to get send buffer in set bss key req %x %x %x",
11974 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 }
11978
11979 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 WDI_MAC_ADDR_LEN);
11982
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11985
11986 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11987 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011989
11990
11991 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11992 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11993 WDI_PROBE_REQ_BITMAP_IE_LEN);
11994
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 wpalMemoryCopy( pSendBuffer+usDataOffset,
11996 &halUpdateProbeRspTmplParams,
11997 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011998
11999 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012001
12002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12006 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12007 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012008}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12009
12010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012013
12014 @param pWDICtx: pointer to the WLAN DAL context
12015 pEventData: pointer to the event information structure
12016
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 @see
12018 @return Result of the function call
12019*/
12020WDI_Status
12021WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012022(
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 WDI_ControlBlockType* pWDICtx,
12024 WDI_EventInfoType* pEventData
12025)
12026{
12027
12028 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12029 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12030
12031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 -------------------------------------------------------------------------*/
12034 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12039 {
12040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 }
12045
12046 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12049
12050 /*cache the wdi nv request message here if the the first fragment
12051 * To issue the request to HAL for the next fragment */
12052 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12053 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12055 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12057
12058 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12059 pWDICtx->pRspCBUserData = pEventData->pUserData;
12060 }
12061
12062 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12063}
12064
12065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012068
12069 @param pWDICtx: pointer to the WLAN DAL context
12070 pEventData: pointer to the event information structure
12071
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 @see
12073 @return Result of the function call
12074*/
12075WDI_Status WDI_ProcessSetMaxTxPowerReq
12076(
12077 WDI_ControlBlockType* pWDICtx,
12078 WDI_EventInfoType* pEventData
12079)
12080{
12081 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12082 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 wpt_uint16 usDataOffset = 0;
12085 wpt_uint16 usSendSize = 0;
12086 tSetMaxTxPwrReq halSetMaxTxPower;
12087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12088
12089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 -------------------------------------------------------------------------*/
12092 if (( NULL == pEventData ) ||
12093 ( NULL == pEventData->pEventData ) ||
12094 ( NULL == pEventData->pCBfnc ))
12095 {
12096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12105
12106 /*-----------------------------------------------------------------------
12107 Get message buffer
12108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012109if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12111 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012113)))
12114 {
12115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12116 "Unable to get Set Max Tx Power req %x %x %x",
12117 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 }
12121
12122 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12123 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12124 WDI_MAC_ADDR_LEN);
12125
12126 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12127 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12128 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012131
12132 wpalMemoryCopy( pSendBuffer+usDataOffset,
12133 &halSetMaxTxPower.setMaxTxPwrParams,
12134 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012135
12136 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138
12139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12143 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12144 WDI_SET_MAX_TX_POWER_RESP);
12145
Jeff Johnson295189b2012-06-20 16:38:30 -070012146}
12147
schangd82195a2013-03-13 18:41:24 -070012148/**
12149 @brief Process Set Tx Power Request function (called when Main
12150 FSM allows it)
12151
12152 @param pWDICtx: pointer to the WLAN DAL context
12153 pEventData: pointer to the event information structure
12154
12155 @see
12156 @return Result of the function call
12157*/
12158WDI_Status WDI_ProcessSetTxPowerReq
12159(
12160 WDI_ControlBlockType* pWDICtx,
12161 WDI_EventInfoType* pEventData
12162)
12163{
12164 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12165 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12166 wpt_uint8* pSendBuffer = NULL;
12167 wpt_uint16 usDataOffset = 0;
12168 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012169 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12171
12172 /*-------------------------------------------------------------------------
12173 Sanity check
12174 -------------------------------------------------------------------------*/
12175 if (( NULL == pEventData ) ||
12176 ( NULL == pEventData->pEventData ) ||
12177 ( NULL == pEventData->pCBfnc ))
12178 {
12179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12180 "%s: Invalid parameters", __func__);
12181 WDI_ASSERT(0);
12182 return WDI_STATUS_E_FAILURE;
12183 }
12184
12185 pwdiSetTxPowerParams =
12186 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12187 wdiSetTxPowerRspCb =
12188 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12189
12190 /*-----------------------------------------------------------------------
12191 Get message buffer
12192 -----------------------------------------------------------------------*/
12193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12194 sizeof(tSetTxPwrReqParams),
12195 &pSendBuffer, &usDataOffset, &usSendSize))||
12196 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12197 )))
12198 {
12199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12200 "Unable to get Set Max Tx Power req %x %x %x",
12201 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12202 WDI_ASSERT(0);
12203 return WDI_STATUS_E_FAILURE;
12204 }
12205
Leo Changa37e2a92013-03-25 17:39:58 -070012206 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12207 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12208 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012209
12210 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12211 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12212
12213 /*-------------------------------------------------------------------------
12214 Send Set Tx Power Request to HAL
12215 -------------------------------------------------------------------------*/
12216 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12217 wdiSetTxPowerRspCb, pEventData->pUserData,
12218 WDI_SET_TX_POWER_RESP);
12219}
Jeff Johnson295189b2012-06-20 16:38:30 -070012220
12221/**
12222 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12223 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012224
12225 @param pWDICtx: pointer to the WLAN DAL context
12226 pEventData: pointer to the event information structure
12227
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 @see
12229 @return Result of the function call
12230*/
12231WDI_Status
12232WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012233(
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 WDI_ControlBlockType* pWDICtx,
12235 WDI_EventInfoType* pEventData
12236)
12237{
12238 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12239 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 wpt_uint16 usDataOffset = 0;
12242 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12245
12246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 -------------------------------------------------------------------------*/
12249 if (( NULL == pEventData ) ||
12250 ( NULL == pEventData->pEventData) ||
12251 ( NULL == pEventData->pCBfnc))
12252 {
12253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 }
12258
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012261 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12263 /*-----------------------------------------------------------------------
12264 Get message buffer
12265 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12267 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 sizeof(halSetP2PGONOAParams),
12269 &pSendBuffer, &usDataOffset, &usSendSize))||
12270 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12271 {
12272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12273 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12274 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 }
12278
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12283 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12292
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 wpalMemoryCopy( pSendBuffer+usDataOffset,
12294 &halSetP2PGONOAParams,
12295 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012296
12297 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299
12300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12304 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12305 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012306}/*WDI_ProcessP2PGONOAReq*/
12307
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012308#ifdef FEATURE_WLAN_TDLS
12309
12310/**
12311 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12312 allows it)
12313
12314 @param pWDICtx: pointer to the WLAN DAL context
12315 pEventData: pointer to the event information structure
12316
12317 @see
12318 @return Result of the function call
12319*/
12320WDI_Status
12321WDI_ProcessTdlsLinkEstablishReq
12322(
12323 WDI_ControlBlockType* pWDICtx,
12324 WDI_EventInfoType* pEventData
12325)
12326{
12327 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12328 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12329 wpt_uint8* pSendBuffer = NULL;
12330 wpt_uint16 usDataOffset = 0;
12331 wpt_uint16 usSendSize = 0;
12332
12333 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12335
12336 /*-------------------------------------------------------------------------
12337 Sanity check
12338 -------------------------------------------------------------------------*/
12339 if (( NULL == pEventData ) ||
12340 ( NULL == pEventData->pEventData) ||
12341 ( NULL == pEventData->pCBfnc))
12342 {
12343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12344 "%s: Invalid parameters", __func__);
12345 WDI_ASSERT(0);
12346 return WDI_STATUS_E_FAILURE;
12347 }
12348 pwdiTDLSLinkEstablishReqParams =
12349 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12350 wdiTDLSLinkEstablishReqRspCb =
12351 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12352
12353
12354 /*-----------------------------------------------------------------------
12355 Get message buffer
12356 -----------------------------------------------------------------------*/
12357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12358 WDI_TDLS_LINK_ESTABLISH_REQ,
12359 sizeof(halSetTDLSLinkEstablishParams),
12360 &pSendBuffer, &usDataOffset, &usSendSize))||
12361 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12362 {
12363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12364 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12365 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12366 WDI_ASSERT(0);
12367 return WDI_STATUS_E_FAILURE;
12368 }
12369
12370 halSetTDLSLinkEstablishParams.staIdx =
12371 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12372 halSetTDLSLinkEstablishParams.bIsResponder =
12373 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12374 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12375 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12376 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12377 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12378 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12379 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12380 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12381 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12382 halSetTDLSLinkEstablishParams.aAck = 0;
12383 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12384 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12385 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12386
12387 wpalMemoryCopy( pSendBuffer+usDataOffset,
12388 &halSetTDLSLinkEstablishParams,
12389 sizeof(halSetTDLSLinkEstablishParams));
12390
12391 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12392 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12393
12394 /*-------------------------------------------------------------------------
12395 Send Update Probe Resp Template Request to HAL
12396 -------------------------------------------------------------------------*/
12397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12398 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12399 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12400 return 0;
12401}/*WDI_ProcessTdlsLinkEstablishReq*/
12402
12403
12404#endif
12405
Jeff Johnson295189b2012-06-20 16:38:30 -070012406
12407
12408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 @param None
12412
12413 @see
12414 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012415*/
12416void
12417WDI_SetPowerStateCb
12418(
12419 wpt_status status,
12420 unsigned int dxePhyAddr,
12421 void *pContext
12422)
12423{
12424 wpt_status wptStatus;
12425 WDI_ControlBlockType *pCB = NULL;
12426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12427 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12428 {
12429 //it shouldn't happen, put an error msg
12430 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 /*
12432 * Trigger the event to bring the Enter BMPS req function to come
12433 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012434*/
12435 if( NULL != pContext )
12436 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 }
12439 else
12440 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 pCB = &gWDICb;
12443 }
12444 pCB->dxePhyAddr = dxePhyAddr;
12445 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12446 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12447 {
12448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12449 "Failed to set an event");
12450
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 }
12453 return;
12454}
12455
12456
12457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012460
12461 @param pWDICtx: pointer to the WLAN DAL context
12462 pEventData: pointer to the event information structure
12463
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 @see
12465 @return Result of the function call
12466*/
12467WDI_Status
12468WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012469(
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 WDI_ControlBlockType* pWDICtx,
12471 WDI_EventInfoType* pEventData
12472)
12473{
Jeff Johnson43971f52012-07-17 12:26:56 -070012474 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 wpt_uint16 usDataOffset = 0;
12478 wpt_uint16 usSendSize = 0;
12479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12480
12481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 -------------------------------------------------------------------------*/
12484 if (( NULL == pEventData ) ||
12485 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12486 {
12487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012490 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
12493 /*-----------------------------------------------------------------------
12494 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 0,
12499 &pSendBuffer, &usDataOffset, &usSendSize))||
12500 ( usSendSize < (usDataOffset )))
12501 {
12502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12503 "Unable to get send buffer in Enter IMPS req %x %x",
12504 pEventData, wdiEnterImpsRspCb);
12505 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012506 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 }
12508
12509 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012510 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12511 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 {
12513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12514 "WDI Init failed to reset an event");
12515
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012517 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 }
12519
12520 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012521 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12522 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12524 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12525 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012526 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012527 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
12529 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012532 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12533 WDI_SET_POWER_STATE_TIMEOUT);
12534 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 {
12536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12537 "WDI Init failed to wait on an event");
12538
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012540 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 }
12542
12543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12547 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012548
12549fail:
12550 // Release the message buffer so we don't leak
12551 wpalMemoryFree(pSendBuffer);
12552
12553failRequest:
12554 //WDA should have failure check to avoid the memory leak
12555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012556}/*WDI_ProcessEnterImpsReq*/
12557
12558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012561
12562 @param pWDICtx: pointer to the WLAN DAL context
12563 pEventData: pointer to the event information structure
12564
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 @see
12566 @return Result of the function call
12567*/
12568WDI_Status
12569WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012570(
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 WDI_ControlBlockType* pWDICtx,
12572 WDI_EventInfoType* pEventData
12573)
12574{
12575 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 wpt_uint16 usDataOffset = 0;
12578 wpt_uint16 usSendSize = 0;
12579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12580
12581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 -------------------------------------------------------------------------*/
12584 if (( NULL == pEventData ) ||
12585 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12586 {
12587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 }
12592
12593 /*-----------------------------------------------------------------------
12594 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 0,
12599 &pSendBuffer, &usDataOffset, &usSendSize))||
12600 ( usSendSize < (usDataOffset )))
12601 {
12602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12603 "Unable to get send buffer in Exit IMPS req %x %x",
12604 pEventData, wdiExitImpsRspCb);
12605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 }
12608
12609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12613 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012614}/*WDI_ProcessExitImpsReq*/
12615
12616/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012619
12620 @param pWDICtx: pointer to the WLAN DAL context
12621 pEventData: pointer to the event information structure
12622
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 @see
12624 @return Result of the function call
12625*/
12626WDI_Status
12627WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012628(
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 WDI_ControlBlockType* pWDICtx,
12630 WDI_EventInfoType* pEventData
12631)
12632{
12633 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12634 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 wpt_uint16 usDataOffset = 0;
12637 wpt_uint16 usSendSize = 0;
12638 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012639 wpt_status wptStatus;
12640
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12642
12643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 -------------------------------------------------------------------------*/
12646 if (( NULL == pEventData ) ||
12647 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12648 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12649 {
12650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012653 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 }
12655
12656 /*-----------------------------------------------------------------------
12657 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 sizeof(enterBmpsReq),
12662 &pSendBuffer, &usDataOffset, &usSendSize))||
12663 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12664 {
12665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12666 "Unable to get send buffer in Enter BMPS req %x %x %x",
12667 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12668 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012669 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 }
12671
12672 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012673 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12674 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 {
12676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12677 "WDI Init failed to reset an event");
12678
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012680 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 }
12682
12683 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012684 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12685 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12686 {
12687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12688 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12689 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012690 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012691 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012692
12693/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012696 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12697 WDI_SET_POWER_STATE_TIMEOUT);
12698 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 {
12700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12701 "WDI Init failed to wait on an event");
12702
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012704 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 }
12706
12707 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12708
12709 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12710 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12711 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12712 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12713
12714 // For CCX and 11R Roaming
12715 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12716 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12717 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12718
12719 wpalMemoryCopy( pSendBuffer+usDataOffset,
12720 &enterBmpsReq,
12721 sizeof(enterBmpsReq));
12722
12723 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012725
12726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12730 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012731
12732fail:
12733 // Release the message buffer so we don't leak
12734 wpalMemoryFree(pSendBuffer);
12735
12736failRequest:
12737 //WDA should have failure check to avoid the memory leak
12738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012739}/*WDI_ProcessEnterBmpsReq*/
12740
12741/**
12742 @brief Process Exit BMPS Request function (called when Main FSM
12743 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012744
12745 @param pWDICtx: pointer to the WLAN DAL context
12746 pEventData: pointer to the event information structure
12747
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 @see
12749 @return Result of the function call
12750*/
12751WDI_Status
12752WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012753(
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 WDI_ControlBlockType* pWDICtx,
12755 WDI_EventInfoType* pEventData
12756)
12757{
12758 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12759 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 wpt_uint16 usDataOffset = 0;
12762 wpt_uint16 usSendSize = 0;
12763 tHalExitBmpsReqParams exitBmpsReq;
12764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12765
12766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 -------------------------------------------------------------------------*/
12769 if (( NULL == pEventData ) ||
12770 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12771 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12772 {
12773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 }
12778
12779 /*-----------------------------------------------------------------------
12780 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 sizeof(exitBmpsReq),
12785 &pSendBuffer, &usDataOffset, &usSendSize))||
12786 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12787 {
12788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12789 "Unable to get send buffer in Exit BMPS req %x %x %x",
12790 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 }
12794 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12795
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12797
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 wpalMemoryCopy( pSendBuffer+usDataOffset,
12799 &exitBmpsReq,
12800 sizeof(exitBmpsReq));
12801
12802 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804
12805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12809 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810}/*WDI_ProcessExitBmpsReq*/
12811
12812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012815
12816 @param pWDICtx: pointer to the WLAN DAL context
12817 pEventData: pointer to the event information structure
12818
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 @see
12820 @return Result of the function call
12821*/
12822WDI_Status
12823WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012824(
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 WDI_ControlBlockType* pWDICtx,
12826 WDI_EventInfoType* pEventData
12827)
12828{
12829 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12830 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 wpt_uint16 usDataOffset = 0;
12833 wpt_uint16 usSendSize = 0;
12834 tUapsdReqParams enterUapsdReq;
12835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12836
12837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 -------------------------------------------------------------------------*/
12840 if (( NULL == pEventData ) ||
12841 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12842 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12843 {
12844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 }
12849
12850 /*-----------------------------------------------------------------------
12851 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 sizeof(enterUapsdReq),
12856 &pSendBuffer, &usDataOffset, &usSendSize))||
12857 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12858 {
12859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12860 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12861 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 }
12865
12866 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12867 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12868 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12869 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12870 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12871 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12872 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12873 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 wpalMemoryCopy( pSendBuffer+usDataOffset,
12877 &enterUapsdReq,
12878 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012879
12880 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012882
12883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12887 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012888}/*WDI_ProcessEnterUapsdReq*/
12889
12890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012893
12894 @param pWDICtx: pointer to the WLAN DAL context
12895 pEventData: pointer to the event information structure
12896
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 @see
12898 @return Result of the function call
12899*/
12900WDI_Status
12901WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012902(
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 WDI_ControlBlockType* pWDICtx,
12904 WDI_EventInfoType* pEventData
12905)
12906{
12907 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 wpt_uint16 usDataOffset = 0;
12910 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012911 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12912 wpt_uint8 bssIdx = 0;
12913
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12915
12916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 -------------------------------------------------------------------------*/
12919 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012920 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12922 {
12923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 }
12928
12929 /*-----------------------------------------------------------------------
12930 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012931 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012934 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012936 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 {
12938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12939 "Unable to get send buffer in Exit UAPSD req %x %x",
12940 pEventData, wdiExitUapsdRspCb);
12941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 }
12944
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012945 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12946
12947 wpalMemoryCopy( pSendBuffer+usDataOffset,
12948 &bssIdx,
12949 sizeof(wpt_uint8));
12950
12951 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12952 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12953
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12958 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012959}/*WDI_ProcessExitUapsdReq*/
12960
12961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012964
12965 @param pWDICtx: pointer to the WLAN DAL context
12966 pEventData: pointer to the event information structure
12967
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 @see
12969 @return Result of the function call
12970*/
12971WDI_Status
12972WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012973(
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 WDI_ControlBlockType* pWDICtx,
12975 WDI_EventInfoType* pEventData
12976)
12977{
12978 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12979 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 wpt_uint16 usDataOffset = 0;
12982 wpt_uint16 usSendSize = 0;
12983 tUapsdInfo uapsdAcParamsReq;
12984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12985
12986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 -------------------------------------------------------------------------*/
12989 if (( NULL == pEventData ) ||
12990 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12991 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12992 {
12993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 }
12998
12999 /*-----------------------------------------------------------------------
13000 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 sizeof(uapsdAcParamsReq),
13005 &pSendBuffer, &usDataOffset, &usSendSize))||
13006 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13007 {
13008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13009 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13010 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 }
13014
13015 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13016 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13017 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13018 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13019 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13020 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13021
Jeff Johnsone7245742012-09-05 17:12:55 -070013022 wpalMemoryCopy( pSendBuffer+usDataOffset,
13023 &uapsdAcParamsReq,
13024 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013025
13026 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013028
13029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013031 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13033 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013034}/*WDI_ProcessSetUapsdAcParamsReq*/
13035
13036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013039
13040 @param pWDICtx: pointer to the WLAN DAL context
13041 pEventData: pointer to the event information structure
13042
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 @see
13044 @return Result of the function call
13045*/
13046WDI_Status
13047WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013048(
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 WDI_ControlBlockType* pWDICtx,
13050 WDI_EventInfoType* pEventData
13051)
13052{
13053 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13054 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 wpt_uint16 usDataOffset = 0;
13057 wpt_uint16 usSendSize = 0;
13058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13059
13060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 -------------------------------------------------------------------------*/
13063 if (( NULL == pEventData ) ||
13064 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13065 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13066 {
13067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 }
13072
13073 /*-----------------------------------------------------------------------
13074 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13079 &pSendBuffer, &usDataOffset, &usSendSize))||
13080 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13081 {
13082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13083 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13084 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 }
13088
Jeff Johnsone7245742012-09-05 17:12:55 -070013089 wpalMemoryCopy( pSendBuffer+usDataOffset,
13090 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13091 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013092
13093 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095
13096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13100 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013101}/*WDI_ProcessUpdateUapsdParamsReq*/
13102
13103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013106
13107 @param pWDICtx: pointer to the WLAN DAL context
13108 pEventData: pointer to the event information structure
13109
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 @see
13111 @return Result of the function call
13112*/
13113WDI_Status
13114WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013115(
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 WDI_ControlBlockType* pWDICtx,
13117 WDI_EventInfoType* pEventData
13118)
13119{
13120 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13121 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 wpt_uint16 usDataOffset = 0;
13124 wpt_uint16 usSendSize = 0;
13125 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13126
13127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13128
13129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 -------------------------------------------------------------------------*/
13132 if (( NULL == pEventData ) ||
13133 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13134 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13135 {
13136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 }
13141
13142 /*-----------------------------------------------------------------------
13143 Get message buffer
13144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 sizeof(halRxpFilterParams),
13147 &pSendBuffer, &usDataOffset, &usSendSize))||
13148 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13149 {
13150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13151 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13152 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013155 }
13156
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13161
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 wpalMemoryCopy( pSendBuffer+usDataOffset,
13163 &halRxpFilterParams,
13164 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013165
13166 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013168
13169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13173 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013174}/*WDI_ProcessConfigureRxpFilterReq*/
13175
13176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013179
13180 @param pWDICtx: pointer to the WLAN DAL context
13181 pEventData: pointer to the event information structure
13182
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 @see
13184 @return Result of the function call
13185*/
13186WDI_Status
13187WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013188(
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 WDI_ControlBlockType* pWDICtx,
13190 WDI_EventInfoType* pEventData
13191)
13192{
13193 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13194 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 wpt_uint16 usDataOffset = 0;
13197 wpt_uint16 usSendSize = 0;
13198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13199
13200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 -------------------------------------------------------------------------*/
13203 if (( NULL == pEventData ) ||
13204 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13205 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13206 {
13207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 }
13212
13213 /*-----------------------------------------------------------------------
13214 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13219 &pSendBuffer, &usDataOffset, &usSendSize))||
13220 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13221 {
13222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13223 "Unable to get send buffer in Set beacon filter req %x %x %x",
13224 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 }
13228
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 wpalMemoryCopy( pSendBuffer+usDataOffset,
13230 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13231 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13232 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13233 &pwdiBeaconFilterParams->aFilters[0],
13234 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013235
13236 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013238
13239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13243 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013244}/*WDI_ProcessSetBeaconFilterReq*/
13245
13246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013249
13250 @param pWDICtx: pointer to the WLAN DAL context
13251 pEventData: pointer to the event information structure
13252
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 @see
13254 @return Result of the function call
13255*/
13256WDI_Status
13257WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013258(
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 WDI_ControlBlockType* pWDICtx,
13260 WDI_EventInfoType* pEventData
13261)
13262{
13263 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13264 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 wpt_uint16 usDataOffset = 0;
13267 wpt_uint16 usSendSize = 0;
13268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13269
13270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 -------------------------------------------------------------------------*/
13273 if (( NULL == pEventData ) ||
13274 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13275 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13276 {
13277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
13283 /*-----------------------------------------------------------------------
13284 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13289 &pSendBuffer, &usDataOffset, &usSendSize))||
13290 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13291 {
13292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13293 "Unable to get send buffer in remove beacon filter req %x %x %x",
13294 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 }
13298
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 wpalMemoryCopy( pSendBuffer+usDataOffset,
13300 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13301 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013302
13303 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013305
13306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13310 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013311}
13312
13313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013316
13317 @param pWDICtx: pointer to the WLAN DAL context
13318 pEventData: pointer to the event information structure
13319
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 @see
13321 @return Result of the function call
13322*/
13323WDI_Status
13324WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013325(
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 WDI_ControlBlockType* pWDICtx,
13327 WDI_EventInfoType* pEventData
13328)
13329{
13330 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13331 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 wpt_uint16 usDataOffset = 0;
13334 wpt_uint16 usSendSize = 0;
13335 tHalRSSIThresholds rssiThresholdsReq;
13336 WDI_Status ret_status = 0;
13337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13338
13339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 -------------------------------------------------------------------------*/
13342 if (( NULL == pEventData ) ||
13343 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13344 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13345 {
13346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 }
13351
13352 /*-----------------------------------------------------------------------
13353 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 sizeof(rssiThresholdsReq),
13358 &pSendBuffer, &usDataOffset, &usSendSize))||
13359 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13360 {
13361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13362 "Unable to get send buffer in remove beacon filter req %x %x %x",
13363 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 }
13367
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13388
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 wpalMemoryCopy( pSendBuffer+usDataOffset,
13390 &rssiThresholdsReq,
13391 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013392
13393 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
13396 /*-------------------------------------------------------------------------
13397 Send Set threshold req to HAL
13398 -------------------------------------------------------------------------*/
13399 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13400 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13401 {
13402 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13403 // req. Then as a result of processing the threshold cross ind, we trigger
13404 // a Set threshold req, then we need to indicate to WDI that it needs to
13405 // go to busy state as a result of the indication as we sent a req in the
13406 // same WDI context.
13407 // Hence expected state transition is to busy.
13408 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13409 }
13410
13411 return ret_status;
13412}
13413
13414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013417
13418 @param pWDICtx: pointer to the WLAN DAL context
13419 pEventData: pointer to the event information structure
13420
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 @see
13422 @return Result of the function call
13423*/
13424WDI_Status
13425WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013426(
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 WDI_ControlBlockType* pWDICtx,
13428 WDI_EventInfoType* pEventData
13429)
13430{
13431 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13432 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 wpt_uint16 usDataOffset = 0;
13435 wpt_uint16 usSendSize = 0;
13436 tHalHostOffloadReq hostOffloadParams;
13437 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013438 wpt_uint8 ucCurrentBSSSesIdx = 0;
13439 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013440
13441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13442
13443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 -------------------------------------------------------------------------*/
13446 if (( NULL == pEventData ) ||
13447 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13448 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13449 {
13450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013453 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 }
13455
13456 /*-----------------------------------------------------------------------
13457 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13462 &pSendBuffer, &usDataOffset, &usSendSize))||
13463 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13464 {
13465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13466 "Unable to get send buffer in host offload req %x %x %x",
13467 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13468 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013469 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 }
13471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013472 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13473 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13474 &pBSSSes);
13475 if ( NULL == pBSSSes )
13476 {
13477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013478 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13479 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013480 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013481 }
13482
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13484 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13487 {
13488 // ARP Offload
13489 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13490 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13491 4);
13492 }
13493 else
13494 {
13495 // NS Offload
13496 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13497 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13498 16);
13499
13500#ifdef WLAN_NS_OFFLOAD
13501 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13502 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13503 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13504 16);
13505 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13506 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13507 16);
13508 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13509 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13510 16);
13511 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13512 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13513 16);
13514 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13515 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13516 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013517 nsOffloadParams.srcIPv6AddrValid =
13518 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13519
13520 nsOffloadParams.targetIPv6Addr1Valid =
13521 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13522
13523 nsOffloadParams.targetIPv6Addr2Valid =
13524 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13525
13526 nsOffloadParams.slotIndex =
13527 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528
Jeff Johnson295189b2012-06-20 16:38:30 -070013529#endif // WLAN_NS_OFFLOAD
13530 }
13531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013532 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13533
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 // copy hostOffloadParams into pSendBuffer
13535 wpalMemoryCopy( pSendBuffer+usDataOffset,
13536 &hostOffloadParams,
13537 sizeof(hostOffloadParams));
13538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013539 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013541 // copy nsOffloadParams into pSendBuffer
13542 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 &nsOffloadParams,
13544 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013545 }
13546 else
13547 {
13548#ifdef WLAN_NS_OFFLOAD
13549 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13550 {
13551 // copy nsOffloadParams into pSendBuffer
13552 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13553 &nsOffloadParams,
13554 sizeof(nsOffloadParams));
13555 }
13556#endif
13557 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013558
13559 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013561
13562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13566 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013567
13568fail:
13569 // Release the message buffer so we don't leak
13570 wpalMemoryFree(pSendBuffer);
13571
13572failRequest:
13573 //WDA should have failure check to avoid the memory leak
13574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013575}/*WDI_ProcessHostOffloadReq*/
13576
13577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013579 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013580
13581 @param pWDICtx: pointer to the WLAN DAL context
13582 pEventData: pointer to the event information structure
13583
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 @see
13585 @return Result of the function call
13586*/
13587WDI_Status
13588WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013589(
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 WDI_ControlBlockType* pWDICtx,
13591 WDI_EventInfoType* pEventData
13592)
13593{
13594 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13595 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 wpt_uint16 usDataOffset = 0;
13598 wpt_uint16 usSendSize = 0;
13599 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013600 wpt_uint8 ucCurrentBSSSesIdx = 0;
13601 WDI_BSSSessionType* pBSSSes = NULL;
13602
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13604
13605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 -------------------------------------------------------------------------*/
13608 if (( NULL == pEventData ) ||
13609 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13610 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13611 {
13612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13613 "Invalid parameters in Keep Alive req");
13614 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013615 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 }
13617
13618 /*-----------------------------------------------------------------------
13619 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 sizeof(keepAliveReq),
13624 &pSendBuffer, &usDataOffset, &usSendSize))||
13625 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13626 {
13627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13628 "Unable to get send buffer in keep alive req %x %x %x",
13629 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13630 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013631 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 }
13633
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13635 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13636 &pBSSSes);
13637 if ( NULL == pBSSSes )
13638 {
13639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013640 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013641 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013642 }
13643
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13645 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13646
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013647 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13650 {
13651 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13652 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13653 HAL_IPV4_ADDR_LEN);
13654 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13655 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 wpalMemoryCopy(keepAliveReq.destMacAddr,
13658 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13659 HAL_MAC_ADDR_LEN);
13660 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013661
13662 wpalMemoryCopy( pSendBuffer+usDataOffset,
13663 &keepAliveReq,
13664 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013665
13666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13667 "Process keep alive req %d",sizeof(keepAliveReq));
13668
13669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13670 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13671
13672 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013674
13675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13676 "Sending keep alive req to HAL");
13677
13678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13682 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013683
13684fail:
13685 // Release the message buffer so we don't leak
13686 wpalMemoryFree(pSendBuffer);
13687
13688failRequest:
13689 //WDA should have failure check to avoid the memory leak
13690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013691}/*WDI_ProcessKeepAliveReq*/
13692
13693
13694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013697
13698 @param pWDICtx: pointer to the WLAN DAL context
13699 pEventData: pointer to the event information structure
13700
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 @see
13702 @return Result of the function call
13703*/
13704WDI_Status
13705WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013706(
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 WDI_ControlBlockType* pWDICtx,
13708 WDI_EventInfoType* pEventData
13709)
13710{
13711 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13712 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 wpt_uint16 usDataOffset = 0;
13715 wpt_uint16 usSendSize = 0;
13716 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013717 wpt_uint8 ucCurrentBSSSesIdx = 0;
13718 WDI_BSSSessionType* pBSSSes = NULL;
13719
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13721
13722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 -------------------------------------------------------------------------*/
13725 if (( NULL == pEventData ) ||
13726 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13727 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13728 {
13729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013732 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 }
13734
13735 /*-----------------------------------------------------------------------
13736 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 sizeof(wowlAddBcPtrnReq),
13741 &pSendBuffer, &usDataOffset, &usSendSize))||
13742 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13743 {
13744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13745 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13746 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13747 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013748 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013751 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13752 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13753 &pBSSSes);
13754 if ( NULL == pBSSSes )
13755 {
13756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013757 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013758 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013759 }
13760
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13769
13770 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13771 {
13772 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13773 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13774 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13775 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13776 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13777 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13778 }
13779 else
13780 {
13781 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13782 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13783 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13784 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13785 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13786 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13787
13788 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13789 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13790 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13791 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13792 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13793 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13794 }
13795
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013796 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13797
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 wpalMemoryCopy( pSendBuffer+usDataOffset,
13799 &wowlAddBcPtrnReq,
13800 sizeof(wowlAddBcPtrnReq));
13801
13802 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804
13805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13809 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013810fail:
13811 // Release the message buffer so we don't leak
13812 wpalMemoryFree(pSendBuffer);
13813
13814failRequest:
13815 //WDA should have failure check to avoid the memory leak
13816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817}/*WDI_ProcessWowlAddBcPtrnReq*/
13818
13819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013822
13823 @param pWDICtx: pointer to the WLAN DAL context
13824 pEventData: pointer to the event information structure
13825
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 @see
13827 @return Result of the function call
13828*/
13829WDI_Status
13830WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013831(
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 WDI_ControlBlockType* pWDICtx,
13833 WDI_EventInfoType* pEventData
13834)
13835{
13836 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13837 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 wpt_uint16 usDataOffset = 0;
13840 wpt_uint16 usSendSize = 0;
13841 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013842 wpt_uint8 ucCurrentBSSSesIdx = 0;
13843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13845
13846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 -------------------------------------------------------------------------*/
13849 if (( NULL == pEventData ) ||
13850 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13851 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13852 {
13853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013856 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 }
13858
13859 /*-----------------------------------------------------------------------
13860 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 sizeof(wowlDelBcPtrnReq),
13865 &pSendBuffer, &usDataOffset, &usSendSize))||
13866 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13867 {
13868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13869 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13870 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13871 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013872 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 }
13874
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013875 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13876 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13877 &pBSSSes);
13878 if ( NULL == pBSSSes )
13879 {
13880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013881 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013882 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013883 }
13884
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013887
13888 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13889
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 wpalMemoryCopy( pSendBuffer+usDataOffset,
13891 &wowlDelBcPtrnReq,
13892 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013893
13894 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013896
13897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13901 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013902
13903fail:
13904 // Release the message buffer so we don't leak
13905 wpalMemoryFree(pSendBuffer);
13906
13907failRequest:
13908 //WDA should have failure check to avoid the memory leak
13909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013910}/*WDI_ProcessWowlDelBcPtrnReq*/
13911
13912/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013914 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013915
13916 @param pWDICtx: pointer to the WLAN DAL context
13917 pEventData: pointer to the event information structure
13918
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 @see
13920 @return Result of the function call
13921*/
13922WDI_Status
13923WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013924(
Jeff Johnson295189b2012-06-20 16:38:30 -070013925 WDI_ControlBlockType* pWDICtx,
13926 WDI_EventInfoType* pEventData
13927)
13928{
13929 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13930 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 wpt_uint16 usDataOffset = 0;
13933 wpt_uint16 usSendSize = 0;
13934 tHalWowlEnterParams wowlEnterReq;
13935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13936
13937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 -------------------------------------------------------------------------*/
13940 if (( NULL == pEventData ) ||
13941 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13942 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13943 {
13944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 }
13949
13950 /*-----------------------------------------------------------------------
13951 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 sizeof(wowlEnterReq),
13956 &pSendBuffer, &usDataOffset, &usSendSize))||
13957 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13960 "Unable to get send buffer in Wowl enter req %x %x %x",
13961 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 }
13965
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13982
13983#ifdef WLAN_WAKEUP_EVENTS
13984 wowlEnterReq.ucWoWEAPIDRequestEnable =
13985 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13986
13987 wowlEnterReq.ucWoWEAPOL4WayEnable =
13988 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13989
13990 wowlEnterReq.ucWowNetScanOffloadMatch =
13991 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13992
13993 wowlEnterReq.ucWowGTKRekeyError =
13994 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13995
13996 wowlEnterReq.ucWoWBSSConnLoss =
13997 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13998#endif // WLAN_WAKEUP_EVENTS
13999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014000 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14001
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14003 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14004 sizeof(tSirMacAddr));
14005
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 wpalMemoryCopy( pSendBuffer+usDataOffset,
14007 &wowlEnterReq,
14008 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014009
14010 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014012
14013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14017 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014018}/*WDI_ProcessWowlEnterReq*/
14019
14020/**
14021 @brief Process Wowl exit Request function (called when Main FSM
14022 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014023
14024 @param pWDICtx: pointer to the WLAN DAL context
14025 pEventData: pointer to the event information structure
14026
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 @see
14028 @return Result of the function call
14029*/
14030WDI_Status
14031WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014032(
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 WDI_ControlBlockType* pWDICtx,
14034 WDI_EventInfoType* pEventData
14035)
14036{
14037 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014038 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 wpt_uint16 usDataOffset = 0;
14041 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014042 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14044
14045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 -------------------------------------------------------------------------*/
14048 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014049 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14051 {
14052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014053 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 }
14057
14058 /*-----------------------------------------------------------------------
14059 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014063 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014065 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 {
14067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14068 "Unable to get send buffer in Wowl Exit req %x %x",
14069 pEventData, wdiWowlExitCb);
14070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 }
14073
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014074 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14075
14076 wpalMemoryCopy( pSendBuffer+usDataOffset,
14077 &wowlExitparams,
14078 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14083 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014084}/*WDI_ProcessWowlExitReq*/
14085
14086/**
14087 @brief Process Configure Apps Cpu Wakeup State Request function
14088 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014089
14090 @param pWDICtx: pointer to the WLAN DAL context
14091 pEventData: pointer to the event information structure
14092
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 @see
14094 @return Result of the function call
14095*/
14096WDI_Status
14097WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014098(
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 WDI_ControlBlockType* pWDICtx,
14100 WDI_EventInfoType* pEventData
14101)
14102{
14103 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14104 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 wpt_uint16 usDataOffset = 0;
14107 wpt_uint16 usSendSize = 0;
14108 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14110
14111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 -------------------------------------------------------------------------*/
14114 if (( NULL == pEventData ) ||
14115 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14116 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14117 {
14118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 }
14123
14124 /*-----------------------------------------------------------------------
14125 Get message buffer
14126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 sizeof(halCfgAppsCpuWakeupStateReqParams),
14129 &pSendBuffer, &usDataOffset, &usSendSize))||
14130 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14131 {
14132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14133 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14134 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 }
14138
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14141
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 wpalMemoryCopy( pSendBuffer+usDataOffset,
14143 &halCfgAppsCpuWakeupStateReqParams,
14144 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014145
14146 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014148
14149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14153 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14154 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014155}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14156
14157#ifdef WLAN_FEATURE_VOWIFI_11R
14158/**
14159 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14160 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014161
14162 @param pWDICtx: pointer to the WLAN DAL context
14163 pEventData: pointer to the event information structure
14164
Jeff Johnson295189b2012-06-20 16:38:30 -070014165 @see
14166 @return Result of the function call
14167*/
14168WDI_Status
14169WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014170(
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 WDI_ControlBlockType* pWDICtx,
14172 WDI_EventInfoType* pEventData
14173)
14174{
14175 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14176 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 wpt_uint16 usDataOffset = 0;
14181 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 wpt_macAddr macBSSID;
14184 tAggrAddTsReq halAggrAddTsReq;
14185 int i;
14186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14187
14188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 -------------------------------------------------------------------------*/
14191 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14192 ( NULL == pEventData->pCBfnc ))
14193 {
14194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 }
14199 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14200 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14201 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14202 /*-------------------------------------------------------------------------
14203 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 -------------------------------------------------------------------------*/
14206 wpalMutexAcquire(&pWDICtx->wptMutex);
14207
14208 /*------------------------------------------------------------------------
14209 Find the BSS for which the request is made and identify WDI session
14210 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14212 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 &macBSSID))
14214 {
14215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14216 "This station does not exist in the WDI Station Table %d");
14217 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 }
14220
Jeff Johnsone7245742012-09-05 17:12:55 -070014221 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14222 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14225 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14226 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014227
14228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014231
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 /*------------------------------------------------------------------------
14233 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 ------------------------------------------------------------------------*/
14236 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14237 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14239 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14240 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014241
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 }
14246
14247 wpalMutexRelease(&pWDICtx->wptMutex);
14248 /*-----------------------------------------------------------------------
14249 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 sizeof(tAggrAddTsParams),
14254 &pSendBuffer, &usDataOffset, &usSendSize))||
14255 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14256 {
14257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14258 "Unable to get send buffer in set bss key req %x %x %x",
14259 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 }
14263
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14268
14269 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14270 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14277 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14280 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14283 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14286 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14289 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14292 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14295 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14298 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303
14304
14305 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14335 }
14336
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 wpalMemoryCopy( pSendBuffer+usDataOffset,
14338 &halAggrAddTsReq,
14339 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014340
14341 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343
14344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014350}/*WDI_ProcessAggrAddTSpecReq*/
14351#endif /* WLAN_FEATURE_VOWIFI_11R */
14352
14353/**
14354 @brief Process Shutdown Request function (called when Main FSM
14355 allows it)
14356
14357 @param pWDICtx: pointer to the WLAN DAL context
14358 pEventData: pointer to the event information structure
14359
14360 @see
14361 @return Result of the function call
14362*/
14363WDI_Status
14364WDI_ProcessShutdownReq
14365(
14366 WDI_ControlBlockType* pWDICtx,
14367 WDI_EventInfoType* pEventData
14368 )
14369{
14370 wpt_status wptStatus;
14371
14372
14373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14374
14375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 -------------------------------------------------------------------------*/
14378 if ( NULL == pEventData )
14379 {
14380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 WDI_ASSERT(0);
14383 return WDI_STATUS_E_FAILURE;
14384 }
14385
14386 wpalMutexAcquire(&pWDICtx->wptMutex);
14387
14388
14389 gWDIInitialized = eWLAN_PAL_FALSE;
14390 /*! TO DO: stop the data services */
14391 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14392 {
14393 /*Stop the STA Table !UT- check this logic again
14394 It is safer to do it here than on the response - because a stop is imminent*/
14395 WDI_STATableStop(pWDICtx);
14396
14397 /* Stop Transport Driver, DXE */
14398 WDTS_Stop(pWDICtx);
14399 }
14400
14401 /*Clear all pending request*/
14402 WDI_ClearPendingRequests(pWDICtx);
14403 /* Close Data transport*/
14404 /* FTM mode does not open Data Path */
14405 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14406 {
14407 WDTS_Close(pWDICtx);
14408 }
14409 /*Close the STA Table !UT- check this logic again*/
14410 WDI_STATableClose(pWDICtx);
14411 /*close the PAL */
14412 wptStatus = wpalClose(pWDICtx->pPALContext);
14413 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14414 {
14415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14416 "Failed to wpal Close %d", wptStatus);
14417 WDI_ASSERT(0);
14418 }
14419
14420 /*Transition back to init state*/
14421 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14422
14423 wpalMutexRelease(&pWDICtx->wptMutex);
14424
14425 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427
14428
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014430}/*WDI_ProcessShutdownReq*/
14431
14432/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014434========================================================================*/
14435
14436/**
14437 @brief Process Start Response function (called when a response
14438 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014439
14440 @param pWDICtx: pointer to the WLAN DAL context
14441 pEventData: pointer to the event information structure
14442
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 @see
14444 @return Result of the function call
14445*/
14446WDI_Status
14447WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014448(
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 WDI_ControlBlockType* pWDICtx,
14450 WDI_EventInfoType* pEventData
14451)
14452{
14453 WDI_StartRspParamsType wdiRspParams;
14454 WDI_StartRspCb wdiStartRspCb = NULL;
14455
14456 tHalMacStartRspParams* startRspParams;
14457
14458#ifndef HAL_SELF_STA_PER_BSS
14459 WDI_AddStaParams wdiAddSTAParam = {0};
14460#endif
14461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14462
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 -------------------------------------------------------------------------*/
14467 if (( NULL == pEventData ) ||
14468 ( NULL == pEventData->pEventData) ||
14469 ( NULL == wdiStartRspCb ))
14470 {
14471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 }
14476
14477 /*-------------------------------------------------------------------------
14478 Extract response and send it to UMAC
14479 -------------------------------------------------------------------------*/
14480 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14481 {
14482 // not enough data was received
14483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14484 "Invalid response length in Start Resp Expect %x Rcvd %x",
14485 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14486 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 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 -------------------------------------------------------------------------*/
14494 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14495
14496 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14497 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14498 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14499 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14500 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14501 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14502 wdiRspParams.wlanReportedVersion.major =
14503 startRspParams->wcnssWlanVersion.major;
14504 wdiRspParams.wlanReportedVersion.minor =
14505 startRspParams->wcnssWlanVersion.minor;
14506 wdiRspParams.wlanReportedVersion.version =
14507 startRspParams->wcnssWlanVersion.version;
14508 wdiRspParams.wlanReportedVersion.revision =
14509 startRspParams->wcnssWlanVersion.revision;
14510 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14511 startRspParams->wcnssCrmVersionString,
14512 sizeof(wdiRspParams.wcnssSoftwareVersion));
14513 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14514 startRspParams->wcnssWlanVersionString,
14515 sizeof(wdiRspParams.wcnssHardwareVersion));
14516 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14517
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014518 /*Save the HAL Version*/
14519 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14520
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 wpalMutexAcquire(&pWDICtx->wptMutex);
14522 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14523 {
14524 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14525
14526 /*Cache the start response for further use*/
14527 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014528 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 sizeof(pWDICtx->wdiCachedStartRspParams));
14530
14531 }
14532 else
14533 {
14534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14535 "Failed to start device with status %s(%d)",
14536 WDI_getHALStatusMsgString(startRspParams->status),
14537 startRspParams->status);
14538
14539 /*Set the expected state transition to stopped - because the start has
14540 failed*/
14541 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14542
14543 wpalMutexRelease(&pWDICtx->wptMutex);
14544
14545 /*Notify UMAC*/
14546 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014547
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14549
14550 /*Although the response is an error - it was processed by our function
14551 so as far as the caller is concerned this is a succesful reponse processing*/
14552 return WDI_STATUS_SUCCESS;
14553 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014554
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 wpalMutexRelease(&pWDICtx->wptMutex);
14556
14557 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14558 {
14559 /* FTM mode does not need to execute below */
14560 /* Notify UMAC */
14561 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14562 return WDI_STATUS_SUCCESS;
14563 }
14564
14565 /* START the Data transport */
14566 WDTS_startTransport(pWDICtx);
14567
14568 /*Start the STA Table !- check this logic again*/
14569 WDI_STATableStart(pWDICtx);
14570
14571#ifndef HAL_SELF_STA_PER_BSS
14572 /* Store the Self STA Index */
14573 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14574
14575 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14576 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14577 WDI_MAC_ADDR_LEN);
14578
14579 /* At this point add the self-STA */
14580
14581 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14582 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14583 /*! TO DO: wdiAddSTAParam.dpuSig */
14584 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14585 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14586 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14587
14588 //all DPU indices are the same for self STA
14589 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14590 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014591 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14593 WDI_MAC_ADDR_LEN);
14594 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14595 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14596
14597 /* Note: Since we don't get an explicit config STA request for self STA, we
14598 add the self STA upon receiving the Start response message. But the
14599 self STA entry in the table is deleted when WDI gets an explicit delete STA
14600 request */
14601 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14602#endif
14603
14604 /*Notify UMAC*/
14605 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14606
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608}/*WDI_ProcessStartRsp*/
14609
14610
14611/**
14612 @brief Process Stop Response function (called when a response
14613 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014614
14615 @param pWDICtx: pointer to the WLAN DAL context
14616 pEventData: pointer to the event information structure
14617
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 @see
14619 @return Result of the function call
14620*/
14621WDI_Status
14622WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014623(
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 WDI_ControlBlockType* pWDICtx,
14625 WDI_EventInfoType* pEventData
14626)
14627{
14628 WDI_Status wdiStatus;
14629 WDI_StopRspCb wdiStopRspCb = NULL;
14630
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14633
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 -------------------------------------------------------------------------*/
14638 if (( NULL == pEventData ) ||
14639 ( NULL == pEventData->pEventData) ||
14640 ( NULL == wdiStopRspCb ))
14641 {
14642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 }
14647
14648 /*-------------------------------------------------------------------------
14649 Extract response and send it to UMAC
14650 -------------------------------------------------------------------------*/
14651 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14652 {
14653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14654 "Invalid response length in Stop Resp %x %x",
14655 pEventData->uEventDataSize);
14656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 }
14659
14660 /*-------------------------------------------------------------------------
14661 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14665 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 sizeof(halMacStopRspMsg.stopRspParams));
14667
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669
14670 wpalMutexAcquire(&pWDICtx->wptMutex);
14671
14672 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 --------------------------------------------------------------------------*/
14675 if ( WDI_STATUS_SUCCESS != wdiStatus )
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14678 "Failed to stop the device with status %s (%d)",
14679 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14680 halMacStopRspMsg.stopRspParams.status);
14681
Jeff Johnsone7245742012-09-05 17:12:55 -070014682 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14683
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014687
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14689
14690 /*Transition now as WDI may get preempted imediately after it sends
14691 up the Stop Response and it will not get to process the state transition
14692 from Main Rsp function*/
14693 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14694 wpalMutexRelease(&pWDICtx->wptMutex);
14695
14696 /*! TO DO: - STOP the Data transport */
14697
14698 /*Notify UMAC*/
14699 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14700
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014702}/*WDI_ProcessStopRsp*/
14703
14704/**
14705 @brief Process Close Rsp function (called when a response
14706 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014707
14708 @param pWDICtx: pointer to the WLAN DAL context
14709 pEventData: pointer to the event information structure
14710
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 @see
14712 @return Result of the function call
14713*/
14714WDI_Status
14715WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014716(
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 WDI_ControlBlockType* pWDICtx,
14718 WDI_EventInfoType* pEventData
14719)
14720{
14721 /*There is no close response comming from HAL - function just kept for
14722 simmetry */
14723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014725}/*WDI_ProcessCloseRsp*/
14726
14727
14728/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014730============================================================================*/
14731
14732/**
14733 @brief Process Init Scan Rsp function (called when a response
14734 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014735
14736 @param pWDICtx: pointer to the WLAN DAL context
14737 pEventData: pointer to the event information structure
14738
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 @see
14740 @return Result of the function call
14741*/
14742WDI_Status
14743WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014744(
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 WDI_ControlBlockType* pWDICtx,
14746 WDI_EventInfoType* pEventData
14747)
14748{
14749 WDI_Status wdiStatus;
14750 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014752 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14754
14755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 -------------------------------------------------------------------------*/
14758 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14759 ( NULL == pEventData->pEventData))
14760 {
14761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 }
14766
14767 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14768 if( NULL == wdiInitScanRspCb)
14769 {
14770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014771 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 }
14775
14776 /*-------------------------------------------------------------------------
14777 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14781 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 sizeof(halInitScanRspMsg.initScanRspParams));
14783
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014785
14786 if ( pWDICtx->bInBmps )
14787 {
14788 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014789 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14790 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14792 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14793 WDI_ASSERT(0);
14794 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 }
14796
14797 /*Notify UMAC*/
14798 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14799
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014801}/*WDI_ProcessInitScanRsp*/
14802
14803
14804/**
14805 @brief Process Start Scan Rsp function (called when a response
14806 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014807
14808 @param pWDICtx: pointer to the WLAN DAL context
14809 pEventData: pointer to the event information structure
14810
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 @see
14812 @return Result of the function call
14813*/
14814WDI_Status
14815WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014816(
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 WDI_ControlBlockType* pWDICtx,
14818 WDI_EventInfoType* pEventData
14819)
14820{
14821 WDI_StartScanRspParamsType wdiStartScanParams;
14822 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014823
14824 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14826
14827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 -------------------------------------------------------------------------*/
14830 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14831 ( NULL == pEventData->pEventData))
14832 {
14833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014834 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 }
14838
14839 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14840 if( NULL == wdiStartScanRspCb)
14841 {
14842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014843 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 }
14847
14848 /*-------------------------------------------------------------------------
14849 Extract response and send it to UMAC
14850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14852 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 sizeof(halStartScanRspMsg.startScanRspParams));
14854
14855 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14856 halStartScanRspMsg.startScanRspParams.status);
14857#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 halStartScanRspMsg.startScanRspParams.startTSF,
14862 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014863#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014864
14865 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14866 {
14867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14868 "Start scan failed with status %s (%d)",
14869 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14870 halStartScanRspMsg.startScanRspParams.status);
14871 /* send the status to UMAC, don't return from here*/
14872 }
14873
14874 /*Notify UMAC*/
14875 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14876
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878
14879}/*WDI_ProcessStartScanRsp*/
14880
14881
14882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014885
14886 @param pWDICtx: pointer to the WLAN DAL context
14887 pEventData: pointer to the event information structure
14888
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 @see
14890 @return Result of the function call
14891*/
14892WDI_Status
14893WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014894(
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 WDI_ControlBlockType* pWDICtx,
14896 WDI_EventInfoType* pEventData
14897)
14898{
14899 WDI_Status wdiStatus;
14900 tHalEndScanRspMsg halEndScanRspMsg;
14901 WDI_EndScanRspCb wdiEndScanRspCb;
14902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14903
14904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 -------------------------------------------------------------------------*/
14907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14908 ( NULL == pEventData->pEventData))
14909 {
14910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 }
14915
14916 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14917
14918 /*-------------------------------------------------------------------------
14919 Extract response and send it to UMAC
14920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14922 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 sizeof(halEndScanRspMsg.endScanRspParams));
14924
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014926
14927 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14928 {
14929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14930 "End Scan failed with status %s (%d )",
14931 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14932 halEndScanRspMsg.endScanRspParams.status);
14933 /* send the status to UMAC, don't return from here*/
14934 }
14935
14936 /*Notify UMAC*/
14937 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14938
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940}/*WDI_ProcessEndScanRsp*/
14941
14942
14943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014946
14947 @param pWDICtx: pointer to the WLAN DAL context
14948 pEventData: pointer to the event information structure
14949
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 @see
14951 @return Result of the function call
14952*/
14953WDI_Status
14954WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014955(
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 WDI_ControlBlockType* pWDICtx,
14957 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014958)
Jeff Johnson295189b2012-06-20 16:38:30 -070014959{
14960 WDI_Status wdiStatus;
14961 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014962
14963 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14965
14966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 -------------------------------------------------------------------------*/
14969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14970 ( NULL == pEventData->pEventData))
14971 {
14972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 }
14977
14978 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14979
14980 /*-------------------------------------------------------------------------
14981 Extract response and send it to UMAC
14982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14984 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14986
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014988
14989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 halFinishScanRspMsg.finishScanRspParams.status);
14992
14993 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14994 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14997 "Finish Scan failed with status %s (%d)",
14998 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14999 halFinishScanRspMsg.finishScanRspParams.status);
15000 /* send the status to UMAC, don't return from here*/
15001 }
15002
15003 /*Notify UMAC*/
15004 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15005
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015007}/*WDI_ProcessFinishScanRsp*/
15008
15009/**
15010 @brief Process Join Response function (called when a response
15011 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015012
15013 @param pWDICtx: pointer to the WLAN DAL context
15014 pEventData: pointer to the event information structure
15015
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 @see
15017 @return Result of the function call
15018*/
15019WDI_Status
15020WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015021(
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 WDI_ControlBlockType* pWDICtx,
15023 WDI_EventInfoType* pEventData
15024)
15025{
15026 WDI_Status wdiStatus;
15027 WDI_JoinRspCb wdiJoinRspCb;
15028 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015029
15030 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15032
15033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 -------------------------------------------------------------------------*/
15036 if (( NULL == pWDICtx ) ||
15037 ( NULL == pWDICtx->pfncRspCB ) ||
15038 ( NULL == pEventData ) ||
15039 ( NULL == pEventData->pEventData))
15040 {
15041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 }
15046
15047 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15048
15049 /*-------------------------------------------------------------------------
15050 Extract response and send it to UMAC
15051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15053 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 sizeof(halJoinRspMsg.joinRspParams));
15055
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015057
15058 wpalMutexAcquire(&pWDICtx->wptMutex);
15059
15060 /*-----------------------------------------------------------------------
15061 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15066 {
15067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15069 "association no longer in progress %d - mysterious HAL response",
15070 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015071
Jeff Johnsone7245742012-09-05 17:12:55 -070015072 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 }
15076
15077 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15078
15079 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -----------------------------------------------------------------------*/
15082 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15083 {
15084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15085 "Join only allowed in Joining state - failure state is %d "
15086 "strange HAL response", pBSSSes->wdiAssocState);
15087
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15089
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 }
15093
15094
15095 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 -----------------------------------------------------------------------*/
15098 if ( WDI_STATUS_SUCCESS != wdiStatus )
15099 {
15100 /*Association was failed by HAL - remove session*/
15101 WDI_DeleteSession(pWDICtx, pBSSSes);
15102
15103 /*Association no longer in progress */
15104 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15105
15106 /*Association no longer in progress - prepare pending assoc for processing*/
15107 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015108
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 }
15110 else
15111 {
15112 /*Transition to state Joining - this may be redundant as we are supposed
15113 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 }
15116
15117 wpalMutexRelease(&pWDICtx->wptMutex);
15118
15119 /*Notify UMAC*/
15120 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15121
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015123}/*WDI_ProcessJoinRsp*/
15124
15125
15126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015129
15130 @param pWDICtx: pointer to the WLAN DAL context
15131 pEventData: pointer to the event information structure
15132
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 @see
15134 @return Result of the function call
15135*/
15136WDI_Status
15137WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015138(
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 WDI_ControlBlockType* pWDICtx,
15140 WDI_EventInfoType* pEventData
15141)
15142{
15143 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15144 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 WDI_BSSSessionType* pBSSSes = NULL;
15147
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15150 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015151
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15153
15154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 -------------------------------------------------------------------------*/
15157 if (( NULL == pEventData ) ||
15158 ( NULL == pEventData->pEventData))
15159 {
15160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 }
15165
15166 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15167
15168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 sizeof(halConfigBssRspMsg.configBssRspParams));
15174
15175 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15176 halConfigBssRspMsg.configBssRspParams.status);
15177 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15178 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15181 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015182
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015184
15185 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015187
15188 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015190
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15196 #endif
15197 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15198 halConfigBssRspMsg.configBssRspParams.staMac,
15199 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 wpalMutexAcquire(&pWDICtx->wptMutex);
15202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15206 wdiConfigBSSParams.macBSSID,
15207 &pBSSSes);
15208
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 /*-----------------------------------------------------------------------
15210 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 -----------------------------------------------------------------------*/
15213 if ( NULL == pBSSSes )
15214 {
15215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15216 "Association sequence for this BSS does not yet exist "
15217 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015218
15219 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15220
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015224
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 /*Save data for this BSS*/
15226 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15227 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015232 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15238 pBSSSes->bcastStaIdx =
15239 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015240
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015242
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 /*-------------------------------------------------------------------------
15244 Add Peer STA
15245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15248 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 wdiAddSTAParam.ucHTCapable =
15254 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15255 wdiAddSTAParam.ucStaType =
15256 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15257
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15260 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015262
15263 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15264 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15265 WDI_MAC_ADDR_LEN);
15266
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015280
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15282 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015283
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15285 /*-------------------------------------------------------------------------
15286 Add Broadcast STA only in AP mode
15287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 WDI_BSS_OPERATIONAL_MODE_AP )
15290 {
15291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15292 "Add BCAST STA to table for index: %d",
15293 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015294
15295 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015297
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15299 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15300 }
15301 wpalMutexRelease(&pWDICtx->wptMutex);
15302 }
15303 else
15304 {
15305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15306 "Config BSS RSP failed with status : %s(%d)",
15307 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 halConfigBssRspMsg.configBssRspParams.status);
15310
Jeff Johnsone7245742012-09-05 17:12:55 -070015311
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 /*Association was failed by HAL - remove session*/
15313 WDI_DeleteSession(pWDICtx, pBSSSes);
15314
15315 /*Association no longer in progress */
15316 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15317
15318 /*Association no longer in progress - prepare pending assoc for processing*/
15319 WDI_DequeueAssocRequest(pWDICtx);
15320
15321 }
15322
15323 /*Notify UMAC*/
15324 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15325
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015327}/*WDI_ProcessConfigBSSRsp*/
15328
15329
15330/**
15331 @brief Process Del BSS Response function (called when a response
15332 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015333
15334 @param pWDICtx: pointer to the WLAN DAL context
15335 pEventData: pointer to the event information structure
15336
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 @see
15338 @return Result of the function call
15339*/
15340WDI_Status
15341WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015342(
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 WDI_ControlBlockType* pWDICtx,
15344 WDI_EventInfoType* pEventData
15345)
15346{
15347 WDI_DelBSSRspParamsType wdiDelBSSParams;
15348 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 WDI_BSSSessionType* pBSSSes = NULL;
15351
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15354
15355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 -------------------------------------------------------------------------*/
15358 if (( NULL == pEventData ) ||
15359 ( NULL == pEventData->pEventData))
15360 {
15361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 }
15366
15367 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15368
15369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15373 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 sizeof(halDelBssRspMsg.deleteBssRspParams));
15375
15376
15377 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015379
15380 wpalMutexAcquire(&pWDICtx->wptMutex);
15381
15382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15386 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15387 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015388
15389 /*-----------------------------------------------------------------------
15390 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 -----------------------------------------------------------------------*/
15393 if ( NULL == pBSSSes )
15394 {
15395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15396 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015397 "association no longer in progress - mysterious HAL response");
15398
15399 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15400
15401 wpalMutexRelease(&pWDICtx->wptMutex);
15402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015404
15405 /*Extract BSSID for the response to UMAC*/
15406 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15407 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15408
15409 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15410
15411 /*-----------------------------------------------------------------------
15412 The current session will be deleted
15413 -----------------------------------------------------------------------*/
15414 WDI_DeleteSession(pWDICtx, pBSSSes);
15415
15416
15417 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15418 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015420 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015421 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015422
15423 /* Delete the STA's in this BSS */
15424 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15425
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 wpalMutexRelease(&pWDICtx->wptMutex);
15427
15428 /*Notify UMAC*/
15429 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15430
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015432}/*WDI_ProcessDelBSSRsp*/
15433
15434/**
15435 @brief Process Post Assoc Rsp function (called when a response
15436 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015437
15438 @param pWDICtx: pointer to the WLAN DAL context
15439 pEventData: pointer to the event information structure
15440
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 @see
15442 @return Result of the function call
15443*/
15444WDI_Status
15445WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015446(
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 WDI_ControlBlockType* pWDICtx,
15448 WDI_EventInfoType* pEventData
15449)
15450{
15451 WDI_PostAssocRspParamsType wdiPostAssocParams;
15452 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15457
15458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 -------------------------------------------------------------------------*/
15461 if (( NULL == pEventData ) ||
15462 ( NULL == pEventData->pEventData))
15463 {
15464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 }
15469
15470 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15471
15472 /*-------------------------------------------------------------------------
15473 Extract response and send it to UMAC
15474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 sizeof(halPostAssocRspMsg.postAssocRspParams));
15478
15479 /*Extract the Post Assoc STA Params */
15480
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15487
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 wdiPostAssocParams.wdiStatus =
15489 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015490
15491 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15492 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15494 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 WDI_MAC_ADDR_LEN);
15496
15497 /* Extract Post Assoc BSS Params */
15498
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15500 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15501 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015502
15503 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15504 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15507 .macSTA, WDI_MAC_ADDR_LEN);
15508
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15511
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15514
15515 wdiPostAssocParams.bssParams.ucBSSIdx =
15516 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15517
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15520
15521 wpalMutexAcquire(&pWDICtx->wptMutex);
15522
15523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015529
15530 /*-----------------------------------------------------------------------
15531 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 -----------------------------------------------------------------------*/
15534 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15537 {
15538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15539 "Association sequence for this BSS does not yet exist or "
15540 "association no longer in progress - mysterious HAL response");
15541
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15543
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 }
15547
15548 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015550 -----------------------------------------------------------------------*/
15551 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15552 {
15553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15554 "Post Assoc not allowed before JOIN - failing request "
15555 "strange HAL response");
15556
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15558
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 }
15562
15563 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 -----------------------------------------------------------------------*/
15566 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15567 {
15568 /*Association was failed by HAL - remove session*/
15569 WDI_DeleteSession(pWDICtx, pBSSSes);
15570 }
15571 else
15572 {
15573 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015575
15576 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15585
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15588 }
15589
15590 /*Association no longer in progress */
15591 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15592
15593 /*Association no longer in progress - prepare pending assoc for processing*/
15594 WDI_DequeueAssocRequest(pWDICtx);
15595
15596 wpalMutexRelease(&pWDICtx->wptMutex);
15597
15598 /*Notify UMAC*/
15599 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15600
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015602}/*WDI_ProcessPostAssocRsp*/
15603
15604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015607
15608 @param pWDICtx: pointer to the WLAN DAL context
15609 pEventData: pointer to the event information structure
15610
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 @see
15612 @return Result of the function call
15613*/
15614WDI_Status
15615WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015616(
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 WDI_ControlBlockType* pWDICtx,
15618 WDI_EventInfoType* pEventData
15619)
15620{
15621 WDI_DelSTARspParamsType wdiDelSTARsp;
15622 WDI_DelSTARspCb wdiDelSTARspCb;
15623 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15626
15627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 -------------------------------------------------------------------------*/
15630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15631 ( NULL == pEventData->pEventData))
15632 {
15633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 }
15638
15639 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15640
15641 /*-------------------------------------------------------------------------
15642 Extract response and send it to UMAC
15643 -------------------------------------------------------------------------*/
15644 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 sizeof(halDelStaRspMsg.delStaRspParams));
15647
15648 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 wdiDelSTARsp.wdiStatus =
15650 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015651
15652 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15653
15654 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15655 if(staType == WDI_STA_ENTRY_SELF)
15656 {
15657 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15658
15659 /* At this point add the self-STA */
15660
15661 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15662 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15663 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15664
15665#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15666#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15667
15668 //all DPU indices are the same for self STA
15669 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15670 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15671 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15672 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15673 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15674 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015675
15676 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 }
15678 else
15679 {
15680 //Delete the station in the table
15681 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15682 }
15683
15684 /*Notify UMAC*/
15685 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15686
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688}/*WDI_ProcessDelSTARsp*/
15689
15690
15691/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015692 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015693==========================================================================*/
15694
15695/**
15696 @brief Process Set BSS Key Rsp function (called when a response
15697 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015698
15699 @param pWDICtx: pointer to the WLAN DAL context
15700 pEventData: pointer to the event information structure
15701
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 @see
15703 @return Result of the function call
15704*/
15705WDI_Status
15706WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015707(
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 WDI_ControlBlockType* pWDICtx,
15709 WDI_EventInfoType* pEventData
15710)
15711{
15712 WDI_Status wdiStatus;
15713 eHalStatus halStatus;
15714 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15716
15717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 -------------------------------------------------------------------------*/
15720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15721 ( NULL == pEventData->pEventData))
15722 {
15723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 }
15728
15729 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15730
15731 /*-------------------------------------------------------------------------
15732 Extract response and send it to UMAC
15733 -------------------------------------------------------------------------*/
15734 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015736
15737 if ( eHAL_STATUS_SUCCESS != halStatus )
15738 {
15739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15740 "Set BSS Key failed with status %s (%d)",
15741 WDI_getHALStatusMsgString(halStatus),
15742 halStatus);
15743 /* send the status to UMAC, don't return from here*/
15744 }
15745
15746 /*Notify UMAC*/
15747 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15748
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015750}/*WDI_ProcessSetBssKeyRsp*/
15751
15752/**
15753 @brief Process Remove BSS Key Rsp function (called when a response
15754 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015755
15756 @param pWDICtx: pointer to the WLAN DAL context
15757 pEventData: pointer to the event information structure
15758
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 @see
15760 @return Result of the function call
15761*/
15762WDI_Status
15763WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015764(
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_ControlBlockType* pWDICtx,
15766 WDI_EventInfoType* pEventData
15767)
15768{
15769 WDI_Status wdiStatus;
15770 eHalStatus halStatus;
15771 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15773
15774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 -------------------------------------------------------------------------*/
15777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15778 ( NULL == pEventData->pEventData))
15779 {
15780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 }
15785
15786 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15787
15788 /*-------------------------------------------------------------------------
15789 Extract response and send it to UMAC
15790 -------------------------------------------------------------------------*/
15791 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793
15794 if ( eHAL_STATUS_SUCCESS != halStatus )
15795 {
15796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15797 "Remove BSS Key failed with status %s (%d )",
15798 WDI_getHALStatusMsgString(halStatus),
15799 halStatus);
15800 /* send the status to UMAC, don't return from here*/
15801 }
15802
15803 /*Notify UMAC*/
15804 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15805
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015807}/*WDI_ProcessSetBssKeyRsp*/
15808
15809
15810/**
15811 @brief Process Set STA Key Rsp function (called when a response
15812 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015813
15814 @param pWDICtx: pointer to the WLAN DAL context
15815 pEventData: pointer to the event information structure
15816
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 @see
15818 @return Result of the function call
15819*/
15820WDI_Status
15821WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015822(
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 WDI_ControlBlockType* pWDICtx,
15824 WDI_EventInfoType* pEventData
15825)
15826{
15827 WDI_Status wdiStatus;
15828 eHalStatus halStatus;
15829 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15831
15832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 -------------------------------------------------------------------------*/
15835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15836 ( NULL == pEventData->pEventData))
15837 {
15838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 }
15843
15844 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15845
15846 /*-------------------------------------------------------------------------
15847 Extract response and send it to UMAC
15848 -------------------------------------------------------------------------*/
15849 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015851
15852 if ( eHAL_STATUS_SUCCESS != halStatus )
15853 {
15854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15855 "Set STA Key failed with status %s (%d)",
15856 WDI_getHALStatusMsgString(halStatus),
15857 halStatus);
15858 /* send the status to UMAC, don't return from here*/
15859 }
15860
15861 /*Notify UMAC*/
15862 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15863
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015865}/*WDI_ProcessSetSTAKeyRsp*/
15866
15867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015870
15871 @param pWDICtx: pointer to the WLAN DAL context
15872 pEventData: pointer to the event information structure
15873
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 @see
15875 @return Result of the function call
15876*/
15877WDI_Status
15878WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015879(
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 WDI_ControlBlockType* pWDICtx,
15881 WDI_EventInfoType* pEventData
15882)
15883{
15884 WDI_Status wdiStatus;
15885 eHalStatus halStatus;
15886 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15888
15889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 -------------------------------------------------------------------------*/
15892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15893 ( NULL == pEventData->pEventData))
15894 {
15895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 }
15900
15901 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15902
15903 /*-------------------------------------------------------------------------
15904 Extract response and send it to UMAC
15905 -------------------------------------------------------------------------*/
15906 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015908
15909 if ( eHAL_STATUS_SUCCESS != halStatus )
15910 {
15911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15912 "Remove STA Key failed with status %s (%d)",
15913 WDI_getHALStatusMsgString(halStatus),
15914 halStatus);
15915 /* send the status to UMAC, don't return from here*/
15916 }
15917
15918 /*Notify UMAC*/
15919 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15920
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015922}/*WDI_ProcessRemoveStaKeyRsp*/
15923
15924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015927
15928 @param pWDICtx: pointer to the WLAN DAL context
15929 pEventData: pointer to the event information structure
15930
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 @see
15932 @return Result of the function call
15933*/
15934WDI_Status
15935WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015936(
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 WDI_ControlBlockType* pWDICtx,
15938 WDI_EventInfoType* pEventData
15939)
15940{
15941 WDI_Status wdiStatus;
15942 eHalStatus halStatus;
15943 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15945
15946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 -------------------------------------------------------------------------*/
15949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15950 ( NULL == pEventData->pEventData))
15951 {
15952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 }
15957
15958 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15959
15960 /*-------------------------------------------------------------------------
15961 Extract response and send it to UMAC
15962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 wpalMemoryCopy( &halStatus,
15964 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 sizeof(halStatus));
15966
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015968
15969 if ( eHAL_STATUS_SUCCESS != halStatus )
15970 {
15971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15972 "Set STA Key failed with status %s (%d)",
15973 WDI_getHALStatusMsgString(halStatus),
15974 halStatus);
15975 /* send the status to UMAC, don't return from here*/
15976 }
15977
15978 /*Notify UMAC*/
15979 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15980
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015982}/*WDI_ProcessSetSTABcastKeyRsp*/
15983
15984/**
15985 @brief Process Remove STA Bcast Key Rsp function (called when a
15986 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015987
15988 @param pWDICtx: pointer to the WLAN DAL context
15989 pEventData: pointer to the event information structure
15990
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 @see
15992 @return Result of the function call
15993*/
15994WDI_Status
15995WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015996(
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 WDI_ControlBlockType* pWDICtx,
15998 WDI_EventInfoType* pEventData
15999)
16000{
16001 WDI_Status wdiStatus;
16002 eHalStatus halStatus;
16003 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16005
16006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 -------------------------------------------------------------------------*/
16009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16010 ( NULL == pEventData->pEventData))
16011 {
16012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 }
16017
16018 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16019
16020 /*-------------------------------------------------------------------------
16021 Extract response and send it to UMAC
16022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 wpalMemoryCopy( &halStatus,
16024 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 sizeof(halStatus));
16026
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
16029 if ( eHAL_STATUS_SUCCESS != halStatus )
16030 {
16031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16032 "Remove STA Key failed with status %s (%d)",
16033 WDI_getHALStatusMsgString(halStatus),
16034 halStatus);
16035 /* send the status to UMAC, don't return from here*/
16036 }
16037
16038 /*Notify UMAC*/
16039 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16040
Jeff Johnsone7245742012-09-05 17:12:55 -070016041 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016042}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16043
16044
16045/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016046 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016047==========================================================================*/
16048
16049/**
16050 @brief Process Add TSpec Rsp function (called when a response
16051 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016052
16053 @param pWDICtx: pointer to the WLAN DAL context
16054 pEventData: pointer to the event information structure
16055
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 @see
16057 @return Result of the function call
16058*/
16059WDI_Status
16060WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016061(
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 WDI_ControlBlockType* pWDICtx,
16063 WDI_EventInfoType* pEventData
16064)
16065{
16066 WDI_Status wdiStatus;
16067 eHalStatus halStatus;
16068 WDI_AddTsRspCb wdiAddTsRspCb;
16069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16070
16071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 -------------------------------------------------------------------------*/
16074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16075 ( NULL == pEventData->pEventData))
16076 {
16077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 }
16082
16083 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16084
16085 /*-------------------------------------------------------------------------
16086 Extract response and send it to UMAC
16087 -------------------------------------------------------------------------*/
16088 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016090
16091 /*Notify UMAC*/
16092 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16093
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016095}/*WDI_ProcessAddTSpecRsp*/
16096
16097
16098/**
16099 @brief Process Del TSpec Rsp function (called when a response
16100 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016101
16102 @param pWDICtx: pointer to the WLAN DAL context
16103 pEventData: pointer to the event information structure
16104
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 @see
16106 @return Result of the function call
16107*/
16108WDI_Status
16109WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016110(
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 WDI_ControlBlockType* pWDICtx,
16112 WDI_EventInfoType* pEventData
16113)
16114{
16115 WDI_Status wdiStatus;
16116 eHalStatus halStatus;
16117 WDI_DelTsRspCb wdiDelTsRspCb;
16118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16119
16120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 -------------------------------------------------------------------------*/
16123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16124 ( NULL == pEventData->pEventData))
16125 {
16126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 }
16131
16132 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16133
16134 /*-------------------------------------------------------------------------
16135 Extract response and send it to UMAC
16136 -------------------------------------------------------------------------*/
16137 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016139
16140 /*Notify UMAC*/
16141 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16142
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016144}/*WDI_ProcessDelTSpecRsp*/
16145
16146/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016149
16150 @param pWDICtx: pointer to the WLAN DAL context
16151 pEventData: pointer to the event information structure
16152
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 @see
16154 @return Result of the function call
16155*/
16156WDI_Status
16157WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016158(
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 WDI_ControlBlockType* pWDICtx,
16160 WDI_EventInfoType* pEventData
16161)
16162{
16163 WDI_Status wdiStatus;
16164 eHalStatus halStatus;
16165 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16167
16168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 -------------------------------------------------------------------------*/
16171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16172 ( NULL == pEventData->pEventData))
16173 {
16174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 }
16179
16180 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16181
16182 /*-------------------------------------------------------------------------
16183 Extract response and send it to UMAC
16184 -------------------------------------------------------------------------*/
16185 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016186 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187
16188 /*Notify UMAC*/
16189 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16190
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192}/*WDI_ProcessUpdateEDCAParamsRsp*/
16193
16194
16195/**
16196 @brief Process Add BA Rsp function (called when a response
16197 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016198
16199 @param pWDICtx: pointer to the WLAN DAL context
16200 pEventData: pointer to the event information structure
16201
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 @see
16203 @return Result of the function call
16204*/
16205WDI_Status
16206WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016207(
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 WDI_ControlBlockType* pWDICtx,
16209 WDI_EventInfoType* pEventData
16210)
16211{
16212 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16213
16214 tAddBASessionRspParams halBASessionRsp;
16215 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16216
Jeff Johnsone7245742012-09-05 17:12:55 -070016217
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16219
16220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 -------------------------------------------------------------------------*/
16223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16224 ( NULL == pEventData->pEventData))
16225 {
16226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 }
16231
16232 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16233
16234 /*-------------------------------------------------------------------------
16235 Extract response and send it to UMAC
16236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 wpalMemoryCopy( &halBASessionRsp,
16238 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 sizeof(halBASessionRsp));
16240
16241 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16242
Jeff Johnson43971f52012-07-17 12:26:56 -070016243 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 {
16245 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16246 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16247 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16248 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16249 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16250 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16251 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16252 }
16253
16254 /*Notify UMAC*/
16255 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16256
Jeff Johnsone7245742012-09-05 17:12:55 -070016257 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016258}/*WDI_ProcessAddSessionBARsp*/
16259
16260
16261/**
16262 @brief Process Del BA Rsp function (called when a response
16263 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016264
16265 @param pWDICtx: pointer to the WLAN DAL context
16266 pEventData: pointer to the event information structure
16267
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 @see
16269 @return Result of the function call
16270*/
16271WDI_Status
16272WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016273(
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 WDI_ControlBlockType* pWDICtx,
16275 WDI_EventInfoType* pEventData
16276)
16277{
16278 WDI_Status wdiStatus;
16279 eHalStatus halStatus;
16280 WDI_DelBARspCb wdiDelBARspCb;
16281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16282
16283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 -------------------------------------------------------------------------*/
16286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16287 ( NULL == pEventData->pEventData))
16288 {
16289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 }
16294
16295 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16296
16297 /*-------------------------------------------------------------------------
16298 Extract response and send it to UMAC
16299 -------------------------------------------------------------------------*/
16300 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016302
16303 if ( eHAL_STATUS_SUCCESS == halStatus )
16304 {
16305 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16306 }
16307
16308 /*Notify UMAC*/
16309 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16310
Jeff Johnsone7245742012-09-05 17:12:55 -070016311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016312}/*WDI_ProcessDelBARsp*/
16313
16314#ifdef FEATURE_WLAN_CCX
16315/**
16316 @brief Process TSM Stats Rsp function (called when a response
16317 is being received over the bus from HAL)
16318
16319 @param pWDICtx: pointer to the WLAN DAL context
16320 pEventData: pointer to the event information structure
16321
16322 @see
16323 @return Result of the function call
16324*/
16325WDI_Status
16326WDI_ProcessTsmStatsRsp
16327(
16328 WDI_ControlBlockType* pWDICtx,
16329 WDI_EventInfoType* pEventData
16330)
16331{
16332 WDI_TsmRspCb wdiTsmStatsRspCb;
16333 tTsmStatsRspMsg halTsmStatsRspMsg;
16334 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16336
16337 /*-------------------------------------------------------------------------
16338 Sanity check
16339 -------------------------------------------------------------------------*/
16340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16341 ( NULL == pEventData->pEventData))
16342 {
16343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 WDI_ASSERT(0);
16346 return WDI_STATUS_E_FAILURE;
16347 }
16348
16349 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16350
16351 /*-------------------------------------------------------------------------
16352 Unpack HAL Response Message - the header was already extracted by the
16353 main Response Handling procedure
16354 -------------------------------------------------------------------------*/
16355 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16356 pEventData->pEventData,
16357 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16358
16359 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16360 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16361 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16362 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16363 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16364 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16365 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16366 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16367 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16368 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16369 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16370 halTsmStatsRspMsg.tsmStatsRspParams.status);
16371
16372 /*Notify UMAC*/
16373 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16374
16375 return WDI_STATUS_SUCCESS;
16376}/*WDI_ProcessTsmStatsRsp*/
16377
16378#endif
16379
16380
16381
16382/**
16383 @brief Process Flush AC Rsp function (called when a response
16384 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016385
16386 @param pWDICtx: pointer to the WLAN DAL context
16387 pEventData: pointer to the event information structure
16388
Jeff Johnson295189b2012-06-20 16:38:30 -070016389 @see
16390 @return Result of the function call
16391*/
16392WDI_Status
16393WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016394(
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 WDI_ControlBlockType* pWDICtx,
16396 WDI_EventInfoType* pEventData
16397)
16398{
16399 WDI_Status wdiStatus;
16400 eHalStatus halStatus;
16401 WDI_FlushAcRspCb wdiFlushAcRspCb;
16402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16403
16404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 -------------------------------------------------------------------------*/
16407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16408 ( NULL == pEventData->pEventData))
16409 {
16410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 }
16415
16416 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16417
16418 /*-------------------------------------------------------------------------
16419 Extract response and send it to UMAC
16420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 wpalMemoryCopy( &halStatus,
16422 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016423 sizeof(halStatus));
16424
Jeff Johnsone7245742012-09-05 17:12:55 -070016425 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016426
16427 /*Notify UMAC*/
16428 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16429
Jeff Johnsone7245742012-09-05 17:12:55 -070016430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016431}/*WDI_ProcessFlushAcRsp*/
16432
16433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016436
16437 @param pWDICtx: pointer to the WLAN DAL context
16438 pEventData: pointer to the event information structure
16439
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 @see
16441 @return Result of the function call
16442*/
16443WDI_Status
16444WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016445(
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 WDI_ControlBlockType* pWDICtx,
16447 WDI_EventInfoType* pEventData
16448)
16449{
16450 WDI_Status wdiStatus;
16451 eHalStatus halStatus;
16452 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16454
16455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 -------------------------------------------------------------------------*/
16458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16459 ( NULL == pEventData->pEventData))
16460 {
16461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 }
16466
16467 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16468
16469 /*-------------------------------------------------------------------------
16470 Extract response and send it to UMAC
16471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 wpalMemoryCopy( &halStatus,
16473 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 sizeof(halStatus));
16475
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016477
16478 /*Notify UMAC*/
16479 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16480
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482}/*WDI_ProcessBtAmpEventRsp*/
16483
16484
16485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016488
16489 @param pWDICtx: pointer to the WLAN DAL context
16490 pEventData: pointer to the event information structure
16491
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 @see
16493 @return Result of the function call
16494*/
16495WDI_Status
16496WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016497(
Jeff Johnson295189b2012-06-20 16:38:30 -070016498 WDI_ControlBlockType* pWDICtx,
16499 WDI_EventInfoType* pEventData
16500)
16501{
16502 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16503 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16504 tAddStaSelfRspMsg halAddStaSelfRsp;
16505 WDI_AddStaParams wdiAddSTAParam = {0};
16506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16507
16508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 -------------------------------------------------------------------------*/
16511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16512 ( NULL == pEventData->pEventData))
16513 {
16514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 }
16519
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16522
16523 /*-------------------------------------------------------------------------
16524 Extract response and send it to UMAC
16525 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16527 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16529
16530
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiAddSTASelfParams.wdiStatus =
16532 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016533
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16540
16541 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16542 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16543 WDI_MAC_ADDR_LEN);
16544
16545
16546#ifdef HAL_SELF_STA_PER_BSS
16547
16548 /* At this point add the self-STA */
16549
16550 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16551 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16552 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16553
16554 //all DPU indices are the same for self STA
16555
16556 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16559 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16560 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16561 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16562 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16563
16564 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16565 WDI_MAC_ADDR_LEN);
16566
16567 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16568 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16569
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16572 {
16573 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16574 }
16575#endif
16576
16577 /*Notify UMAC*/
16578 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16579
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016581}/*WDI_ProcessAddSTASelfRsp*/
16582
16583
16584
16585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016588
16589 @param pWDICtx: pointer to the WLAN DAL context
16590 pEventData: pointer to the event information structure
16591
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 @see
16593 @return Result of the function call
16594*/
16595WDI_Status
16596WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016597(
Jeff Johnson295189b2012-06-20 16:38:30 -070016598 WDI_ControlBlockType* pWDICtx,
16599 WDI_EventInfoType* pEventData
16600)
16601{
16602 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16603 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16604 tDelStaSelfRspParams delStaSelfRspParams;
16605 wpt_uint8 ucStaIdx;
16606
16607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16608
16609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 -------------------------------------------------------------------------*/
16612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16613 ( NULL == pEventData->pEventData))
16614 {
16615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 }
16620
16621 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16622
16623 /*-------------------------------------------------------------------------
16624 Extract response and send it to UMAC
16625 -------------------------------------------------------------------------*/
16626
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 (wpt_uint8*)pEventData->pEventData,
16629 sizeof(tDelStaSelfRspParams));
16630
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 wdiDelStaSelfRspParams.wdiStatus =
16632 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016633
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16636 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16637 {
16638 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 delStaSelfRspParams.selfMacAddr,
16641 &ucStaIdx);
16642 if(WDI_STATUS_E_FAILURE == wdiStatus)
16643 {
16644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016645 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 }
16649 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16650 }
16651
16652 /*Notify UMAC*/
16653 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16654
16655 return WDI_STATUS_SUCCESS;
16656}
16657
Jeff Johnsone7245742012-09-05 17:12:55 -070016658#ifdef FEATURE_OEM_DATA_SUPPORT
16659/**
16660 @brief Start Oem Data Rsp function (called when a
16661 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016662
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 @param pWDICtx: pointer to the WLAN DAL context
16664 pEventData: pointer to the event information structure
16665
16666 @see
16667 @return Result of the function call
16668*/
16669#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16670
16671WDI_Status
16672WDI_ProcessStartOemDataRsp
16673(
16674 WDI_ControlBlockType* pWDICtx,
16675 WDI_EventInfoType* pEventData
16676)
16677{
16678 WDI_oemDataRspCb wdiOemDataRspCb;
16679 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16680 tStartOemDataRspParams* halStartOemDataRspParams;
16681
16682 /*-------------------------------------------------------------------------
16683 Sanity check
16684 -------------------------------------------------------------------------*/
16685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16686 ( NULL == pEventData->pEventData))
16687 {
16688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016689 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 WDI_ASSERT(0);
16691 return WDI_STATUS_E_FAILURE;
16692 }
16693
16694 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16695
16696 /*-------------------------------------------------------------------------
16697 Extract response and send it to UMAC
16698 -------------------------------------------------------------------------*/
16699 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16700
16701
16702 //It is the responsibility of the application code to check for failure
16703 //conditions!
16704
16705 //Allocate memory for WDI OEM DATA RSP structure
16706 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16707
16708 if(NULL == wdiOemDataRspParams)
16709 {
16710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16711 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16712 pWDICtx, pEventData, pEventData->pEventData);
16713 WDI_ASSERT(0);
16714 return WDI_STATUS_E_FAILURE;
16715 }
16716
16717 /* Populate WDI structure members */
16718 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16719
16720 /*Notify UMAC*/
16721 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16722
16723 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16724 wpalMemoryFree(wdiOemDataRspParams);
16725
16726 return WDI_STATUS_SUCCESS;
16727}/*WDI_PrcoessStartOemDataRsp*/
16728#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016729
16730/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016732===========================================================================*/
16733
16734/**
16735 @brief Process Channel Switch Rsp function (called when a response
16736 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016737
16738 @param pWDICtx: pointer to the WLAN DAL context
16739 pEventData: pointer to the event information structure
16740
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 @see
16742 @return Result of the function call
16743*/
16744WDI_Status
16745WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016746(
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 WDI_ControlBlockType* pWDICtx,
16748 WDI_EventInfoType* pEventData
16749)
16750{
16751 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16752 WDI_SwitchChRspCb wdiChSwitchRspCb;
16753 tSwitchChannelRspParams halSwitchChannelRsp;
16754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16755
16756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 -------------------------------------------------------------------------*/
16759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16760 ( NULL == pEventData->pEventData))
16761 {
16762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 }
16767
16768 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16769
16770 /*-------------------------------------------------------------------------
16771 Extract response and send it to UMAC
16772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 (wpt_uint8*)pEventData->pEventData,
16775 sizeof(halSwitchChannelRsp));
16776
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 wdiSwitchChRsp.wdiStatus =
16778 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16780
16781#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016782 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016783#endif
16784
16785 /*Notify UMAC*/
16786 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16787
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016789}/*WDI_ProcessChannelSwitchRsp*/
16790
16791
16792/**
16793 @brief Process Config STA Rsp function (called when a response
16794 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016795
16796 @param pWDICtx: pointer to the WLAN DAL context
16797 pEventData: pointer to the event information structure
16798
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 @see
16800 @return Result of the function call
16801*/
16802WDI_Status
16803WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016804(
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 WDI_ControlBlockType* pWDICtx,
16806 WDI_EventInfoType* pEventData
16807)
16808{
16809 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16810 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16811 WDI_AddStaParams wdiAddSTAParam;
16812
16813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016815
Jeff Johnsone7245742012-09-05 17:12:55 -070016816 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16818
16819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 -------------------------------------------------------------------------*/
16822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16823 ( NULL == pEventData->pEventData))
16824 {
16825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 }
16830
16831 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16832
16833 /*-------------------------------------------------------------------------
16834 Extract response and send it to UMAC
16835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16837 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 sizeof(halConfigStaRsp.configStaRspParams));
16839
16840
16841 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16842 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16843 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16844 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16845 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16846
16847 /* MAC Address of STA - take from cache as it does not come back in the
16848 response*/
16849 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016852
16853 wdiCfgSTAParams.wdiStatus =
16854 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016855
16856 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16857 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16858 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16859
16860 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16861 {
16862 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16863 {
16864 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16867 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016868
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 wdiAddSTAParam.ucHTCapable =
16873 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16874 wdiAddSTAParam.ucStaType =
16875 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16876
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16879 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881
16882 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16883 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16884 WDI_MAC_ADDR_LEN);
16885
16886 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16887 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16888 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016889
16890 if ( NULL == pBSSSes )
16891 {
16892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16893 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016894
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 }
16898
16899 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 halConfigStaRsp.configStaRspParams.ucBcastSig;
16908 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16909 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016910
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16912 }
16913 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16914 {
16915 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016923 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016928 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016930 halConfigStaRsp.configStaRspParams.ucUcastSig;
16931 }
16932 }
16933
16934 /*Notify UMAC*/
16935 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16936
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016938}/*WDI_ProcessConfigStaRsp*/
16939
16940
16941/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016942 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016944
16945 @param pWDICtx: pointer to the WLAN DAL context
16946 pEventData: pointer to the event information structure
16947
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 @see
16949 @return Result of the function call
16950*/
16951WDI_Status
16952WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016953(
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 WDI_ControlBlockType* pWDICtx,
16955 WDI_EventInfoType* pEventData
16956)
16957{
16958 WDI_Status wdiStatus;
16959 eHalStatus halStatus;
16960 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16961
16962 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16965
16966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 -------------------------------------------------------------------------*/
16969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16970 ( NULL == pEventData->pEventData))
16971 {
16972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 }
16977
16978 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16979
16980 wpalMutexAcquire(&pWDICtx->wptMutex);
16981
16982 /*If the link is being transitioned to idle - the BSS is to be deleted
16983 - this type of ending a session is possible when UMAC has failed an
16984 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16987 {
16988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16992 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16993 &pBSSSes);
16994
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 /*-----------------------------------------------------------------------
16996 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -----------------------------------------------------------------------*/
16999 if ( NULL == pBSSSes )
17000 {
17001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17002 "Set link response received outside association session");
17003 }
17004 else
17005 {
17006 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17007 will be del BSS coming after this to stop the beaconing & cleaning up the
17008 sessions*/
17009 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17010 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17011 {
17012 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 -----------------------------------------------------------------------*/
17015 WDI_DeleteSession(pWDICtx, pBSSSes);
17016
17017 /*-----------------------------------------------------------------------
17018 Check to see if this association is in progress - if so disable the
17019 flag as this has ended
17020 -----------------------------------------------------------------------*/
17021 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 /*Association no longer in progress */
17024 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17025 /*Association no longer in progress - prepare pending assoc for processing*/
17026 WDI_DequeueAssocRequest(pWDICtx);
17027 }
17028 }
17029 }
17030 }
17031 /* If the link state has been set to POST ASSOC, reset the "association in
17032 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17035 {
17036 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17037 WDI_DequeueAssocRequest(pWDICtx);
17038 }
17039
17040 wpalMutexRelease(&pWDICtx->wptMutex);
17041
17042 /*-------------------------------------------------------------------------
17043 Extract response and send it to UMAC
17044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wpalMemoryCopy( &halStatus,
17046 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 sizeof(halStatus));
17048
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017050
17051 /*Notify UMAC*/
17052 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17053
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017055}/*WDI_ProcessSetLinkStateRsp*/
17056
17057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017060
17061 @param pWDICtx: pointer to the WLAN DAL context
17062 pEventData: pointer to the event information structure
17063
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 @see
17065 @return Result of the function call
17066*/
17067WDI_Status
17068WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017069(
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ControlBlockType* pWDICtx,
17071 WDI_EventInfoType* pEventData
17072)
17073{
17074 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17075 WDI_GetStatsRspCb wdiGetStatsRspCb;
17076 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017077
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17079
17080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 -------------------------------------------------------------------------*/
17083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17084 ( NULL == pEventData->pEventData))
17085 {
17086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 }
17091
17092 /*-------------------------------------------------------------------------
17093 Extract response and send it to UMAC
17094 -------------------------------------------------------------------------*/
17095 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17096
17097 /*allocate the stats response buffer */
17098 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17099 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17100 + sizeof(WDI_GetStatsRspParamsType));
17101
17102 if(NULL == wdiGetStatsRsp)
17103 {
17104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17105 "Failed to allocate memory in Get Stats Response %x %x %x ",
17106 pWDICtx, pEventData, pEventData->pEventData);
17107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 }
17110
17111 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17112
17113 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17114 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17115 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17116 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17117 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17118 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17119
17120 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17121 wpalMemoryCopy(wdiGetStatsRsp + 1,
17122 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17123 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17124
17125 /*Notify UMAC*/
17126 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17127
17128 wpalMemoryFree(wdiGetStatsRsp);
17129
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017131}/*WDI_ProcessGetStatsRsp*/
17132
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017133#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17134/**
17135 @brief Process Get Roam Rssi Rsp function (called when a response is
17136 being received over the bus from HAL)
17137
17138 @param pWDICtx: pointer to the WLAN DAL context
17139 pEventData: pointer to the event information structure
17140
17141 @see
17142 @return Result of the function call
17143*/
17144WDI_Status
17145WDI_ProcessGetRoamRssiRsp
17146(
17147 WDI_ControlBlockType* pWDICtx,
17148 WDI_EventInfoType* pEventData
17149)
17150{
17151 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17152 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17153 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17155
17156 /*-------------------------------------------------------------------------
17157 Sanity check
17158 -------------------------------------------------------------------------*/
17159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17160 ( NULL == pEventData->pEventData))
17161 {
17162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17163 "%s: Invalid parameters", __func__);
17164 WDI_ASSERT(0);
17165 return WDI_STATUS_E_FAILURE;
17166 }
17167
17168 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17169 if(NULL == wdiGetRoamRssiRspCb)
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17172 "%s: call back function is NULL", __func__);
17173 WDI_ASSERT(0);
17174 return WDI_STATUS_E_FAILURE;
17175 }
17176
17177 /*-------------------------------------------------------------------------
17178 Extract response and send it to UMAC
17179 -------------------------------------------------------------------------*/
17180 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17181 pEventData->pEventData,
17182 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17183
17184 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17185 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17186 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17187
17188 /*Notify UMAC*/
17189 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17190
17191 return WDI_STATUS_SUCCESS;
17192}/*WDI_ProcessGetRoamRssiRsp*/
17193#endif
17194
Jeff Johnson295189b2012-06-20 16:38:30 -070017195
17196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017197 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017198 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017199
17200 @param pWDICtx: pointer to the WLAN DAL context
17201 pEventData: pointer to the event information structure
17202
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 @see
17204 @return Result of the function call
17205*/
17206WDI_Status
17207WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017208(
Jeff Johnson295189b2012-06-20 16:38:30 -070017209 WDI_ControlBlockType* pWDICtx,
17210 WDI_EventInfoType* pEventData
17211)
17212{
17213 WDI_Status wdiStatus;
17214 eHalStatus halStatus;
17215 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17217
17218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 -------------------------------------------------------------------------*/
17221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17222 ( NULL == pEventData->pEventData))
17223 {
17224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 }
17229
17230 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17231
17232 /*-------------------------------------------------------------------------
17233 Extract response and send it to UMAC
17234 -------------------------------------------------------------------------*/
17235 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017236 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017237
17238 /*Notify UMAC*/
17239 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17240
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017242}/*WDI_ProcessUpdateCfgRsp*/
17243
17244
17245
17246/**
17247 @brief Process Add BA Rsp function (called when a response
17248 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017249
17250 @param pWDICtx: pointer to the WLAN DAL context
17251 pEventData: pointer to the event information structure
17252
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 @see
17254 @return Result of the function call
17255*/
17256WDI_Status
17257WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017258(
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 WDI_ControlBlockType* pWDICtx,
17260 WDI_EventInfoType* pEventData
17261)
17262{
17263 WDI_AddBARspCb wdiAddBARspCb;
17264
17265 tAddBARspParams halAddBARsp;
17266 WDI_AddBARspinfoType wdiAddBARsp;
17267
17268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17269
17270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 -------------------------------------------------------------------------*/
17273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17274 ( NULL == pEventData->pEventData))
17275 {
17276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 }
17281
17282 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17283
17284 /*-------------------------------------------------------------------------
17285 Extract response and send it to UMAC
17286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 wpalMemoryCopy( &halAddBARsp,
17288 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 sizeof(halAddBARsp));
17290
17291 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17292
Jeff Johnson43971f52012-07-17 12:26:56 -070017293 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 {
17295 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17296 }
17297
17298 /*Notify UMAC*/
17299 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17300
Jeff Johnsone7245742012-09-05 17:12:55 -070017301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017302}/*WDI_ProcessAddSessionBARsp*/
17303
17304/**
17305 @brief Process Add BA Rsp function (called when a response
17306 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017307
17308 @param pWDICtx: pointer to the WLAN DAL context
17309 pEventData: pointer to the event information structure
17310
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 @see
17312 @return Result of the function call
17313*/
17314WDI_Status
17315WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017316(
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 WDI_ControlBlockType* pWDICtx,
17318 WDI_EventInfoType* pEventData
17319)
17320{
17321 WDI_TriggerBARspCb wdiTriggerBARspCb;
17322
17323 tTriggerBARspParams* halTriggerBARsp;
17324 tTriggerBaRspCandidate* halBaCandidate;
17325 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17326 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17327 wpt_uint16 index;
17328 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017329 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17331
17332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 -------------------------------------------------------------------------*/
17335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17336 ( NULL == pEventData->pEventData))
17337 {
17338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 }
17343
17344 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17345
17346 /*-------------------------------------------------------------------------
17347 Extract response and send it to UMAC
17348 -------------------------------------------------------------------------*/
17349 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17350
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017351 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17352
17353 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17354 {
17355 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017358
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017359 if(NULL == wdiTriggerBARsp)
17360 {
17361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17362 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17363 pWDICtx, pEventData, pEventData->pEventData);
17364 WDI_ASSERT(0);
17365 return WDI_STATUS_E_FAILURE;
17366 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017367
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017368 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17369
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17373
17374 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17375 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17376
17377 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17378 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17381 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17382 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17387 }
17388 wdiTriggerBARspCandidate++;
17389 halBaCandidate++;
17390 }
17391 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017392 else
17393 {
17394 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17395
17396 if(NULL == wdiTriggerBARsp)
17397 {
17398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17399 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17400 pWDICtx, pEventData, pEventData->pEventData);
17401 WDI_ASSERT(0);
17402 return WDI_STATUS_E_FAILURE;
17403 }
17404
17405 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17406
17407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017408
17409 /*Notify UMAC*/
17410 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17411
17412 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414}/*WDI_ProcessAddSessionBARsp*/
17415
17416/**
17417 @brief Process Update Beacon Params Rsp function (called when a response
17418 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017419
17420 @param pWDICtx: pointer to the WLAN DAL context
17421 pEventData: pointer to the event information structure
17422
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 @see
17424 @return Result of the function call
17425*/
17426WDI_Status
17427WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017428(
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 WDI_ControlBlockType* pWDICtx,
17430 WDI_EventInfoType* pEventData
17431)
17432{
17433 WDI_Status wdiStatus;
17434 eHalStatus halStatus;
17435 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17437
17438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 -------------------------------------------------------------------------*/
17441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17442 ( NULL == pEventData->pEventData))
17443 {
17444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 }
17449
17450 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17451
17452 /*-------------------------------------------------------------------------
17453 Extract response and send it to UMAC
17454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wpalMemoryCopy( &halStatus,
17456 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017457 sizeof(halStatus));
17458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017460
17461 /*Notify UMAC*/
17462 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17463
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017465}/*WDI_ProcessUpdateBeaconParamsRsp*/
17466
17467/**
17468 @brief Process Send Beacon template Rsp function (called when a response
17469 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017470
17471 @param pWDICtx: pointer to the WLAN DAL context
17472 pEventData: pointer to the event information structure
17473
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 @see
17475 @return Result of the function call
17476*/
17477WDI_Status
17478WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017479(
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 WDI_ControlBlockType* pWDICtx,
17481 WDI_EventInfoType* pEventData
17482)
17483{
17484 WDI_Status wdiStatus;
17485 eHalStatus halStatus;
17486 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17488
17489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 -------------------------------------------------------------------------*/
17492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17493 ( NULL == pEventData->pEventData))
17494 {
17495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 }
17500
17501 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17502
17503 /*-------------------------------------------------------------------------
17504 Extract response and send it to UMAC
17505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 wpalMemoryCopy( &halStatus,
17507 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 sizeof(halStatus));
17509
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
17512 /*Notify UMAC*/
17513 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17514
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516}/*WDI_ProcessSendBeaconParamsRsp*/
17517
Jeff Johnsone7245742012-09-05 17:12:55 -070017518
Jeff Johnson295189b2012-06-20 16:38:30 -070017519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017522
17523 @param pWDICtx: pointer to the WLAN DAL context
17524 pEventData: pointer to the event information structure
17525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 @see
17527 @return Result of the function call
17528*/
17529WDI_Status
17530WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017531(
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 WDI_ControlBlockType* pWDICtx,
17533 WDI_EventInfoType* pEventData
17534)
17535{
17536 WDI_Status wdiStatus;
17537 eHalStatus halStatus;
17538 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17540
17541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 -------------------------------------------------------------------------*/
17544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17545 ( NULL == pEventData->pEventData))
17546 {
17547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 }
17552
17553 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17554
17555 /*-------------------------------------------------------------------------
17556 Extract response and send it to UMAC
17557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 wpalMemoryCopy( &halStatus,
17559 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 sizeof(halStatus));
17561
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563
17564 /*Notify UMAC*/
17565 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17566
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17569
17570 /**
17571 @brief Process Set Max Tx Power Rsp function (called when a response
17572 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017573
17574 @param pWDICtx: pointer to the WLAN DAL context
17575 pEventData: pointer to the event information structure
17576
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 @see
17578 @return Result of the function call
17579*/
17580WDI_Status
17581WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017582(
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 WDI_ControlBlockType* pWDICtx,
17584 WDI_EventInfoType* pEventData
17585)
17586{
17587 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017588
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017590
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17593
17594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 -------------------------------------------------------------------------*/
17597 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17598 ( NULL == pEventData->pEventData))
17599 {
17600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 }
17605
17606 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17607
17608 /*-------------------------------------------------------------------------
17609 Extract response and send it to UMAC
17610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17612 pEventData->pEventData,
17613 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017614
17615 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17616 {
17617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17618 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 }
17622
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017625 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017626
17627 /*Notify UMAC*/
17628 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17629
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017631}
17632
schangd82195a2013-03-13 18:41:24 -070017633 /**
17634 @brief Process Set Tx Power Rsp function (called when a response
17635 is being received over the bus from HAL)
17636
17637 @param pWDICtx: pointer to the WLAN DAL context
17638 pEventData: pointer to the event information structure
17639
17640 @see
17641 @return Result of the function call
17642*/
17643WDI_Status
17644WDI_ProcessSetTxPowerRsp
17645(
17646 WDI_ControlBlockType* pWDICtx,
17647 WDI_EventInfoType* pEventData
17648)
17649{
17650 tSetTxPwrRspMsg halTxpowerrsp;
17651 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17652 WDA_SetTxPowerRspCb wdiReqStatusCb;
17653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17654
17655 /*-------------------------------------------------------------------------
17656 Sanity check
17657 -------------------------------------------------------------------------*/
17658 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17659 ( NULL == pEventData->pEventData))
17660 {
17661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17662 "%s: Invalid parameters", __func__);
17663 WDI_ASSERT(0);
17664 return WDI_STATUS_E_FAILURE;
17665 }
17666
17667 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17668
17669 /*-------------------------------------------------------------------------
17670 Extract response and send it to UMAC
17671 -------------------------------------------------------------------------*/
17672 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17673 pEventData->pEventData,
17674 sizeof(halTxpowerrsp.setTxPwrRspParams));
17675
17676 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17677 {
17678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17679 "Error status returned in Set Tx Power Response ");
17680 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17681 return WDI_STATUS_E_FAILURE;
17682 }
17683
17684 wdiSetTxPowerRspMsg.wdiStatus =
17685 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17686
17687 /*Notify UMAC*/
17688 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17689
17690 return WDI_STATUS_SUCCESS;
17691}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017692#ifdef FEATURE_WLAN_TDLS
17693/**
17694 @brief Process TDLS Link Establish Rsp function (called
17695 when a response is being received over the bus from HAL)
17696
17697 @param pWDICtx: pointer to the WLAN DAL context
17698 pEventData: pointer to the event information structure
17699
17700 @see
17701 @return Result of the function call
17702*/
17703WDI_Status
17704WDI_ProcessLinkEstablishReqRsp
17705(
17706 WDI_ControlBlockType* pWDICtx,
17707 WDI_EventInfoType* pEventData
17708)
17709{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017710 eHalStatus halStatus;
17711 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017712 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
17713 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
17714
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17716
17717 /*-------------------------------------------------------------------------
17718 Sanity check
17719 -------------------------------------------------------------------------*/
17720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17721 ( NULL == pEventData->pEventData))
17722 {
17723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17724 "%s: Invalid parameters", __func__);
17725 WDI_ASSERT(0);
17726 return WDI_STATUS_E_FAILURE;
17727 }
17728
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017729 /*-------------------------------------------------------------------------
17730 Extract indication and send it to UMAC
17731 -------------------------------------------------------------------------*/
17732 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
17733 pEventData->pEventData,
17734 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
17735
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017736 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17737
17738 /*-------------------------------------------------------------------------
17739 Extract response and send it to UMAC
17740 -------------------------------------------------------------------------*/
17741 wpalMemoryCopy( &halStatus,
17742 pEventData->pEventData,
17743 sizeof(halStatus));
17744
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017745 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17746 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017747
17748 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017749 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017750
17751 return WDI_STATUS_SUCCESS;
17752}/*WDI_ProcessLinkEstablishReqRsp*/
17753#endif
schangd82195a2013-03-13 18:41:24 -070017754
Jeff Johnson295189b2012-06-20 16:38:30 -070017755/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017756 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017757 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017758
17759 @param pWDICtx: pointer to the WLAN DAL context
17760 pEventData: pointer to the event information structure
17761
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 @see
17763 @return Result of the function call
17764*/
17765WDI_Status
17766WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017767(
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 WDI_ControlBlockType* pWDICtx,
17769 WDI_EventInfoType* pEventData
17770)
17771{
17772 WDI_Status wdiStatus;
17773 eHalStatus halStatus;
17774 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17776
17777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 -------------------------------------------------------------------------*/
17780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17781 ( NULL == pEventData->pEventData))
17782 {
17783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 }
17788
17789 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17790
17791 /*-------------------------------------------------------------------------
17792 Extract response and send it to UMAC
17793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 wpalMemoryCopy( &halStatus,
17795 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017796 sizeof(halStatus));
17797
Jeff Johnsone7245742012-09-05 17:12:55 -070017798 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017799
17800 /*Notify UMAC*/
17801 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17802
Jeff Johnsone7245742012-09-05 17:12:55 -070017803 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017804}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017808
17809 @param pWDICtx: pointer to the WLAN DAL context
17810 pEventData: pointer to the event information structure
17811
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 @see
17813 @return Result of the function call
17814*/
17815WDI_Status
17816WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017817(
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 WDI_ControlBlockType* pWDICtx,
17819 WDI_EventInfoType* pEventData
17820)
17821{
17822 WDI_Status wdiStatus;
17823 eHalStatus halStatus;
17824 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017825 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17827
17828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 -------------------------------------------------------------------------*/
17831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17832 ( NULL == pEventData->pEventData))
17833 {
17834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017838 }
17839
17840 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17841
17842 /*-------------------------------------------------------------------------
17843 Extract response and send it to UMAC
17844 -------------------------------------------------------------------------*/
17845 halStatus = *((eHalStatus*)pEventData->pEventData);
17846
Jeff Johnsone7245742012-09-05 17:12:55 -070017847 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017848
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017849 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17850 * Other module states are taken care by PMC.
17851 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17852 */
17853 if (wdiStatus != WDI_STATUS_SUCCESS) {
17854
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17856 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17857 halStatus);
17858 /* Call Back is not required as we are putting the DXE in FULL
17859 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017860 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17861
17862 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17864 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17865 WDI_ASSERT(0);
17866 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017867 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 /*Notify UMAC*/
17869 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17870
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017872}/*WDI_ProcessEnterImpsRsp*/
17873
17874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017875 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017877
17878 @param pWDICtx: pointer to the WLAN DAL context
17879 pEventData: pointer to the event information structure
17880
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 @see
17882 @return Result of the function call
17883*/
17884WDI_Status
17885WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017886(
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 WDI_ControlBlockType* pWDICtx,
17888 WDI_EventInfoType* pEventData
17889)
17890{
17891 WDI_Status wdiStatus;
17892 eHalStatus halStatus;
17893 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017894 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17896
17897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 -------------------------------------------------------------------------*/
17900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17901 ( NULL == pEventData->pEventData))
17902 {
17903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 }
17908
17909 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17910
17911 /*-------------------------------------------------------------------------
17912 Extract response and send it to UMAC
17913 -------------------------------------------------------------------------*/
17914 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017916
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053017917 if (halStatus != eHAL_STATUS_SUCCESS)
17918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17919 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
17920
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017922 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17923 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17924 {
17925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17926 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17927 WDI_ASSERT(0);
17928 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 /*Notify UMAC*/
17930 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17931
Jeff Johnsone7245742012-09-05 17:12:55 -070017932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017933}/*WDI_ProcessExitImpsRsp*/
17934
17935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017938
17939 @param pWDICtx: pointer to the WLAN DAL context
17940 pEventData: pointer to the event information structure
17941
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 @see
17943 @return Result of the function call
17944*/
17945WDI_Status
17946WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017947(
Jeff Johnson295189b2012-06-20 16:38:30 -070017948 WDI_ControlBlockType* pWDICtx,
17949 WDI_EventInfoType* pEventData
17950)
17951{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017952 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17953 tHalEnterBmpsRspParams halEnterBmpsRsp;
17954 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17955 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017956 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17958
17959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 -------------------------------------------------------------------------*/
17962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17963 ( NULL == pEventData->pEventData))
17964 {
17965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017969 }
17970
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017972 Extract response and send it to UMAC
17973 -------------------------------------------------------------------------*/
17974 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17975 {
17976 wpalMemoryCopy( &halEnterBmpsRsp,
17977 pEventData->pEventData,
17978 sizeof(halEnterBmpsRsp));
17979
17980 //Used to print debug message
17981 halStatus = halEnterBmpsRsp.status;
17982 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17983 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17984 }
17985 else
17986 {
17987 halStatus = *((eHalStatus*)pEventData->pEventData);
17988 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17989 }
17990
17991 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017992
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017993 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17994 * Other module states are taken care by PMC.
17995 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17996 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017997 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17998 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018001 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18002 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018003 /* Call Back is not required as we are putting the DXE in FULL
18004 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018005 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18006 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18007 {
18008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18009 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18010 WDI_ASSERT(0);
18011 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018012 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018013 }
18014
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018016 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018017
Jeff Johnsone7245742012-09-05 17:12:55 -070018018 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018019}/*WDI_ProcessEnterBmpsRsp*/
18020
18021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018022 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018023 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018024
18025 @param pWDICtx: pointer to the WLAN DAL context
18026 pEventData: pointer to the event information structure
18027
Jeff Johnson295189b2012-06-20 16:38:30 -070018028 @see
18029 @return Result of the function call
18030*/
18031WDI_Status
18032WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018033(
Jeff Johnson295189b2012-06-20 16:38:30 -070018034 WDI_ControlBlockType* pWDICtx,
18035 WDI_EventInfoType* pEventData
18036)
18037{
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 eHalStatus halStatus;
18039 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018040 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018041 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18042 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18044
18045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 -------------------------------------------------------------------------*/
18048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18049 ( NULL == pEventData->pEventData))
18050 {
18051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 }
18056
18057 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18058
18059 /*-------------------------------------------------------------------------
18060 Extract response and send it to UMAC
18061 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018062
18063 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18064 {
18065 wpalMemoryCopy( &halExitBmpsRsp,
18066 pEventData->pEventData,
18067 sizeof(halExitBmpsRsp));
18068
18069 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18070 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18071 }
18072 else
18073 {
18074 halStatus = *((eHalStatus*)pEventData->pEventData);
18075 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18076 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018077
18078 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018079 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18080 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18081 {
18082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18083 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18084 WDI_ASSERT(0);
18085 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18087
18088 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018089 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018090
Jeff Johnsone7245742012-09-05 17:12:55 -070018091 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018092}/*WDI_ProcessExitBmpsRsp*/
18093
18094/**
18095 @brief Process Enter UAPSD Rsp function (called when a response
18096 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018097
18098 @param pWDICtx: pointer to the WLAN DAL context
18099 pEventData: pointer to the event information structure
18100
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 @see
18102 @return Result of the function call
18103*/
18104WDI_Status
18105WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018106(
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 WDI_ControlBlockType* pWDICtx,
18108 WDI_EventInfoType* pEventData
18109)
18110{
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018112 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018114 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18115
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18117
18118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 -------------------------------------------------------------------------*/
18121 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18122 ( NULL == pEventData->pEventData))
18123 {
18124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018125 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 }
18129
18130 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18131
18132 /*-------------------------------------------------------------------------
18133 Extract response and send it to UMAC
18134 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018135 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18136 {
18137 wpalMemoryCopy( &halEnterUapsdRsp,
18138 pEventData->pEventData,
18139 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018140
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018141 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18142 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18143 }
18144 else
18145 {
18146 halStatus = *((eHalStatus*)pEventData->pEventData);
18147 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18148 }
18149
18150 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 {
18152 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18153 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18154 // the traffic to decide when to suspend the trigger frames when there is no traffic
18155 // activity on the trigger enabled ACs
18156 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18157
18158#ifdef WLAN_PERF
18159 // Increment the BD signature to refresh the fast path BD utilization
18160 pWDICtx->uBdSigSerialNum++;
18161#endif
18162 }
18163
18164 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018165 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018166
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018168}/*WDI_ProcessEnterUapsdRsp*/
18169
18170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018173
18174 @param pWDICtx: pointer to the WLAN DAL context
18175 pEventData: pointer to the event information structure
18176
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 @see
18178 @return Result of the function call
18179*/
18180WDI_Status
18181WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018182(
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 WDI_ControlBlockType* pWDICtx,
18184 WDI_EventInfoType* pEventData
18185)
18186{
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 eHalStatus halStatus;
18188 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018189 tHalExitUapsdRspParams halExitUapsdRsp;
18190 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18192
18193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 -------------------------------------------------------------------------*/
18196 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18197 ( NULL == pEventData->pEventData))
18198 {
18199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 }
18204
18205 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18206
18207 /*-------------------------------------------------------------------------
18208 Extract response and send it to UMAC
18209 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018210 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18211 {
18212 wpalMemoryCopy( &halExitUapsdRsp,
18213 pEventData->pEventData,
18214 sizeof(halExitUapsdRsp));
18215
18216 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18217 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18218 }
18219 else
18220 {
18221 halStatus = *((eHalStatus*)pEventData->pEventData);
18222 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18223 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18225 // directly instead of the FW WQ.
18226 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18227
18228#ifdef WLAN_PERF
18229 // Increment the BD signature to refresh the fast path BD utilization
18230 pWDICtx->uBdSigSerialNum++;
18231#endif
18232
18233 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018234 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018235
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018237}/*WDI_ProcessExitUapsdRsp*/
18238
18239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018242
18243 @param pWDICtx: pointer to the WLAN DAL context
18244 pEventData: pointer to the event information structure
18245
Jeff Johnson295189b2012-06-20 16:38:30 -070018246 @see
18247 @return Result of the function call
18248*/
18249WDI_Status
18250WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018251(
Jeff Johnson295189b2012-06-20 16:38:30 -070018252 WDI_ControlBlockType* pWDICtx,
18253 WDI_EventInfoType* pEventData
18254)
18255{
18256 WDI_Status wdiStatus;
18257 eHalStatus halStatus;
18258 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18260
18261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018263 -------------------------------------------------------------------------*/
18264 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18265 ( NULL == pEventData->pEventData))
18266 {
18267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 }
18272
18273 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18274
18275 /*-------------------------------------------------------------------------
18276 Extract response and send it to UMAC
18277 -------------------------------------------------------------------------*/
18278 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018280
18281 /*Notify UMAC*/
18282 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18283
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018285}/*WDI_ProcessSetUapsdAcParamsRsp*/
18286
18287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018288 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018289 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018290
18291 @param pWDICtx: pointer to the WLAN DAL context
18292 pEventData: pointer to the event information structure
18293
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 @see
18295 @return Result of the function call
18296*/
18297WDI_Status
18298WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018299(
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 WDI_ControlBlockType* pWDICtx,
18301 WDI_EventInfoType* pEventData
18302)
18303{
18304 WDI_Status wdiStatus;
18305 eHalStatus halStatus;
18306 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18308
18309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018311 -------------------------------------------------------------------------*/
18312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18313 ( NULL == pEventData->pEventData))
18314 {
18315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018319 }
18320
18321 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18322
18323 /*-------------------------------------------------------------------------
18324 Extract response and send it to UMAC
18325 -------------------------------------------------------------------------*/
18326 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018328
18329 /*Notify UMAC*/
18330 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18331
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018333}/*WDI_ProcessUpdateUapsdParamsRsp*/
18334
18335/**
18336 @brief Process Configure RXP filter Rsp function (called when a
18337 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018338
18339 @param pWDICtx: pointer to the WLAN DAL context
18340 pEventData: pointer to the event information structure
18341
Jeff Johnson295189b2012-06-20 16:38:30 -070018342 @see
18343 @return Result of the function call
18344*/
18345WDI_Status
18346WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018347(
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 WDI_ControlBlockType* pWDICtx,
18349 WDI_EventInfoType* pEventData
18350)
18351{
18352 WDI_Status wdiStatus;
18353 eHalStatus halStatus;
18354 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18356
18357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018358 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 -------------------------------------------------------------------------*/
18360 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18361 ( NULL == pEventData->pEventData))
18362 {
18363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018364 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018367 }
18368
18369 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18370
18371 /*-------------------------------------------------------------------------
18372 Extract response and send it to UMAC
18373 -------------------------------------------------------------------------*/
18374 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018376
18377 /*Notify UMAC*/
18378 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18379
Jeff Johnsone7245742012-09-05 17:12:55 -070018380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018381}/*WDI_ProcessConfigureRxpFilterRsp*/
18382
18383/**
18384 @brief Process Set beacon filter Rsp function (called when a
18385 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018386
18387 @param pWDICtx: pointer to the WLAN DAL context
18388 pEventData: pointer to the event information structure
18389
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 @see
18391 @return Result of the function call
18392*/
18393WDI_Status
18394WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018395(
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 WDI_ControlBlockType* pWDICtx,
18397 WDI_EventInfoType* pEventData
18398)
18399{
18400 WDI_Status wdiStatus;
18401 eHalStatus halStatus;
18402 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18404
18405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 -------------------------------------------------------------------------*/
18408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18409 ( NULL == pEventData->pEventData))
18410 {
18411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 }
18416
18417 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18418
18419 /*-------------------------------------------------------------------------
18420 Extract response and send it to UMAC
18421 -------------------------------------------------------------------------*/
18422 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018424
18425 /*Notify UMAC*/
18426 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18427
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018429}/*WDI_ProcessSetBeaconFilterRsp*/
18430
18431/**
18432 @brief Process remove beacon filter Rsp function (called when a
18433 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018434
18435 @param pWDICtx: pointer to the WLAN DAL context
18436 pEventData: pointer to the event information structure
18437
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 @see
18439 @return Result of the function call
18440*/
18441WDI_Status
18442WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018443(
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 WDI_ControlBlockType* pWDICtx,
18445 WDI_EventInfoType* pEventData
18446)
18447{
18448 WDI_Status wdiStatus;
18449 eHalStatus halStatus;
18450 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18452
18453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 -------------------------------------------------------------------------*/
18456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18457 ( NULL == pEventData->pEventData))
18458 {
18459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 }
18464
18465 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18466
18467 /*-------------------------------------------------------------------------
18468 Extract response and send it to UMAC
18469 -------------------------------------------------------------------------*/
18470 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018472
18473 /*Notify UMAC*/
18474 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18475
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018477}/*WDI_ProcessRemBeaconFilterRsp*/
18478
18479/**
18480 @brief Process set RSSI thresholds Rsp function (called when a
18481 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018482
18483 @param pWDICtx: pointer to the WLAN DAL context
18484 pEventData: pointer to the event information structure
18485
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 @see
18487 @return Result of the function call
18488*/
18489WDI_Status
18490WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018491(
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 WDI_ControlBlockType* pWDICtx,
18493 WDI_EventInfoType* pEventData
18494)
18495{
18496 WDI_Status wdiStatus;
18497 eHalStatus halStatus;
18498 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18500
18501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018502 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 -------------------------------------------------------------------------*/
18504 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18505 ( NULL == pEventData->pEventData))
18506 {
18507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 }
18512
18513 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18514
18515 /*-------------------------------------------------------------------------
18516 Extract response and send it to UMAC
18517 -------------------------------------------------------------------------*/
18518 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018519 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018520
18521 /*Notify UMAC*/
18522 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18523
Jeff Johnsone7245742012-09-05 17:12:55 -070018524 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018525}/*WDI_ProcessSetRSSIThresoldsRsp*/
18526
18527/**
18528 @brief Process host offload Rsp function (called when a
18529 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018530
18531 @param pWDICtx: pointer to the WLAN DAL context
18532 pEventData: pointer to the event information structure
18533
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 @see
18535 @return Result of the function call
18536*/
18537WDI_Status
18538WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018539(
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 WDI_ControlBlockType* pWDICtx,
18541 WDI_EventInfoType* pEventData
18542)
18543{
18544 WDI_Status wdiStatus;
18545 eHalStatus halStatus;
18546 WDI_HostOffloadCb wdiHostOffloadCb;
18547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18548
18549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 -------------------------------------------------------------------------*/
18552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18553 ( NULL == pEventData->pEventData))
18554 {
18555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 }
18560
18561 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18562
18563 /*-------------------------------------------------------------------------
18564 Extract response and send it to UMAC
18565 -------------------------------------------------------------------------*/
18566 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018568
18569 /*Notify UMAC*/
18570 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18571
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573}/*WDI_ProcessHostOffloadRsp*/
18574
18575/**
18576 @brief Process keep alive Rsp function (called when a
18577 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018578
18579 @param pWDICtx: pointer to the WLAN DAL context
18580 pEventData: pointer to the event information structure
18581
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 @see
18583 @return Result of the function call
18584*/
18585WDI_Status
18586WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018587(
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 WDI_ControlBlockType* pWDICtx,
18589 WDI_EventInfoType* pEventData
18590)
18591{
18592 WDI_Status wdiStatus;
18593 eHalStatus halStatus;
18594 WDI_KeepAliveCb wdiKeepAliveCb;
18595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18597 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18598
18599
18600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 -------------------------------------------------------------------------*/
18603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18604 ( NULL == pEventData->pEventData))
18605 {
18606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 }
18611
Jeff Johnsone7245742012-09-05 17:12:55 -070018612 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18613
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 /*-------------------------------------------------------------------------
18615 Extract response and send it to UMAC
18616 -------------------------------------------------------------------------*/
18617 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018619
18620 /*Notify UMAC*/
18621 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18622
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018624}/*WDI_ProcessKeepAliveRsp*/
18625
18626/**
18627 @brief Process wowl add ptrn Rsp function (called when a
18628 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018629
18630 @param pWDICtx: pointer to the WLAN DAL context
18631 pEventData: pointer to the event information structure
18632
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 @see
18634 @return Result of the function call
18635*/
18636WDI_Status
18637WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018638(
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 WDI_ControlBlockType* pWDICtx,
18640 WDI_EventInfoType* pEventData
18641)
18642{
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 eHalStatus halStatus;
18644 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018645 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18646 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18647
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18649
18650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 -------------------------------------------------------------------------*/
18653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18654 ( NULL == pEventData->pEventData))
18655 {
18656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 }
18661
18662 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18663
18664 /*-------------------------------------------------------------------------
18665 Extract response and send it to UMAC
18666 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018667 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18668 {
18669 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18670 pEventData->pEventData,
18671 sizeof(halAddWowlBcastPtrRsp));
18672
18673 wdiWowlAddBcPtrRsp.wdiStatus =
18674 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18675 }
18676 else
18677 {
18678 halStatus = *((eHalStatus*)pEventData->pEventData);
18679 wdiWowlAddBcPtrRsp.wdiStatus =
18680 WDI_HAL_2_WDI_STATUS(halStatus);
18681 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018682
18683 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018684 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018685
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018687}/*WDI_ProcessWowlAddBcPtrnRsp*/
18688
18689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018692
18693 @param pWDICtx: pointer to the WLAN DAL context
18694 pEventData: pointer to the event information structure
18695
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 @see
18697 @return Result of the function call
18698*/
18699WDI_Status
18700WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018701(
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 WDI_ControlBlockType* pWDICtx,
18703 WDI_EventInfoType* pEventData
18704)
18705{
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 eHalStatus halStatus;
18707 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018708 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18709 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18711
18712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018714 -------------------------------------------------------------------------*/
18715 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18716 ( NULL == pEventData->pEventData))
18717 {
18718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018722 }
18723
18724 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18725
18726 /*-------------------------------------------------------------------------
18727 Extract response and send it to UMAC
18728 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018729 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18730 {
18731 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18732 pEventData->pEventData,
18733 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018734
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018735 wdiWowlDelBcstPtrRsp.wdiStatus =
18736 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18737 }
18738 else
18739 {
18740 halStatus = *((eHalStatus*)pEventData->pEventData);
18741 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18742 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018744 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018745
Jeff Johnsone7245742012-09-05 17:12:55 -070018746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018747}/*WDI_ProcessWowlDelBcPtrnRsp*/
18748
18749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018750 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018752
18753 @param pWDICtx: pointer to the WLAN DAL context
18754 pEventData: pointer to the event information structure
18755
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 @see
18757 @return Result of the function call
18758*/
18759WDI_Status
18760WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018761(
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 WDI_ControlBlockType* pWDICtx,
18763 WDI_EventInfoType* pEventData
18764)
18765{
Jeff Johnson295189b2012-06-20 16:38:30 -070018766 eHalStatus halStatus;
18767 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018768 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18769 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18771
18772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018774 -------------------------------------------------------------------------*/
18775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18776 ( NULL == pEventData->pEventData))
18777 {
18778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018782 }
18783
18784 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18785
18786 /*-------------------------------------------------------------------------
18787 Extract response and send it to UMAC
18788 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018789 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18790 {
18791 wpalMemoryCopy( &halEnterWowlRspParams,
18792 (wpt_uint8*)pEventData->pEventData,
18793 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018794
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018795 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18796 wdiwowlEnterRsp.status =
18797 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18798 }
18799 else
18800 {
18801 halStatus = *((eHalStatus*)pEventData->pEventData);
18802 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18803 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018805 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018806
Jeff Johnsone7245742012-09-05 17:12:55 -070018807 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018808}/*WDI_ProcessWowlEnterRsp*/
18809
18810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018812 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018813
18814 @param pWDICtx: pointer to the WLAN DAL context
18815 pEventData: pointer to the event information structure
18816
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 @see
18818 @return Result of the function call
18819*/
18820WDI_Status
18821WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018822(
Jeff Johnson295189b2012-06-20 16:38:30 -070018823 WDI_ControlBlockType* pWDICtx,
18824 WDI_EventInfoType* pEventData
18825)
18826{
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 eHalStatus halStatus;
18828 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018829 tHalExitWowlRspParams halExitWowlRspParams;
18830 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18831
Jeff Johnson295189b2012-06-20 16:38:30 -070018832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18833
18834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018836 -------------------------------------------------------------------------*/
18837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18838 ( NULL == pEventData->pEventData))
18839 {
18840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018844 }
18845
18846 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18847
18848 /*-------------------------------------------------------------------------
18849 Extract response and send it to UMAC
18850 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018851 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18852 {
18853 wpalMemoryCopy( &halExitWowlRspParams,
18854 pEventData->pEventData,
18855 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018856
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018857 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18858 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18859
18860 }
18861 else
18862 {
18863 halStatus = *((eHalStatus*)pEventData->pEventData);
18864 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18865 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018867 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018868
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018870}/*WDI_ProcessWowlExitRsp*/
18871
18872/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018873 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018874 (called when a response is being received over the bus
18875 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018876
18877 @param pWDICtx: pointer to the WLAN DAL context
18878 pEventData: pointer to the event information structure
18879
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 @see
18881 @return Result of the function call
18882*/
18883WDI_Status
18884WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018885(
Jeff Johnson295189b2012-06-20 16:38:30 -070018886 WDI_ControlBlockType* pWDICtx,
18887 WDI_EventInfoType* pEventData
18888)
18889{
18890 WDI_Status wdiStatus;
18891 eHalStatus halStatus;
18892 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18894
18895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018896 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 -------------------------------------------------------------------------*/
18898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18899 ( NULL == pEventData->pEventData))
18900 {
18901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 }
18906
18907 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18908
18909 /*-------------------------------------------------------------------------
18910 Extract response and send it to UMAC
18911 -------------------------------------------------------------------------*/
18912 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018913 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018914
18915 /*Notify UMAC*/
18916 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18917
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018919}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18920
18921
18922/**
18923 @brief Process Nv download(called when a response
18924 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018925
18926 @param pWDICtx: pointer to the WLAN DAL context
18927 pEventData: pointer to the event information structure
18928
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 @see
18930 @return Result of the function call
18931*/
18932WDI_Status
18933WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018934(
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 WDI_ControlBlockType* pWDICtx,
18936 WDI_EventInfoType* pEventData
18937)
18938{
18939
18940 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18941 tHalNvImgDownloadRspParams halNvDownloadRsp;
18942 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18943
18944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 -------------------------------------------------------------------------*/
18947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18948 ( NULL == pEventData->pEventData))
18949 {
18950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 }
18955
18956 /*-------------------------------------------------------------------------
18957 Extract response and send it to UMAC
18958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 wpalMemoryCopy( &halNvDownloadRsp,
18960 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 sizeof(halNvDownloadRsp));
18962
18963 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18964
18965 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18967 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 {
18969 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018970 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 }
18972 else
18973 {
18974 /*Reset the Nv related global information in WDI context information */
18975 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18976 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18977 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18978 /*call WDA callback function for last fragment */
18979 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18980 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18981 }
18982
Jeff Johnsone7245742012-09-05 17:12:55 -070018983 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018984}
18985#ifdef WLAN_FEATURE_VOWIFI_11R
18986/**
18987 @brief Process Add TSpec Rsp function (called when a response
18988 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018989
18990 @param pWDICtx: pointer to the WLAN DAL context
18991 pEventData: pointer to the event information structure
18992
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 @see
18994 @return Result of the function call
18995*/
18996WDI_Status
18997WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018998(
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 WDI_ControlBlockType* pWDICtx,
19000 WDI_EventInfoType* pEventData
19001)
19002{
19003 WDI_Status wdiStatus;
19004 tAggrAddTsRspParams aggrAddTsRsp;
19005 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19007
19008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 -------------------------------------------------------------------------*/
19011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19012 ( NULL == pEventData->pEventData))
19013 {
19014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 }
19019
19020 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19021
19022 /*-------------------------------------------------------------------------
19023 Extract response and send it to UMAC
19024 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 wpalMemoryCopy( &aggrAddTsRsp,
19026 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 sizeof(aggrAddTsRsp));
19028
19029 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019030 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019031
19032 /*Notify UMAC*/
19033 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19034
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019036}/*WDI_ProcessAddTSpecRsp*/
19037#endif /* WLAN_FEATURE_VOWIFI_11R */
19038
19039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019042
19043 @param pWDICtx: pointer to the WLAN DAL context
19044 pEventData: pointer to the event information structure
19045
Jeff Johnson295189b2012-06-20 16:38:30 -070019046 @see
19047 @return Result of the function call
19048*/
19049WDI_Status
19050WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019051(
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 WDI_ControlBlockType* pWDICtx,
19053 WDI_EventInfoType* pEventData
19054)
19055{
19056 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19057 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19058 tHalHostResumeRspParams hostResumeRspMsg;
19059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19060
19061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 -------------------------------------------------------------------------*/
19064 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19065 ( NULL == pEventData->pEventData))
19066 {
19067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 }
19072
19073 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19074
19075 /*-------------------------------------------------------------------------
19076 Extract response and send it to UMAC
19077 -------------------------------------------------------------------------*/
19078
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 (wpt_uint8*)pEventData->pEventData,
19081 sizeof(hostResumeRspMsg));
19082
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 wdiResumeRspParams.wdiStatus =
19084 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019085
19086 /*Notify UMAC*/
19087 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19088
19089 return WDI_STATUS_SUCCESS;
19090}
19091
19092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019094 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019095
19096 @param pWDICtx: pointer to the WLAN DAL context
19097 pEventData: pointer to the event information structure
19098
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 @see
19100 @return Result of the function call
19101*/
19102WDI_Status
19103WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019104(
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 WDI_ControlBlockType* pWDICtx,
19106 WDI_EventInfoType* pEventData
19107)
19108{
19109 WDI_Status wdiStatus;
19110 eHalStatus halStatus;
19111 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19113
19114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 -------------------------------------------------------------------------*/
19117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19118 ( NULL == pEventData->pEventData))
19119 {
19120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019125
19126 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019127
19128 /*-------------------------------------------------------------------------
19129 Extract response and send it to UMAC
19130 -------------------------------------------------------------------------*/
19131 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019132 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019133
19134 /*Notify UMAC*/
19135 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19136
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019138}/*WDI_ProcessSetTxPerTrackingRsp*/
19139
19140/*==========================================================================
19141 Indications from HAL
19142 ==========================================================================*/
19143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019144 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 indication of this kind is being received over the bus
19146 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019147
19148 @param pWDICtx: pointer to the WLAN DAL context
19149 pEventData: pointer to the event information structure
19150
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 @see
19152 @return Result of the function call
19153*/
19154WDI_Status
19155WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019156(
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 WDI_ControlBlockType* pWDICtx,
19158 WDI_EventInfoType* pEventData
19159)
19160{
19161 WDI_LowLevelIndType wdiInd;
19162 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19164
19165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019167 -------------------------------------------------------------------------*/
19168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19169 ( NULL == pEventData->pEventData))
19170 {
19171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 }
19176
19177 /*-------------------------------------------------------------------------
19178 Extract indication and send it to UMAC
19179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19181 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019182 sizeof(tHalRSSINotification));
19183
19184 /*Fill in the indication parameters*/
19185 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19186 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19187 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19188 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19189 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19190 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19191 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19192 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19193 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19194 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19195 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19196 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19197 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019198 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19199 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019200
ltimariu034f7d62013-01-24 18:54:33 -080019201 if ( pWDICtx->wdiLowLevelIndCB )
19202 {
19203 /*Notify UMAC of indication*/
19204 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19205 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019206
19207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019208}/*WDI_ProcessLowRSSIInd*/
19209
19210
19211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 an indication of this kind is being received over the
19214 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019215
19216 @param pWDICtx: pointer to the WLAN DAL context
19217 pEventData: pointer to the event information structure
19218
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 @see
19220 @return Result of the function call
19221*/
19222WDI_Status
19223WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019224(
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 WDI_ControlBlockType* pWDICtx,
19226 WDI_EventInfoType* pEventData
19227)
19228{
19229 WDI_Status wdiStatus;
19230 eHalStatus halStatus;
19231 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019232 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19234
19235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019237 -------------------------------------------------------------------------*/
19238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19239 ( NULL == pEventData->pEventData))
19240 {
19241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019246 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 /*-------------------------------------------------------------------------
19248 Extract indication and send it to UMAC
19249 -------------------------------------------------------------------------*/
19250 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19251 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019253
19254 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019255 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019256 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19257 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019258 if ( pWDICtx->wdiLowLevelIndCB )
19259 {
19260 /*Notify UMAC*/
19261 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19262 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019263
19264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019265}/*WDI_ProcessMissedBeaconInd*/
19266
19267
19268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 an indication of this kind is being received over the
19271 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019272
19273 @param pWDICtx: pointer to the WLAN DAL context
19274 pEventData: pointer to the event information structure
19275
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 @see
19277 @return Result of the function call
19278*/
19279WDI_Status
19280WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019281(
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 WDI_ControlBlockType* pWDICtx,
19283 WDI_EventInfoType* pEventData
19284)
19285{
19286 WDI_Status wdiStatus;
19287 eHalStatus halStatus;
19288 WDI_LowLevelIndType wdiInd;
19289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19290
19291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 -------------------------------------------------------------------------*/
19294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19295 ( NULL == pEventData->pEventData))
19296 {
19297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019301 }
19302
19303 /*-------------------------------------------------------------------------
19304 Extract indication and send it to UMAC
19305 -------------------------------------------------------------------------*/
19306 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19307 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019308 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019309
19310 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019311 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 /* ! TO DO - fill in from HAL struct:
19313 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19314
ltimariu034f7d62013-01-24 18:54:33 -080019315 if ( pWDICtx->wdiLowLevelIndCB )
19316 {
19317 /*Notify UMAC*/
19318 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19319 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019320
19321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019322}/*WDI_ProcessUnkAddrFrameInd*/
19323
19324
19325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 indication of this kind is being received over the bus
19328 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019329
19330 @param pWDICtx: pointer to the WLAN DAL context
19331 pEventData: pointer to the event information structure
19332
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 @see
19334 @return Result of the function call
19335*/
19336WDI_Status
19337WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019338(
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 WDI_ControlBlockType* pWDICtx,
19340 WDI_EventInfoType* pEventData
19341)
19342{
19343 WDI_LowLevelIndType wdiInd;
19344 tpSirMicFailureInd pHalMicFailureInd;
19345
19346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19347
19348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 -------------------------------------------------------------------------*/
19351 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19352 ( NULL == pEventData->pEventData))
19353 {
19354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019359
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19361 /*-------------------------------------------------------------------------
19362 Extract indication and send it to UMAC
19363 -------------------------------------------------------------------------*/
19364
19365 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019366 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019367 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19368 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19369 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19370 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19371 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19372 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19373 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19374 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019379 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 pHalMicFailureInd->info.keyId;
19381 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19382 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19383 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19384 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019385
19386 if ( pWDICtx->wdiLowLevelIndCB )
19387 {
19388 /*Notify UMAC*/
19389 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19390 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019391
19392 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019393}/*WDI_ProcessMicFailureInd*/
19394
19395
19396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 an indication of this kind is being received over the
19399 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019400
19401 @param pWDICtx: pointer to the WLAN DAL context
19402 pEventData: pointer to the event information structure
19403
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 @see
19405 @return Result of the function call
19406*/
19407WDI_Status
19408WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019409(
Jeff Johnson295189b2012-06-20 16:38:30 -070019410 WDI_ControlBlockType* pWDICtx,
19411 WDI_EventInfoType* pEventData
19412)
19413{
19414 WDI_Status wdiStatus;
19415 eHalStatus halStatus;
19416 WDI_LowLevelIndType wdiInd;
19417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19418
19419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 -------------------------------------------------------------------------*/
19422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19423 ( NULL == pEventData->pEventData))
19424 {
19425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 }
19430
19431 /*-------------------------------------------------------------------------
19432 Extract indication and send it to UMAC
19433 -------------------------------------------------------------------------*/
19434
19435 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19436 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019438
19439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19440 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019441
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019443 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19444 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019445
ltimariu034f7d62013-01-24 18:54:33 -080019446 if ( pWDICtx->wdiLowLevelIndCB )
19447 {
19448 /*Notify UMAC*/
19449 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19450 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019451
19452 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019453}/*WDI_ProcessFatalErrorInd*/
19454
19455/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019456 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 an indication of this kind is being received over the
19458 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019459
19460 @param pWDICtx: pointer to the WLAN DAL context
19461 pEventData: pointer to the event information structure
19462
Jeff Johnson295189b2012-06-20 16:38:30 -070019463 @see
19464 @return Result of the function call
19465*/
19466WDI_Status
19467WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019468(
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 WDI_ControlBlockType* pWDICtx,
19470 WDI_EventInfoType* pEventData
19471)
19472{
19473 tDeleteStaContextParams halDelSTACtx;
19474 WDI_LowLevelIndType wdiInd;
19475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19476
19477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 -------------------------------------------------------------------------*/
19480 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19481 ( NULL == pEventData->pEventData))
19482 {
19483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019487 }
19488
19489 /*-------------------------------------------------------------------------
19490 Extract indication and send it to UMAC
19491 -------------------------------------------------------------------------*/
19492
19493 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019494 wpalMemoryCopy( &halDelSTACtx,
19495 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019496 sizeof(halDelSTACtx));
19497
19498 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019499 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019500
19501 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19502 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19503 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19504 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19505
Jeff Johnsone7245742012-09-05 17:12:55 -070019506 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019507 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019508 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19511 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019512
ltimariu034f7d62013-01-24 18:54:33 -080019513 if ( pWDICtx->wdiLowLevelIndCB )
19514 {
19515 /*Notify UMAC*/
19516 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19517 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019518
19519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019520}/*WDI_ProcessDelSTAInd*/
19521
19522/**
19523*@brief Process Coex Indication function (called when
19524 an indication of this kind is being received over the
19525 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019526
19527 @param pWDICtx: pointer to the WLAN DAL context
19528 pEventData: pointer to the event information structure
19529
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 @see
19531 @return Result of the function call
19532*/
19533WDI_Status
19534WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019535(
Jeff Johnson295189b2012-06-20 16:38:30 -070019536 WDI_ControlBlockType* pWDICtx,
19537 WDI_EventInfoType* pEventData
19538)
19539{
19540 WDI_LowLevelIndType wdiInd;
19541 tCoexIndMsg halCoexIndMsg;
19542 wpt_uint32 index;
19543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19544
19545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 -------------------------------------------------------------------------*/
19548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19549 ( NULL == pEventData->pEventData ))
19550 {
19551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 }
19556
19557 /*-------------------------------------------------------------------------
19558 Extract indication and send it to UMAC
19559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019560 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19561 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019562 sizeof(halCoexIndMsg.coexIndParams) );
19563
19564 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 wdiInd.wdiIndicationType = WDI_COEX_IND;
19566 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19568 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019569 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019570 }
19571
19572 // DEBUG
19573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19574 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19576 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19577 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19578 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19579 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019580
ltimariu034f7d62013-01-24 18:54:33 -080019581 if ( pWDICtx->wdiLowLevelIndCB )
19582 {
19583 /*Notify UMAC*/
19584 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19585 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019586
19587 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019588}/*WDI_ProcessCoexInd*/
19589
19590/**
19591*@brief Process Tx Complete Indication function (called when
19592 an indication of this kind is being received over the
19593 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019594
19595 @param pWDICtx: pointer to the WLAN DAL context
19596 pEventData: pointer to the event information structure
19597
Jeff Johnson295189b2012-06-20 16:38:30 -070019598 @see
19599 @return Result of the function call
19600*/
19601WDI_Status
19602WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019603(
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 WDI_ControlBlockType* pWDICtx,
19605 WDI_EventInfoType* pEventData
19606)
19607{
19608 WDI_LowLevelIndType wdiInd;
19609 tTxComplIndMsg halTxComplIndMsg;
19610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19611
19612 /*-------------------------------------------------------------------------
19613 Sanity check
19614 -------------------------------------------------------------------------*/
19615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19616 ( NULL == pEventData->pEventData ))
19617 {
19618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 WDI_ASSERT( 0 );
19621 return WDI_STATUS_E_FAILURE;
19622 }
19623
19624 /*-------------------------------------------------------------------------
19625 Extract indication and send it to UMAC
19626 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019627 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19628 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 sizeof(halTxComplIndMsg.txComplParams) );
19630
19631 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19633 wdiInd.wdiIndicationData.tx_complete_status
19634 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019635
ltimariu034f7d62013-01-24 18:54:33 -080019636 if ( pWDICtx->wdiLowLevelIndCB )
19637 {
19638 /*Notify UMAC*/
19639 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19640 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019641
19642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019643}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019644#ifdef FEATURE_WLAN_TDLS
19645/**
19646*@brief Process TDLS Indication function (called when
19647 an indication of this kind is being received over the
19648 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019649
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019650 @param pWDICtx: pointer to the WLAN DAL context
19651 pEventData: pointer to the event information structure
19652
19653 @see
19654 @return Result of the function call
19655*/
19656WDI_Status
19657WDI_ProcessTdlsInd
19658(
19659 WDI_ControlBlockType* pWDICtx,
19660 WDI_EventInfoType* pEventData
19661)
19662{
19663 WDI_LowLevelIndType wdiInd;
19664 tTdlsIndMsg halTdlsIndMsg;
19665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19666
19667 /*-------------------------------------------------------------------------
19668 Sanity check
19669 -------------------------------------------------------------------------*/
19670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19671 ( NULL == pEventData->pEventData ))
19672 {
19673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19674 "%s: Invalid parameters", __func__);
19675 WDI_ASSERT( 0 );
19676 return WDI_STATUS_E_FAILURE;
19677 }
19678
19679 /*-------------------------------------------------------------------------
19680 Extract indication and send it to UMAC
19681 -------------------------------------------------------------------------*/
19682 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19683 pEventData->pEventData,
19684 sizeof(halTdlsIndMsg.tdlsIndParams) );
19685
19686 /*Fill in the indication parameters*/
19687 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19688
19689 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19690 = halTdlsIndMsg.tdlsIndParams.status;
19691
19692 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19693 = halTdlsIndMsg.tdlsIndParams.staIdx;
19694
19695 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19696 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19697
19698 /*Notify UMAC*/
19699 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19700
19701 return WDI_STATUS_SUCCESS;
19702}/*WDI_ProcessTdlsInd*/
19703#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019704/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019705*@brief Process Noa Start Indication function (called when
19706 an indication of this kind is being received over the
19707 bus from HAL)
19708
19709 @param pWDICtx: pointer to the WLAN DAL context
19710 pEventData: pointer to the event information structure
19711
19712 @see
19713 @return Result of the function call
19714*/
19715WDI_Status
19716WDI_ProcessP2pNoaStartInd
19717(
19718 WDI_ControlBlockType* pWDICtx,
19719 WDI_EventInfoType* pEventData
19720)
19721{
19722 WDI_LowLevelIndType wdiInd;
19723 tNoaStartIndMsg halNoaStartIndMsg;
19724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19725
19726 /*-------------------------------------------------------------------------
19727 Sanity check
19728 -------------------------------------------------------------------------*/
19729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19730 ( NULL == pEventData->pEventData ))
19731 {
19732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19733 "%s: Invalid parameters", __func__);
19734 WDI_ASSERT( 0 );
19735 return WDI_STATUS_E_FAILURE;
19736 }
19737
19738 /*-------------------------------------------------------------------------
19739 Extract indication and send it to UMAC
19740 -------------------------------------------------------------------------*/
19741 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19742 pEventData->pEventData,
19743 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19744
19745 /*Fill in the indication parameters*/
19746 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19747
19748 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19749 = halNoaStartIndMsg.noaStartIndParams.status;
19750
19751 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19752 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19753
19754 /*Notify UMAC*/
19755 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19756
19757 return WDI_STATUS_SUCCESS;
19758}/*WDI_ProcessNoaAttrInd*/
19759
19760/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019761*@brief Process Noa Attr Indication function (called when
19762 an indication of this kind is being received over the
19763 bus from HAL)
19764
19765 @param pWDICtx: pointer to the WLAN DAL context
19766 pEventData: pointer to the event information structure
19767
19768 @see
19769 @return Result of the function call
19770*/
19771WDI_Status
19772WDI_ProcessP2pNoaAttrInd
19773(
19774 WDI_ControlBlockType* pWDICtx,
19775 WDI_EventInfoType* pEventData
19776)
19777{
19778 WDI_LowLevelIndType wdiInd;
19779 tNoaAttrIndMsg halNoaAttrIndMsg;
19780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19781
19782 /*-------------------------------------------------------------------------
19783 Sanity check
19784 -------------------------------------------------------------------------*/
19785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19786 ( NULL == pEventData->pEventData ))
19787 {
19788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 WDI_ASSERT( 0 );
19791 return WDI_STATUS_E_FAILURE;
19792 }
19793
19794 /*-------------------------------------------------------------------------
19795 Extract indication and send it to UMAC
19796 -------------------------------------------------------------------------*/
19797 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19798 pEventData->pEventData,
19799 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19800
19801 /*Fill in the indication parameters*/
19802 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019803
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19805 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019806
Jeff Johnson295189b2012-06-20 16:38:30 -070019807 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19808 = halNoaAttrIndMsg.noaAttrIndParams.index;
19809 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19810 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19811 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19812 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019813
Jeff Johnson295189b2012-06-20 16:38:30 -070019814 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19815 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19816 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19817 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19818 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19819 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19820 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19821 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019822
Jeff Johnson295189b2012-06-20 16:38:30 -070019823 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19824 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19825 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19826 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19827 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19828 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19829 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19830 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19831
ltimariu034f7d62013-01-24 18:54:33 -080019832 if ( pWDICtx->wdiLowLevelIndCB )
19833 {
19834 /*Notify UMAC*/
19835 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19836 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019837
19838 return WDI_STATUS_SUCCESS;
19839}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019840
19841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019842 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 an indication of this kind is being received over the
19844 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019845
19846 @param pWDICtx: pointer to the WLAN DAL context
19847 pEventData: pointer to the event information structure
19848
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 @see
19850 @return Result of the function call
19851*/
19852WDI_Status
19853WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019854(
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 WDI_ControlBlockType* pWDICtx,
19856 WDI_EventInfoType* pEventData
19857)
19858{
19859 WDI_LowLevelIndType wdiInd;
19860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019861
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 /*-------------------------------------------------------------------------
19863 Extract indication and send it to UMAC
19864 -------------------------------------------------------------------------*/
19865 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19867
ltimariu034f7d62013-01-24 18:54:33 -080019868 if ( pWDICtx->wdiLowLevelIndCB )
19869 {
19870 /*Notify UMAC*/
19871 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19872 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019873
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019875}/*WDI_ProcessTxPerHitInd*/
19876
Jeff Johnson295189b2012-06-20 16:38:30 -070019877/**
19878 @brief WDI_ProcessFTMCommandReq
19879 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019880
19881 @param pWDICtx: pointer to the WLAN DAL context
19882 pEventData: pointer to the event information structure
19883
Jeff Johnson295189b2012-06-20 16:38:30 -070019884 @see
19885 @return Result of the function call
19886*/
19887WDI_Status
19888WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019889(
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 WDI_ControlBlockType* pWDICtx,
19891 WDI_EventInfoType* pEventData
19892)
19893{
19894 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19895 wpt_uint8 *ftmCommandBuffer = NULL;
19896 wpt_uint16 dataOffset;
19897 wpt_uint16 bufferSize;
19898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 -------------------------------------------------------------------------*/
19901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19902 ( NULL == pEventData->pEventData))
19903
19904 {
19905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 }
19910
19911 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19912
19913 /* Get MSG Buffer */
19914 WDI_GetMessageBuffer(pWDICtx,
19915 WDI_FTM_CMD_REQ,
19916 ftmCommandReq->bodyLength,
19917 &ftmCommandBuffer,
19918 &dataOffset,
19919 &bufferSize);
19920
19921 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19922 ftmCommandReq->FTMCommandBody,
19923 ftmCommandReq->bodyLength);
19924
19925 /* Send MSG */
19926 return WDI_SendMsg(pWDICtx,
19927 ftmCommandBuffer,
19928 bufferSize,
19929 pEventData->pCBfnc,
19930 pEventData->pUserData,
19931 WDI_FTM_CMD_RESP);
19932}
19933
19934/**
19935 @brief WDI_ProcessFTMCommandRsp
19936 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019937
19938 @param pWDICtx: pointer to the WLAN DAL context
19939 pEventData: pointer to the event information structure
19940
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 @see
19942 @return Result of the function call
19943*/
19944WDI_Status
19945WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019946(
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 WDI_ControlBlockType* pWDICtx,
19948 WDI_EventInfoType* pEventData
19949)
19950{
19951 WDI_FTMCommandRspCb ftmCMDRspCb;
19952 tProcessPttRspParams *ftmCMDRspData = NULL;
19953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19954
19955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 -------------------------------------------------------------------------*/
19958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19959 ( NULL == pEventData->pEventData))
19960 {
19961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019965 }
19966
19967 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19968
19969 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19970
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19972 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19974
19975 /*Notify UMAC*/
19976 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19977
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019979}
Jeff Johnson295189b2012-06-20 16:38:30 -070019980/**
19981 @brief WDI_ProcessHalDumpCmdReq
19982 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019983
19984 @param pWDICtx: pointer to the WLAN DAL context
19985 pEventData: pointer to the event information structure
19986
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 @see
19988 @return Result of the function call
19989*/
19990WDI_Status
19991WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019992(
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 WDI_ControlBlockType* pWDICtx,
19994 WDI_EventInfoType* pEventData
19995)
19996{
19997 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19998 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19999 wpt_uint16 usDataOffset = 0;
20000 wpt_uint16 usSendSize = 0;
20001 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020003
20004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 -------------------------------------------------------------------------*/
20007 if (( NULL == pEventData ) ||
20008 ( NULL == pEventData->pEventData) ||
20009 ( NULL == pEventData->pCBfnc ))
20010 {
20011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 }
20016
20017 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20018 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20019
20020 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020023 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020024 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020025 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020029 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020030 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020031
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 /*-----------------------------------------------------------------------
20033 Get message buffer
20034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20037 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20040 {
20041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20042 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20043 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 }
20047
Jeff Johnsone7245742012-09-05 17:12:55 -070020048 wpalMemoryCopy( pSendBuffer+usDataOffset,
20049 &halDumpCmdReqMsg.dumpCmdReqParams,
20050 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020051
20052 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020054
20055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020056 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020058 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20059 wdiHALDumpCmdRspCb, pEventData->pUserData,
20060 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020061}
20062
20063/**
20064 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 Process hal Dump Command Response from HAL, simply route to HDD
20066
20067 @param pWDICtx: pointer to the WLAN DAL context
20068 pEventData: pointer to the event information structure
20069
Jeff Johnson295189b2012-06-20 16:38:30 -070020070 @see
20071 @return Result of the function call
20072*/
20073WDI_Status
20074WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020075(
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 WDI_ControlBlockType* pWDICtx,
20077 WDI_EventInfoType* pEventData
20078)
20079{
20080 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020081 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20083
20084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 -------------------------------------------------------------------------*/
20087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20088 ( NULL == pEventData->pEventData))
20089 {
20090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 }
20095
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020097
20098 /*Initialize the WDI Response structure */
20099 wdiHALDumpCmdRsp.usBufferLen = 0;
20100 wdiHALDumpCmdRsp.pBuffer = NULL;
20101
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020102 wpalMemoryCopy( &halDumpCmdRspParams,
20103 pEventData->pEventData,
20104 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020105
20106 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020107 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020108
20109 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020110 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 {
20112 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020113 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20114 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20115
20116 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20117 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020118 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020120
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 /*Notify UMAC*/
20122 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20123
20124 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20125 {
20126 /* Free the allocated buffer */
20127 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20128 }
20129 return WDI_STATUS_SUCCESS;
20130}
20131
20132/*==========================================================================
20133 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020137==========================================================================*/
20138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020139 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 when it wishes to send up a notification like the ones
20141 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020142
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020144
20145 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 wctsNotifyCBData: the callback data of the user
20148
Jeff Johnson295189b2012-06-20 16:38:30 -070020149 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020150
20151 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020152*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020153void
Jeff Johnson295189b2012-06-20 16:38:30 -070020154WDI_NotifyMsgCTSCB
20155(
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 WCTS_NotifyEventType wctsEvent,
20158 void* wctsNotifyCBData
20159)
20160{
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20163
20164 if (NULL == pWDICtx )
20165 {
20166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 }
20171
20172 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20173 {
20174 /* callback presumably occurred after close */
20175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020176 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 }
20179
20180 if ( WCTS_EVENT_OPEN == wctsEvent )
20181 {
20182 /*Flag must be set atomically as it is checked from incoming request
20183 functions*/
20184 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020186
20187 /*Nothing to do - so try to dequeue any pending request that may have
20188 occurred while we were trying to establish this*/
20189 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 {
20194 /*Flag must be set atomically as it is checked from incoming request
20195 functions*/
20196 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020197 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198
20199 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 wpalMutexRelease(&pWDICtx->wptMutex);
20202
20203 /*Notify that the Control Channel is closed */
20204 wpalEventSet(&pWDICtx->wctsActionEvent);
20205 }
20206
20207}/*WDI_NotifyMsgCTSCB*/
20208
20209
20210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 when it wishes to send up a packet received over the
20213 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020214
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020216
20217 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 pMsg: the packet
20219 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 wctsRxMsgCBData: the callback data of the user
20221
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020223
20224 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020225*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020226void
20227WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020228(
Jeff Johnsone7245742012-09-05 17:12:55 -070020229 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 void* pMsg,
20231 wpt_uint32 uLen,
20232 void* wctsRxMsgCBData
20233)
20234{
Jeff Johnsone7245742012-09-05 17:12:55 -070020235 tHalMsgHeader *pHalMsgHeader;
20236 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20239
20240 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020243 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 ( uLen < sizeof(tHalMsgHeader)))
20245 {
20246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 }
20251
20252 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20253 {
20254 /* callback presumably occurred after close */
20255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020256 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 }
20259
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 context - so no serialization is necessary here
20262 ! - revisit this assumption */
20263
20264 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20265
20266 if ( uLen != pHalMsgHeader->msgLen )
20267 {
20268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20269 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20271 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020272 }
20273
20274 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20275
20276 /*The message itself starts after the header*/
20277 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20278 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20279 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20280 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20281
20282
20283 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20284 {
20285 /*Stop the timer as the response was received */
20286 /*!UT - check for potential race conditions between stop and response */
20287 wpalTimerStop(&pWDICtx->wptResponseTimer);
20288 }
20289 /* Check if we receive a response message which is not expected */
20290 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20291 {
20292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20293 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20294 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020295 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20297 pWDICtx->wdiExpectedResponse);
20298 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20299 return;
20300 }
20301
20302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20303 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20304
20305 /*Post response event to the state machine*/
20306 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20307
20308}/*WDI_RXMsgCTSCB*/
20309
20310
20311/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020313========================================================================*/
20314
20315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020316 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020318
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 @param pWDICtx - pointer to the control block
20320
20321 @return Result of the function call
20322*/
20323WPT_INLINE WDI_Status
20324WDI_CleanCB
20325(
20326 WDI_ControlBlockType* pWDICtx
20327)
20328{
20329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20330
20331 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020333
Jeff Johnsone7245742012-09-05 17:12:55 -070020334 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020335 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20336 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20337
20338 WDI_ResetAssocSessions( pWDICtx );
20339
20340 return WDI_STATUS_SUCCESS;
20341}/*WDI_CleanCB*/
20342
20343
20344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020345 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020346
Jeff Johnsone7245742012-09-05 17:12:55 -070020347
20348 @param pWDICtx: pointer to the WLAN DAL context
20349 pEventData: pointer to the event information structure
20350
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 @see
20352 @return Result of the function call
20353*/
20354WPT_INLINE WDI_Status
20355WDI_ProcessRequest
20356(
20357 WDI_ControlBlockType* pWDICtx,
20358 WDI_EventInfoType* pEventData
20359)
20360{
20361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20362
Jeff Johnsone7245742012-09-05 17:12:55 -070020363 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 already checked these pointers*/
20365
20366 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20367 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20370 "Calling request processing function for req %s (%d) %x",
20371 WDI_getReqMsgString(pEventData->wdiRequest),
20372 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20373 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20374 }
20375 else
20376 {
20377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020379 pEventData->wdiRequest);
20380 return WDI_STATUS_E_NOT_IMPLEMENT;
20381 }
20382}/*WDI_ProcessRequest*/
20383
20384
20385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020386 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020387 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 prefixes it with a send message header
20389
20390 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020391 wdiReqType: type of the request being sent
20392 uBufferLen: message buffer len
20393 pMsgBuffer: resulting allocated buffer
20394 pusDataOffset: offset in the buffer where the caller
20395 can start copying its message data
20396 puBufferSize: the resulting buffer size (offset+buff
20397 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020398
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 @see
20400 @return Result of the function call
20401*/
20402WDI_Status
20403WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020404(
20405 WDI_ControlBlockType* pWDICtx,
20406 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 wpt_uint8** pMsgBuffer,
20409 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020410 wpt_uint16* pusBufferSize
20411)
20412{
20413 tHalMsgHeader halMsgHeader;
20414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20415
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020417 again*/
20418
20419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020420 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20424 if ( NULL == *pMsgBuffer )
20425 {
20426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20427 "Unable to allocate message buffer for req %s (%d)",
20428 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020431 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 }
20433
20434 /*-------------------------------------------------------------------------
20435 Fill in the message header
20436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20438 /* Fill msgVersion */
20439#ifdef WLAN_FEATURE_11AC
20440 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020441 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020442 else
20443#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020444 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020445
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20447 *pusDataOffset = sizeof(halMsgHeader);
20448 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20449
20450 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020451}/*WDI_GetMessageBuffer*/
20452
20453
20454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 the CB
20458
20459 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020461
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 usSendSize size of the buffer to be sent
20463 pRspCb: response callback - save in the WDI
20464 CB
20465 pUserData: user data associated with the
20466 callback
20467 wdiExpectedResponse: the code of the response that is
20468 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020469
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 @see
20471 @return Result of the function call
20472*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020474WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020475(
20476 WDI_ControlBlockType* pWDICtx,
20477 wpt_uint8* pSendBuffer,
20478 wpt_uint32 usSendSize,
20479 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 void* pUserData,
20481 WDI_ResponseEnumType wdiExpectedResponse
20482)
20483{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020484 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020485 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20487
20488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 ------------------------------------------------------------------------*/
20491 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 pWDICtx->pfncRspCB = pRspCb;
20493 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020494
20495 /*-----------------------------------------------------------------------
20496 Call the CTS to send this message over - free message afterwards
20497 - notify transport failure
20498 Note: CTS is reponsible for freeing the message buffer.
20499 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020500 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20501 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20502 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020503 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 "Failed to send message over the bus - catastrophic failure");
20506
Jeff Johnsond13512a2012-07-17 11:42:19 -070020507 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020509 else
20510 {
20511 /* even when message was placed in CTS deferred Q, we will treat it
20512 success but log this info
20513 */
20514 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20515 {
20516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20517 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20518 "response %s (%d)",
20519 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20520 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020521 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020522 }
20523 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020524
Jeff Johnsond13512a2012-07-17 11:42:19 -070020525 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 if ( NULL != pWDICtx->wdiReqStatusCB )
20527 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020528 /*Inform originator whether request went through or not*/
20529 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20530 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 pWDICtx->wdiReqStatusCB = NULL;
20532 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020533 callback(wdiStatus, callbackContext);
20534
20535 /*For WDI requests which have registered a request callback,
20536 inform the WDA caller of the same via setting the return value
20537 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20538 end up repeating the functonality in the req callback for the
20539 WDI_STATUS_E_FAILURE case*/
20540 if (wdiStatus == WDI_STATUS_E_FAILURE)
20541 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 }
20543
Jeff Johnsond13512a2012-07-17 11:42:19 -070020544 if ( wdiStatus == WDI_STATUS_SUCCESS )
20545 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 /*Start timer for the expected response */
20547 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020548
20549 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020550 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020551 }
20552 else
20553 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020554 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020555 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20556 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020557
Jeff Johnsond13512a2012-07-17 11:42:19 -070020558 return wdiStatus;
20559
Jeff Johnson295189b2012-06-20 16:38:30 -070020560}/*WDI_SendMsg*/
20561
20562
20563
20564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020565 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 the bus using the control transport and saves some info
20567 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020568
20569 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 pSendBuffer: buffer to be sent
20571 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020572
Jeff Johnson295189b2012-06-20 16:38:30 -070020573 @see
20574 @return Result of the function call
20575*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020576WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020577WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020578(
20579 WDI_ControlBlockType* pWDICtx,
20580 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 wpt_uint32 usSendSize
20582)
20583{
20584 wpt_uint32 uStatus ;
20585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20586
20587 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020589 Note: CTS is reponsible for freeing the message buffer.
20590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 (void*)pSendBuffer, usSendSize );
20593
20594 /*Inform Upper MAC about the outcome of the request*/
20595 if ( NULL != pWDICtx->wdiReqStatusCB )
20596 {
20597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20598 "Send indication status : %d", uStatus);
20599
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020600 /* even if CTS placed indication into its deferred Q, we treat it
20601 * as success and let CTS drain its queue as per smd interrupt to CTS
20602 */
20603 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 -070020604 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 }
20606
20607 /*If sending of the message failed - it is considered catastrophic and
20608 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020609 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20610 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20611
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 {
20613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020615
20616 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20617 return WDI_STATUS_E_FAILURE;
20618 }
20619
Jeff Johnsone7245742012-09-05 17:12:55 -070020620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020621}/*WDI_SendIndication*/
20622
20623
20624/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 @brief WDI_DetectedDeviceError - called internally by DAL when
20626 it has detected a failure in the device
20627
20628 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 usErrorCode: error code detected by WDI or received
20630 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020631
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020634*/
20635void
20636WDI_DetectedDeviceError
20637(
20638 WDI_ControlBlockType* pWDICtx,
20639 wpt_uint16 usErrorCode
20640)
20641{
20642 WDI_LowLevelIndType wdiInd;
20643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20644
20645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20646 "Device Error detected code: %d - transitioning to stopped state",
20647 usErrorCode);
20648
20649 wpalMutexAcquire(&pWDICtx->wptMutex);
20650
20651 WDI_STATableStop(pWDICtx);
20652
20653 WDI_ResetAssocSessions(pWDICtx);
20654
20655 /*Set the expected state transition to stopped - because the device
20656 experienced a failure*/
20657 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20658
20659 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020661
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020663
20664 /*TO DO: - there should be an attempt to reset the device here*/
20665
20666 wpalMutexRelease(&pWDICtx->wptMutex);
20667
20668 /*------------------------------------------------------------------------
20669 Notify UMAC if a handler is registered
20670 ------------------------------------------------------------------------*/
20671 if (pWDICtx->wdiLowLevelIndCB)
20672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20674 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675
20676 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20677 }
20678}/*WDI_DetectedDeviceError*/
20679
20680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 we started on send message has expire - this should
20683 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 reply - trigger catastrophic failure
20685 @param
20686
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020688
20689 @see
20690 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020691*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020692void
Jeff Johnson295189b2012-06-20 16:38:30 -070020693WDI_ResponseTimerCB
20694(
20695 void *pUserData
20696)
20697{
20698 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20700
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020701 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020706 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 }
20708
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020709 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020710 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020711
20712 /* If response timer is running at this time that means this timer
20713 * event is not for the last request but rather last-to-last request and
20714 * this timer event has come after we recevied respone for last-to-last
20715 * message
20716 */
20717 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20718 {
20719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20720 "WDI_ResponseTimerCB: timer in running state on timer event, "
20721 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20722 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20723 return;
20724 }
20725
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020726 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 {
20728
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020731 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020733 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20734 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020735
20736 /* WDI timeout means Riva is not responding or SMD communication to Riva
20737 * is not happening. The only possible way to recover from this error
20738 * is to initiate SSR from APPS.
20739 * There is also an option to re-enable wifi, which will eventually
20740 * trigger SSR
20741 */
20742 if (gWDICb.bEnableSSR == false)
20743 {
20744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20745 "SSR is not enabled on WDI timeout");
20746 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20747 return;
20748 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020749#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020750 wpalWcnssResetIntr();
20751 /* if this timer fires, it means Riva did not receive the FIQ */
20752 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020753#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020754 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20755 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020756#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 }
20758 else
20759 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020761 "Timeout occurred but not waiting for any response %d "
20762 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20763 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20764 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 }
20766
20767 return;
20768
20769}/*WDI_ResponseTimerCB*/
20770
20771
20772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020774
Jeff Johnsone7245742012-09-05 17:12:55 -070020775
20776 @param pWDICtx: pointer to the WLAN DAL context
20777 pEventData: pointer to the event information structure
20778
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 @see
20780 @return Result of the function call
20781*/
20782WPT_INLINE WDI_Status
20783WDI_ProcessResponse
20784(
20785 WDI_ControlBlockType* pWDICtx,
20786 WDI_EventInfoType* pEventData
20787)
20788{
20789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20790
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 already checked these pointers
20793 ! - revisit this assumption */
20794 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20795 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 WDI_getRespMsgString(pEventData->wdiResponse),
20800 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20801 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20802 }
20803 else
20804 {
20805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 pEventData->wdiResponse);
20808 return WDI_STATUS_E_NOT_IMPLEMENT;
20809 }
20810}/*WDI_ProcessResponse*/
20811
20812
20813/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020814 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020815=========================================================================*/
20816
20817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 @brief Utility function used by the DAL Core to help queue a
20819 request that cannot be processed right away.
20820 @param
20821
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 pWDICtx: - pointer to the WDI control block
20823 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 queued
20825
20826 @see
20827 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020828*/
20829WDI_Status
20830WDI_QueuePendingReq
20831(
20832 WDI_ControlBlockType* pWDICtx,
20833 WDI_EventInfoType* pEventData
20834)
20835{
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20840
20841 if ( NULL == pEventDataQueue )
20842 {
20843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 WDI_ASSERT(0);
20846 return WDI_STATUS_MEM_FAILURE;
20847 }
20848
20849 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20850 pEventDataQueue->pUserData = pEventData->pUserData;
20851 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20852 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020854
20855 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20856 {
20857 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020858
Jeff Johnson295189b2012-06-20 16:38:30 -070020859 if ( NULL == pEventInfo )
20860 {
20861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 WDI_ASSERT(0);
20864 wpalMemoryFree(pEventDataQueue);
20865 return WDI_STATUS_MEM_FAILURE;
20866 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20869
20870 }
20871 pEventDataQueue->pEventData = pEventInfo;
20872
20873 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020875
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020877
20878 return WDI_STATUS_SUCCESS;
20879}/*WDI_QueuePendingReq*/
20880
20881/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 @param
20885
20886 pMsg - pointer to the message
20887
20888 @see
20889 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020890*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020891void
Jeff Johnson295189b2012-06-20 16:38:30 -070020892WDI_PALCtrlMsgCB
20893(
20894 wpt_msg *pMsg
20895)
20896{
20897 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 WDI_ControlBlockType* pWDICtx = NULL;
20899 WDI_Status wdiStatus;
20900 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 void* pUserData;
20902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20903
20904 if (( NULL == pMsg )||
20905 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20906 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20907 {
20908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 }
20913
20914 /*Transition back to the state that we had before serialization
20915 - serialization transitions us to BUSY to stop any incomming requests
20916 ! TO DO L: possible race condition here if a request comes in between the
20917 state transition and the post function*/
20918
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020920
20921 /*-----------------------------------------------------------------------
20922 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 -----------------------------------------------------------------------*/
20925 switch ( pEventData->wdiRequest )
20926 {
20927
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20930 break;
20931
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 case WDI_NV_DOWNLOAD_REQ:
20933 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20934 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20935 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20936 {
20937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020938 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20940 }
20941 else
20942 {
20943 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20944 }
20945
20946 break;
20947
20948 default:
20949 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20950 break;
20951 }/*switch ( pEventData->wdiRequest )*/
20952
20953 if ( WDI_STATUS_SUCCESS != wdiStatus )
20954 {
20955 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20956
20957 if ( NULL != pfnReqStatusCB )
20958 {
20959 /*Fail the request*/
20960 pfnReqStatusCB( wdiStatus, pUserData);
20961 }
20962 }
20963
20964 /* Free data - that was allocated when queueing*/
20965 if( pEventData != NULL )
20966 {
20967 if( pEventData->pEventData != NULL )
20968 {
20969 wpalMemoryFree(pEventData->pEventData);
20970 }
20971 wpalMemoryFree(pEventData);
20972 }
20973
20974 if( pMsg != NULL )
20975 {
20976 wpalMemoryFree(pMsg);
20977 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020978
Jeff Johnson295189b2012-06-20 16:38:30 -070020979}/*WDI_PALCtrlMsgCB*/
20980
20981/**
20982 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 and schedule for execution a pending request
20984 @param
20985
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 pWDICtx: - pointer to the WDI control block
20987 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 queued
20989
20990 @see
20991 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020992*/
20993WDI_Status
20994WDI_DequeuePendingReq
20995(
20996 WDI_ControlBlockType* pWDICtx
20997)
20998{
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021001 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21003
Jeff Johnsone7245742012-09-05 17:12:55 -070021004 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021005
21006 if ( NULL == pNode )
21007 {
21008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 return WDI_STATUS_SUCCESS;
21011 }
21012
21013 /*The node actually points to the 1st element inside the Event Data struct -
21014 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021016
21017 /*Serialize processing in the control thread
21018 !TO DO: - check to see if these are all the messages params that need
21019 to be filled in*/
21020 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21021
21022 if ( NULL == palMsg )
21023 {
21024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021025 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021027 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021029 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 palMsg->callback = WDI_PALCtrlMsgCB;
21031 palMsg->ptr = pEventData;
21032
21033 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 palMsg->val = pWDICtx->uGlobalState;
21035
Jeff Johnson295189b2012-06-20 16:38:30 -070021036 /*Transition back to BUSY as we need to handle a queued request*/
21037 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021038
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21040
21041 return WDI_STATUS_PENDING;
21042}/*WDI_DequeuePendingReq*/
21043
21044
21045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 away.- The assoc requests will be queued by BSSID
21049 @param
21050
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 pWDICtx: - pointer to the WDI control block
21052 pEventData: pointer to the evnt info that needs to be queued
21053 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021054
21055 @see
21056 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021057*/
21058WDI_Status
21059WDI_QueueNewAssocRequest
21060(
21061 WDI_ControlBlockType* pWDICtx,
21062 WDI_EventInfoType* pEventData,
21063 wpt_macAddr macBSSID
21064)
21065{
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 wpt_uint8 i;
21067 WDI_BSSSessionType* pSession = NULL;
21068 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021070 void* pEventInfo;
21071 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021073
Jeff Johnsone7245742012-09-05 17:12:55 -070021074
21075 /*------------------------------------------------------------------------
21076 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 ------------------------------------------------------------------------*/
21078 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21079 {
21080 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21081 {
21082 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021083 pSession = &pWDICtx->aBSSSessions[i];
21084 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 }
21086 }
21087
21088 if ( i >= WDI_MAX_BSS_SESSIONS )
21089 {
21090 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021093
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 /*------------------------------------------------------------------------
21095 Fill in the BSSID for this session and set the usage flag
21096 ------------------------------------------------------------------------*/
21097 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021098 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021099
21100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021101 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 ------------------------------------------------------------------------*/
21103 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21104 if ( NULL == pEventDataQueue )
21105 {
21106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021107 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 WDI_ASSERT(0);
21109 return WDI_STATUS_MEM_FAILURE;
21110 }
21111
21112 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21113 if ( NULL == pSessionIdElement )
21114 {
21115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021116 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 WDI_ASSERT(0);
21118 wpalMemoryFree(pEventDataQueue);
21119 return WDI_STATUS_MEM_FAILURE;
21120 }
21121
21122 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21123 if ( NULL == pEventInfo )
21124 {
21125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021126 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 WDI_ASSERT(0);
21128 wpalMemoryFree(pSessionIdElement);
21129 wpalMemoryFree(pEventDataQueue);
21130 return WDI_STATUS_MEM_FAILURE;
21131 }
21132
21133 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21134 pEventDataQueue->pUserData = pEventData->pUserData;
21135 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21136 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021138
21139 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21140 pEventDataQueue->pEventData = pEventInfo;
21141
21142 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021144
21145 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021146 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021147
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021149
21150 /*We need to maintain a separate list that keeps track of the order in which
21151 the new assoc requests are being queued such that we can start processing
21152 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 pSessionIdElement->ucIndex = i;
21154 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021155
21156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21157 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021158 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021159
21160 /*Return pending as this is what the status of the request is since it has
21161 been queued*/
21162 return WDI_STATUS_PENDING;
21163}/*WDI_QueueNewAssocRequest*/
21164
21165/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021166 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 away.- The assoc requests will be queued by BSSID
21169 @param
21170
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 pWDICtx: - pointer to the WDI control block
21172 pSession: - session in which to queue
21173 pEventData: pointer to the event info that needs to be
21174 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021175
21176 @see
21177 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021178*/
21179WDI_Status
21180WDI_QueueAssocRequest
21181(
21182 WDI_ControlBlockType* pWDICtx,
21183 WDI_BSSSessionType* pSession,
21184 WDI_EventInfoType* pEventData
21185)
21186{
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021189 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021191
21192 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 Sanity check
21194 ------------------------------------------------------------------------*/
21195 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21196 {
21197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021199
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 }
21202
21203 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 ------------------------------------------------------------------------*/
21206 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21207 if ( NULL == pEventDataQueue )
21208 {
21209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021210 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 WDI_ASSERT(0);
21212 return WDI_STATUS_MEM_FAILURE;
21213 }
21214
21215 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21216 if ( NULL == pEventInfo )
21217 {
21218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21219 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021220 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 WDI_ASSERT(0);
21222 wpalMemoryFree(pEventDataQueue);
21223 return WDI_STATUS_MEM_FAILURE;
21224 }
21225
21226 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21227 pEventDataQueue->pUserData = pEventData->pUserData;
21228 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21229 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021230 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 pEventDataQueue->pEventData = pEventInfo;
21232
21233 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21234
21235 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021236 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021237
21238 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021239 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021240
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021242
21243 /*The result of this operation is pending because the request has been
21244 queued and it will be processed at a later moment in time */
21245 return WDI_STATUS_PENDING;
21246}/*WDI_QueueAssocRequest*/
21247
21248/**
21249 @brief Utility function used by the DAL Core to help dequeue
21250 an association request that was pending
21251 The request will be queued up in front of the main
21252 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021253 @param
21254
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021256
21257
21258 @see
21259 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021260*/
21261WDI_Status
21262WDI_DequeueAssocRequest
21263(
21264 WDI_ControlBlockType* pWDICtx
21265)
21266{
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 wpt_list_node* pNode = NULL;
21268 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 WDI_BSSSessionType* pSession;
21270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021271
21272 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 Sanity check
21274 ------------------------------------------------------------------------*/
21275 if ( NULL == pWDICtx )
21276 {
21277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021279
Jeff Johnsone7245742012-09-05 17:12:55 -070021280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021281 }
21282
21283 /*------------------------------------------------------------------------
21284 An association has been completed => a new association can occur
21285 Check to see if there are any pending associations ->
21286 If so , transfer all the pending requests into the busy queue for
21287 processing
21288 These requests have arrived prior to the requests in the busy queue
21289 (bc they needed to be processed in order to be placed in this queue)
21290 => they will be placed at the front of the busy queue
21291 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021293
21294 if ( NULL == pNode )
21295 {
21296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 return WDI_STATUS_SUCCESS;
21299 }
21300
21301 /*The node actually points to the 1st element inside the Session Id struct -
21302 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304
21305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21306 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21307
21308 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21309 {
21310 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021311
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 the front of the main waiting queue for subsequent execution*/
21314 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 while ( NULL != pNode )
21316 {
21317 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021318 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21319 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 }
21323 else
21324 {
21325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021326 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 WPAL_ASSERT(0);
21328 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021331
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21333 wpalMemoryFree(pSessionIdElement);
21334 return WDI_STATUS_SUCCESS;
21335}/*WDI_DequeueAssocRequest*/
21336
21337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 pending requests - all req cb will be called with
21340 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021341 @param
21342
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021344
21345 @see
21346 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021347*/
21348WDI_Status
21349WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021350(
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 WDI_ControlBlockType* pWDICtx
21352)
21353{
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021356 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 void* pUserData;
21358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21359
Jeff Johnsone7245742012-09-05 17:12:55 -070021360 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021361
21362 /*------------------------------------------------------------------------
21363 Go through all the requests and fail them - this will only be called
21364 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 ------------------------------------------------------------------------*/
21367 while( pNode )
21368 {
21369 /*The node actually points to the 1st element inside the Event Data struct -
21370 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 pEventDataQueue = (WDI_EventInfoType*)pNode;
21372
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21374 if ( NULL != pfnReqStatusCB )
21375 {
21376 /*Fail the request*/
21377 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21378 }
21379 /* Free data - that was allocated when queueing */
21380 if ( pEventDataQueue->pEventData != NULL )
21381 {
21382 wpalMemoryFree(pEventDataQueue->pEventData);
21383 }
21384 wpalMemoryFree(pEventDataQueue);
21385
21386 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21387 {
21388 break;
21389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 }
21391
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 return WDI_STATUS_SUCCESS;
21393}/*WDI_ClearPendingRequests*/
21394
21395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 @brief Helper routine used to init the BSS Sessions in the WDI control block
21397
21398
21399 @param pWDICtx: pointer to the WLAN DAL context
21400
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 @see
21402*/
21403void
21404WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021405(
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 WDI_ControlBlockType* pWDICtx
21407)
21408{
Jeff Johnsone7245742012-09-05 17:12:55 -070021409 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21411
21412 /*-------------------------------------------------------------------------
21413 No Sanity check
21414 -------------------------------------------------------------------------*/
21415 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21416 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021417 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021418 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21419 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21420 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21421 }
21422}/*WDI_ResetAssocSessions*/
21423
21424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 @brief Helper routine used to find a session based on the BSSID
21426
21427
21428 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021430 pSession: pointer to the session (if found)
21431
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021433 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021434*/
21435wpt_uint8
21436WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021437(
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 WDI_ControlBlockType* pWDICtx,
21439 wpt_macAddr macBSSID,
21440 WDI_BSSSessionType** ppSession
21441)
21442{
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21445
21446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 -------------------------------------------------------------------------*/
21449 if ( NULL == ppSession )
21450 {
21451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021452 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 }
21455
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021457
Jeff Johnsone7245742012-09-05 17:12:55 -070021458 /*------------------------------------------------------------------------
21459 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 ------------------------------------------------------------------------*/
21461 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21462 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021463 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21464 (eWLAN_PAL_TRUE ==
21465 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21466 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 {
21468 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021470 return i;
21471 }
21472 }
21473
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021475}/*WDI_FindAssocSession*/
21476
21477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021478 @brief Helper routine used to find a session based on the BSSID
21479
21480
21481 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 ucBSSIdx: BSS Index of the session
21483 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021484
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021487*/
21488wpt_uint8
21489WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021490(
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 WDI_ControlBlockType* pWDICtx,
21492 wpt_uint16 ucBSSIdx,
21493 WDI_BSSSessionType** ppSession
21494)
21495{
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21498
21499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 -------------------------------------------------------------------------*/
21502 if ( NULL == ppSession )
21503 {
21504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021505 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021506 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021507 }
21508
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021510
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 /*------------------------------------------------------------------------
21512 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021513 ------------------------------------------------------------------------*/
21514 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21515 {
21516 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21517 {
21518 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 return i;
21521 }
21522 }
21523
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525}/*WDI_FindAssocSessionByBSSIdx*/
21526
21527/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 @brief Helper routine used to find a session based on the BSSID
21529
21530
21531 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 ucBSSIdx: BSS Index of the session
21533 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021534
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021537*/
21538wpt_uint8
21539WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021540(
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 WDI_ControlBlockType* pWDICtx,
21542 wpt_uint16 usIdx,
21543 WDI_BSSSessionType** ppSession
21544)
21545{
21546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21547
21548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 -------------------------------------------------------------------------*/
21551 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21552 {
21553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021554 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 }
21557
21558 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021560
21561 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021562
Jeff Johnson295189b2012-06-20 16:38:30 -070021563}/*WDI_FindAssocSessionByBSSIdx*/
21564
21565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021566 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021568
21569
21570 @param pWDICtx: pointer to the WLAN DAL context
21571 pSession: pointer to the session (if found)
21572
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021575*/
21576wpt_uint8
21577WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021578(
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 WDI_ControlBlockType* pWDICtx,
21580 WDI_BSSSessionType** ppSession
21581)
21582{
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 -------------------------------------------------------------------------*/
21588 if ( NULL == ppSession )
21589 {
21590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021591 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021592 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 }
21594
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021596
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 /*------------------------------------------------------------------------
21598 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021599 ------------------------------------------------------------------------*/
21600 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21601 {
21602 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21603 {
21604 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021605 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 return i;
21607 }
21608 }
21609
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611}/*WDI_FindEmptySession*/
21612
21613
21614/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021617
21618
21619 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021620 macBSSID: pointer to BSSID. If NULL, get all the session.
21621 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21622 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21623 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 @see
21625 @return Number of sessions in use
21626*/
21627wpt_uint8
21628WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021629(
Hoonki Lee26599972013-04-24 01:21:58 -070021630 WDI_ControlBlockType* pWDICtx,
21631 wpt_macAddr macBSSID,
21632 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021633)
21634{
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021637
21638 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 Count all sessions in use
21640 ------------------------------------------------------------------------*/
21641 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21642 {
Hoonki Lee26599972013-04-24 01:21:58 -070021643 if ( macBSSID && skipBSSID &&
21644 (eWLAN_PAL_TRUE ==
21645 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21646 WDI_MAC_ADDR_LEN)))
21647 {
21648 continue;
21649 }
21650 else if ( pWDICtx->aBSSSessions[i].bInUse )
21651 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021653 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 }
21655
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021657}/*WDI_GetActiveSessionsCount*/
21658
21659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021662
21663
21664 @param pWDICtx: pointer to the WLAN DAL context
21665 pSession: pointer to the session (if found)
21666
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021669*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021670void
Jeff Johnson295189b2012-06-20 16:38:30 -070021671WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021672(
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 WDI_ControlBlockType* pWDICtx,
21674 WDI_BSSSessionType* ppSession
21675)
21676{
21677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 -------------------------------------------------------------------------*/
21680 if ( NULL == ppSession )
21681 {
21682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021683 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 }
21686
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 /*------------------------------------------------------------------------
21688 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 ------------------------------------------------------------------------*/
21690 wpal_list_destroy(&ppSession->wptPendingQueue);
21691 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21693 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21695 wpal_list_init(&ppSession->wptPendingQueue);
21696
21697}/*WDI_DeleteSession*/
21698
21699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 @param
21703
Jeff Johnson295189b2012-06-20 16:38:30 -070021704 WDI_AddStaParams: - pointer to the WDI Add STA params
21705 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021706
21707 @see
21708 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021709*/
21710void
21711WDI_AddBcastSTAtoSTATable
21712(
21713 WDI_ControlBlockType* pWDICtx,
21714 WDI_AddStaParams * staParams,
21715 wpt_uint16 usBcastStaIdx
21716)
21717{
21718 WDI_AddStaParams wdiAddSTAParam = {0};
21719 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21721
21722 /*---------------------------------------------------------------------
21723 Sanity check
21724 ---------------------------------------------------------------------*/
21725 if ( NULL == staParams )
21726 {
21727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021729
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 }
21732
21733 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21734 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21735 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21736 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21737 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21738 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21739 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21740 WDI_MAC_ADDR_LEN );
21741 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21742 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21743 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21744 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21745 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21746 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21747 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021748
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21750}
21751
21752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 @brief NV blob will be divided into fragments of size 4kb and
21754 Sent to HAL
21755
21756 @param pWDICtx: pointer to the WLAN DAL context
21757 pEventData: pointer to the event information structure
21758
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 @see
21760 @return Result of the function call
21761 */
21762
21763WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021764(
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 WDI_ControlBlockType* pWDICtx,
21766 WDI_EventInfoType* pEventData
21767)
21768{
21769
21770 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21771 wpt_uint8* pSendBuffer = NULL;
21772 wpt_uint16 usDataOffset = 0;
21773 wpt_uint16 usSendSize = 0;
21774 wpt_uint16 usCurrentFragmentSize =0;
21775 wpt_uint8* pSrcBuffer = NULL;
21776 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21777 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21778
21779 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21780 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21781 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21782
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21785
21786 /* Update the current Fragment Number */
21787 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21788
21789 /*Update the HAL REQ structure */
21790 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21791 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21792 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21793
21794 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021795 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 image will be sent to HAL*/
21797
Jeff Johnsone7245742012-09-05 17:12:55 -070021798 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021800 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21804 usCurrentFragmentSize = FRAGMENT_SIZE;
21805
21806 /*Update the HAL REQ structure */
21807 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21808 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21809
21810 }
21811 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 usCurrentFragmentSize = FRAGMENT_SIZE;
21814
21815 /*Update the HAL REQ structure */
21816 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21817 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21818 }
21819
21820 /*-----------------------------------------------------------------------
21821 Get message buffer
21822 -----------------------------------------------------------------------*/
21823 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21824 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21825 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21828 {
21829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21830 "Unable to get send buffer in NV Download req %x %x ",
21831 pEventData, pwdiNvDownloadReqParams);
21832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 }
21835
21836 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21839
21840 /* Appending the NV image fragment */
21841 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21842 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21843 usCurrentFragmentSize);
21844
21845 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021847
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21849 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 WDI_NV_DOWNLOAD_RESP);
21851
21852}
Jeff Johnsone7245742012-09-05 17:12:55 -070021853/*============================================================================
21854 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021855 ============================================================================*/
21856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 @brief Helper routine used to find a session based on the BSSID
21858 @param pContext: pointer to the WLAN DAL context
21859 @param pDPContext: pointer to the Datapath context
21860
Jeff Johnson295189b2012-06-20 16:38:30 -070021861 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021863*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021864WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021865WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21866{
21867 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21868
21869 pCB->pDPContext = pDPContext;
21870 return;
21871}
21872
21873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021874 @brief Helper routine used to find a session based on the BSSID
21875
21876
21877 @param pContext: pointer to the WLAN DAL context
21878
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 @see
21880 @return pointer to Datapath context
21881*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021882WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021883WDI_DS_GetDatapathContext (void *pContext)
21884{
21885 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21886 return pCB->pDPContext;
21887}
21888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021889 @brief Helper routine used to find a session based on the BSSID
21890
21891
21892 @param pContext: pointer to the WLAN DAL context
21893 @param pDTDriverContext: pointer to the Transport Driver context
21894
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 @see
21896 @return void
21897*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021898WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021899WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21900{
21901 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21902
21903 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021905}
21906
21907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 @brief Helper routine used to find a session based on the BSSID
21909
21910
21911 @param pWDICtx: pointer to the WLAN DAL context
21912
Jeff Johnson295189b2012-06-20 16:38:30 -070021913 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021915*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021916WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021917WDT_GetTransportDriverContext (void *pContext)
21918{
21919 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021921}
21922
Jeff Johnsone7245742012-09-05 17:12:55 -070021923/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 Helper inline converters
21925 ============================================================================*/
21926/*Convert WDI driver type into HAL driver type*/
21927WPT_STATIC WPT_INLINE WDI_Status
21928WDI_HAL_2_WDI_STATUS
21929(
21930 eHalStatus halStatus
21931)
21932{
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021934 the chances of getting inlined*/
21935 switch( halStatus )
21936 {
21937 case eHAL_STATUS_SUCCESS:
21938 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21939 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21940 return WDI_STATUS_SUCCESS;
21941 case eHAL_STATUS_FAILURE:
21942 return WDI_STATUS_E_FAILURE;
21943 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 return WDI_STATUS_MEM_FAILURE;
21945 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 default:
21948 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21949 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021950
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021952}/*WDI_HAL_2_WDI_STATUS*/
21953
21954/*Convert WDI request type into HAL request type*/
21955WPT_STATIC WPT_INLINE tHalHostMsgType
21956WDI_2_HAL_REQ_TYPE
21957(
21958 WDI_RequestEnumType wdiReqType
21959)
21960{
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 the chances of getting inlined*/
21963 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 return WLAN_HAL_RMV_STAKEY_REQ;
22000 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 case WDI_DEL_BA_REQ:
22009 return WLAN_HAL_DEL_BA_REQ;
22010#ifdef FEATURE_WLAN_CCX
22011 case WDI_TSM_STATS_REQ:
22012 return WLAN_HAL_TSM_STATS_REQ;
22013#endif
22014 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022015 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022022 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 case WDI_ADD_BA_SESSION_REQ:
22025 return WLAN_HAL_ADD_BA_SESSION_REQ;
22026 case WDI_TRIGGER_BA_REQ:
22027 return WLAN_HAL_TRIGGER_BA_REQ;
22028 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22033 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22034 case WDI_SET_MAX_TX_POWER_REQ:
22035 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022036 case WDI_SET_TX_POWER_REQ:
22037 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22039 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022040#ifdef FEATURE_WLAN_TDLS
22041 case WDI_TDLS_LINK_ESTABLISH_REQ:
22042 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22043#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022044 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022049 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022055 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022059 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 case WDI_REM_BEACON_FILTER_REQ:
22065 return WLAN_HAL_REM_BCN_FILTER_REQ;
22066 case WDI_SET_RSSI_THRESHOLDS_REQ:
22067 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22068 case WDI_HOST_OFFLOAD_REQ:
22069 return WLAN_HAL_HOST_OFFLOAD_REQ;
22070 case WDI_WOWL_ADD_BC_PTRN_REQ:
22071 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22072 case WDI_WOWL_DEL_BC_PTRN_REQ:
22073 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22074 case WDI_WOWL_ENTER_REQ:
22075 return WLAN_HAL_ENTER_WOWL_REQ;
22076 case WDI_WOWL_EXIT_REQ:
22077 return WLAN_HAL_EXIT_WOWL_REQ;
22078 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22079 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22080 case WDI_NV_DOWNLOAD_REQ:
22081 return WLAN_HAL_DOWNLOAD_NV_REQ;
22082 case WDI_FLUSH_AC_REQ:
22083 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22084 case WDI_BTAMP_EVENT_REQ:
22085 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22086#ifdef WLAN_FEATURE_VOWIFI_11R
22087 case WDI_AGGR_ADD_TS_REQ:
22088 return WLAN_HAL_AGGR_ADD_TS_REQ;
22089#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 case WDI_FTM_CMD_REQ:
22091 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 case WDI_ADD_STA_SELF_REQ:
22093 return WLAN_HAL_ADD_STA_SELF_REQ;
22094 case WDI_DEL_STA_SELF_REQ:
22095 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022096#ifdef FEATURE_OEM_DATA_SUPPORT
22097 case WDI_START_OEM_DATA_REQ:
22098 return WLAN_HAL_START_OEM_DATA_REQ;
22099#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 case WDI_HOST_RESUME_REQ:
22101 return WLAN_HAL_HOST_RESUME_REQ;
22102 case WDI_HOST_SUSPEND_IND:
22103 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022104 case WDI_TRAFFIC_STATS_IND:
22105 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022106#ifdef WLAN_FEATURE_11W
22107 case WDI_EXCLUDE_UNENCRYPTED_IND:
22108 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22109#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 case WDI_KEEP_ALIVE_REQ:
22111 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022112#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022113 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22114 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022115#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022116#ifdef FEATURE_WLAN_SCAN_PNO
22117 case WDI_SET_PREF_NETWORK_REQ:
22118 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22119 case WDI_SET_RSSI_FILTER_REQ:
22120 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22121 case WDI_UPDATE_SCAN_PARAMS_REQ:
22122 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22123#endif // FEATURE_WLAN_SCAN_PNO
22124 case WDI_SET_TX_PER_TRACKING_REQ:
22125 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22126#ifdef WLAN_FEATURE_PACKET_FILTERING
22127 case WDI_8023_MULTICAST_LIST_REQ:
22128 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22129 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22132 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22133 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22134 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22135#endif // WLAN_FEATURE_PACKET_FILTERING
22136 case WDI_HAL_DUMP_CMD_REQ:
22137 return WLAN_HAL_DUMP_COMMAND_REQ;
22138#ifdef WLAN_FEATURE_GTK_OFFLOAD
22139 case WDI_GTK_OFFLOAD_REQ:
22140 return WLAN_HAL_GTK_OFFLOAD_REQ;
22141 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22142 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22143#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22144
22145 case WDI_INIT_SCAN_CON_REQ:
22146 return WLAN_HAL_INIT_SCAN_CON_REQ;
22147 case WDI_SET_POWER_PARAMS_REQ:
22148 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22149 case WDI_SET_TM_LEVEL_REQ:
22150 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22151 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22152 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022153#ifdef WLAN_FEATURE_11AC
22154 case WDI_UPDATE_VHT_OP_MODE_REQ:
22155 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22156#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022157 case WDI_GET_ROAM_RSSI_REQ:
22158 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022162
Jeff Johnson295189b2012-06-20 16:38:30 -070022163}/*WDI_2_HAL_REQ_TYPE*/
22164
22165/*Convert WDI response type into HAL response type*/
22166WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22167HAL_2_WDI_RSP_TYPE
22168(
22169 tHalHostMsgType halMsg
22170)
22171{
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 the chances of getting inlined*/
22174 switch( halMsg )
22175 {
22176 case WLAN_HAL_START_RSP:
22177 return WDI_START_RESP;
22178 case WLAN_HAL_STOP_RSP:
22179 return WDI_STOP_RESP;
22180 case WLAN_HAL_INIT_SCAN_RSP:
22181 return WDI_INIT_SCAN_RESP;
22182 case WLAN_HAL_START_SCAN_RSP:
22183 return WDI_START_SCAN_RESP;
22184 case WLAN_HAL_END_SCAN_RSP:
22185 return WDI_END_SCAN_RESP;
22186 case WLAN_HAL_FINISH_SCAN_RSP:
22187 return WDI_FINISH_SCAN_RESP;
22188 case WLAN_HAL_CONFIG_STA_RSP:
22189 return WDI_CONFIG_STA_RESP;
22190 case WLAN_HAL_DELETE_STA_RSP:
22191 return WDI_DEL_STA_RESP;
22192 case WLAN_HAL_CONFIG_BSS_RSP:
22193 return WDI_CONFIG_BSS_RESP;
22194 case WLAN_HAL_DELETE_BSS_RSP:
22195 return WDI_DEL_BSS_RESP;
22196 case WLAN_HAL_JOIN_RSP:
22197 return WDI_JOIN_RESP;
22198 case WLAN_HAL_POST_ASSOC_RSP:
22199 return WDI_POST_ASSOC_RESP;
22200 case WLAN_HAL_SET_BSSKEY_RSP:
22201 return WDI_SET_BSS_KEY_RESP;
22202 case WLAN_HAL_SET_STAKEY_RSP:
22203 return WDI_SET_STA_KEY_RESP;
22204 case WLAN_HAL_RMV_BSSKEY_RSP:
22205 return WDI_RMV_BSS_KEY_RESP;
22206 case WLAN_HAL_RMV_STAKEY_RSP:
22207 return WDI_RMV_STA_KEY_RESP;
22208 case WLAN_HAL_SET_BCASTKEY_RSP:
22209 return WDI_SET_STA_BCAST_KEY_RESP;
22210 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22211 // return WDI_RMV_STA_BCAST_KEY_RESP;
22212 case WLAN_HAL_ADD_TS_RSP:
22213 return WDI_ADD_TS_RESP;
22214 case WLAN_HAL_DEL_TS_RSP:
22215 return WDI_DEL_TS_RESP;
22216 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22217 return WDI_UPD_EDCA_PRMS_RESP;
22218 case WLAN_HAL_ADD_BA_RSP:
22219 return WDI_ADD_BA_RESP;
22220 case WLAN_HAL_DEL_BA_RSP:
22221 return WDI_DEL_BA_RESP;
22222#ifdef FEATURE_WLAN_CCX
22223 case WLAN_HAL_TSM_STATS_RSP:
22224 return WDI_TSM_STATS_RESP;
22225#endif
22226 case WLAN_HAL_CH_SWITCH_RSP:
22227 return WDI_CH_SWITCH_RESP;
22228 case WLAN_HAL_SET_LINK_ST_RSP:
22229 return WDI_SET_LINK_ST_RESP;
22230 case WLAN_HAL_GET_STATS_RSP:
22231 return WDI_GET_STATS_RESP;
22232 case WLAN_HAL_UPDATE_CFG_RSP:
22233 return WDI_UPDATE_CFG_RESP;
22234 case WLAN_HAL_ADD_BA_SESSION_RSP:
22235 return WDI_ADD_BA_SESSION_RESP;
22236 case WLAN_HAL_TRIGGER_BA_RSP:
22237 return WDI_TRIGGER_BA_RESP;
22238 case WLAN_HAL_UPDATE_BEACON_RSP:
22239 return WDI_UPD_BCON_PRMS_RESP;
22240 case WLAN_HAL_SEND_BEACON_RSP:
22241 return WDI_SND_BCON_RESP;
22242 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22243 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22244 /*Indications*/
22245 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22246 return WDI_HAL_RSSI_NOTIFICATION_IND;
22247 case WLAN_HAL_MISSED_BEACON_IND:
22248 return WDI_HAL_MISSED_BEACON_IND;
22249 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22250 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22251 case WLAN_HAL_MIC_FAILURE_IND:
22252 return WDI_HAL_MIC_FAILURE_IND;
22253 case WLAN_HAL_FATAL_ERROR_IND:
22254 return WDI_HAL_FATAL_ERROR_IND;
22255 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22256 return WDI_HAL_DEL_STA_IND;
22257 case WLAN_HAL_COEX_IND:
22258 return WDI_HAL_COEX_IND;
22259 case WLAN_HAL_OTA_TX_COMPL_IND:
22260 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 case WLAN_HAL_P2P_NOA_ATTR_IND:
22262 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022263 case WLAN_HAL_P2P_NOA_START_IND:
22264 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 case WLAN_HAL_TX_PER_HIT_IND:
22266 return WDI_HAL_TX_PER_HIT_IND;
22267 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22268 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022269 case WLAN_HAL_SET_TX_POWER_RSP:
22270 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 case WLAN_HAL_SET_P2P_GONOA_RSP:
22272 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022273#ifdef FEATURE_WLAN_TDLS
22274 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22275 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22276 case WLAN_HAL_TDLS_IND:
22277 return WDI_HAL_TDLS_IND;
22278#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022284 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022297 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22298 return WDI_SET_BEACON_FILTER_RESP;
22299 case WLAN_HAL_REM_BCN_FILTER_RSP:
22300 return WDI_REM_BEACON_FILTER_RESP;
22301 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22302 return WDI_SET_RSSI_THRESHOLDS_RESP;
22303 case WLAN_HAL_HOST_OFFLOAD_RSP:
22304 return WDI_HOST_OFFLOAD_RESP;
22305 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22306 return WDI_WOWL_ADD_BC_PTRN_RESP;
22307 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22308 return WDI_WOWL_DEL_BC_PTRN_RESP;
22309 case WLAN_HAL_ENTER_WOWL_RSP:
22310 return WDI_WOWL_ENTER_RESP;
22311 case WLAN_HAL_EXIT_WOWL_RSP:
22312 return WDI_WOWL_EXIT_RESP;
22313 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22314 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22315 case WLAN_HAL_DOWNLOAD_NV_RSP:
22316 return WDI_NV_DOWNLOAD_RESP;
22317 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22318 return WDI_FLUSH_AC_RESP;
22319 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22320 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 case WLAN_HAL_PROCESS_PTT_RSP:
22322 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022323 case WLAN_HAL_ADD_STA_SELF_RSP:
22324 return WDI_ADD_STA_SELF_RESP;
22325case WLAN_HAL_DEL_STA_SELF_RSP:
22326 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022327#ifdef FEATURE_OEM_DATA_SUPPORT
22328 case WLAN_HAL_START_OEM_DATA_RSP:
22329 return WDI_START_OEM_DATA_RESP;
22330#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 case WLAN_HAL_HOST_RESUME_RSP:
22332 return WDI_HOST_RESUME_RESP;
22333 case WLAN_HAL_KEEP_ALIVE_RSP:
22334 return WDI_KEEP_ALIVE_RESP;
22335#ifdef FEATURE_WLAN_SCAN_PNO
22336 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22337 return WDI_SET_PREF_NETWORK_RESP;
22338 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022339 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022340 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22341 return WDI_UPDATE_SCAN_PARAMS_RESP;
22342 case WLAN_HAL_PREF_NETW_FOUND_IND:
22343 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22344#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022345#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022346 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22347 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022348#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022349 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22350 return WDI_SET_TX_PER_TRACKING_RESP;
22351#ifdef WLAN_FEATURE_PACKET_FILTERING
22352 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22353 return WDI_8023_MULTICAST_LIST_RESP;
22354 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22355 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22356 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22357 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22358 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22359 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22360#endif // WLAN_FEATURE_PACKET_FILTERING
22361
22362 case WLAN_HAL_DUMP_COMMAND_RSP:
22363 return WDI_HAL_DUMP_CMD_RESP;
22364 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22365 return WDI_SET_POWER_PARAMS_RESP;
22366#ifdef WLAN_FEATURE_VOWIFI_11R
22367 case WLAN_HAL_AGGR_ADD_TS_RSP:
22368 return WDI_AGGR_ADD_TS_RESP;
22369#endif
22370
22371#ifdef WLAN_FEATURE_GTK_OFFLOAD
22372 case WLAN_HAL_GTK_OFFLOAD_RSP:
22373 return WDI_GTK_OFFLOAD_RESP;
22374 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22375 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22376#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22377#ifdef WLAN_WAKEUP_EVENTS
22378 case WLAN_HAL_WAKE_REASON_IND:
22379 return WDI_HAL_WAKE_REASON_IND;
22380#endif // WLAN_WAKEUP_EVENTS
22381
22382 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22383 return WDI_SET_TM_LEVEL_RESP;
22384 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22385 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022386#ifdef WLAN_FEATURE_11AC
22387 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22388 return WDI_UPDATE_VHT_OP_MODE_RESP;
22389#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022390#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22391 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22392 return WDI_GET_ROAM_RSSI_RESP;
22393#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 }
22397
22398}/*HAL_2_WDI_RSP_TYPE*/
22399
22400
22401/*Convert WDI driver type into HAL driver type*/
22402WPT_STATIC WPT_INLINE tDriverType
22403WDI_2_HAL_DRV_TYPE
22404(
22405 WDI_DriverType wdiDriverType
22406)
22407{
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 the chances of getting inlined*/
22410 switch( wdiDriverType )
22411 {
22412 case WDI_DRIVER_TYPE_PRODUCTION:
22413 return eDRIVER_TYPE_PRODUCTION;
22414 case WDI_DRIVER_TYPE_MFG:
22415 return eDRIVER_TYPE_MFG;
22416 case WDI_DRIVER_TYPE_DVT:
22417 return eDRIVER_TYPE_DVT;
22418 }
22419
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421}/*WDI_2_HAL_DRV_TYPE*/
22422
22423
22424/*Convert WDI stop reason into HAL stop reason*/
22425WPT_STATIC WPT_INLINE tHalStopType
22426WDI_2_HAL_STOP_REASON
22427(
22428 WDI_StopType wdiDriverType
22429)
22430{
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 the chances of getting inlined*/
22433 switch( wdiDriverType )
22434 {
22435 case WDI_STOP_TYPE_SYS_RESET:
22436 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022437 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22438 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 case WDI_STOP_TYPE_RF_KILL:
22440 return HAL_STOP_TYPE_RF_KILL;
22441 }
22442
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022444}/*WDI_2_HAL_STOP_REASON*/
22445
22446
22447/*Convert WDI scan mode type into HAL scan mode type*/
22448WPT_STATIC WPT_INLINE eHalSysMode
22449WDI_2_HAL_SCAN_MODE
22450(
22451 WDI_ScanMode wdiScanMode
22452)
22453{
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 the chances of getting inlined*/
22456 switch( wdiScanMode )
22457 {
22458 case WDI_SCAN_MODE_NORMAL:
22459 return eHAL_SYS_MODE_NORMAL;
22460 case WDI_SCAN_MODE_LEARN:
22461 return eHAL_SYS_MODE_LEARN;
22462 case WDI_SCAN_MODE_SCAN:
22463 return eHAL_SYS_MODE_SCAN;
22464 case WDI_SCAN_MODE_PROMISC:
22465 return eHAL_SYS_MODE_PROMISC;
22466 case WDI_SCAN_MODE_SUSPEND_LINK:
22467 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022468 case WDI_SCAN_MODE_ROAM_SCAN:
22469 return eHAL_SYS_MODE_ROAM_SCAN;
22470 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22471 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 }
22473
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022475}/*WDI_2_HAL_SCAN_MODE*/
22476
22477/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022478WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022479WDI_2_HAL_SEC_CH_OFFSET
22480(
22481 WDI_HTSecondaryChannelOffset wdiSecChOffset
22482)
22483{
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 the chances of getting inlined*/
22486 switch( wdiSecChOffset )
22487 {
22488 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22494#ifdef WLAN_FEATURE_11AC
22495 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22496 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22497 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22498 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22499 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22500 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22501 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22502 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22503 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22504 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22505 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22506 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22507 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22508 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22509#endif
22510 default:
22511 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 }
22513
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022515}/*WDI_2_HAL_SEC_CH_OFFSET*/
22516
22517/*Convert WDI BSS type into HAL BSS type*/
22518WPT_STATIC WPT_INLINE tSirBssType
22519WDI_2_HAL_BSS_TYPE
22520(
22521 WDI_BssType wdiBSSType
22522)
22523{
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 the chances of getting inlined*/
22526 switch( wdiBSSType )
22527 {
22528 case WDI_INFRASTRUCTURE_MODE:
22529 return eSIR_INFRASTRUCTURE_MODE;
22530 case WDI_INFRA_AP_MODE:
22531 return eSIR_INFRA_AP_MODE;
22532 case WDI_IBSS_MODE:
22533 return eSIR_IBSS_MODE;
22534 case WDI_BTAMP_STA_MODE:
22535 return eSIR_BTAMP_STA_MODE;
22536 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022537 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 case WDI_BSS_AUTO_MODE:
22539 return eSIR_AUTO_MODE;
22540 }
22541
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022543}/*WDI_2_HAL_BSS_TYPE*/
22544
22545/*Convert WDI NW type into HAL NW type*/
22546WPT_STATIC WPT_INLINE tSirNwType
22547WDI_2_HAL_NW_TYPE
22548(
22549 WDI_NwType wdiNWType
22550)
22551{
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 the chances of getting inlined*/
22554 switch( wdiNWType )
22555 {
22556 case WDI_11A_NW_TYPE:
22557 return eSIR_11A_NW_TYPE;
22558 case WDI_11B_NW_TYPE:
22559 return eSIR_11B_NW_TYPE;
22560 case WDI_11G_NW_TYPE:
22561 return eSIR_11G_NW_TYPE;
22562 case WDI_11N_NW_TYPE:
22563 return eSIR_11N_NW_TYPE;
22564 }
22565
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022567}/*WDI_2_HAL_NW_TYPE*/
22568
22569/*Convert WDI chanel bonding type into HAL cb type*/
22570WPT_STATIC WPT_INLINE ePhyChanBondState
22571WDI_2_HAL_CB_STATE
22572(
22573 WDI_PhyChanBondState wdiCbState
22574)
22575{
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 the chances of getting inlined*/
22578 switch ( wdiCbState )
22579 {
22580 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22581 return PHY_SINGLE_CHANNEL_CENTERED;
22582 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22583 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22584 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22585 return PHY_DOUBLE_CHANNEL_CENTERED;
22586 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22587 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022588#ifdef WLAN_FEATURE_11AC
22589 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22590 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22591 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22592 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22593 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22594 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22595 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22596 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22597 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22598 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22599 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22600 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22601 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22602 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22603#endif
22604 case WDI_MAX_CB_STATE:
22605 default:
22606 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022607 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022608
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 return PHY_CHANNEL_BONDING_STATE_MAX;
22610}/*WDI_2_HAL_CB_STATE*/
22611
22612/*Convert WDI chanel bonding type into HAL cb type*/
22613WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22614WDI_2_HAL_HT_OPER_MODE
22615(
22616 WDI_HTOperatingMode wdiHTOperMode
22617)
22618{
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 the chances of getting inlined*/
22621 switch ( wdiHTOperMode )
22622 {
22623 case WDI_HT_OP_MODE_PURE:
22624 return eSIR_HT_OP_MODE_PURE;
22625 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22626 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22627 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22628 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22629 case WDI_HT_OP_MODE_MIXED:
22630 return eSIR_HT_OP_MODE_MIXED;
22631 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022632
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 return eSIR_HT_OP_MODE_MAX;
22634}/*WDI_2_HAL_HT_OPER_MODE*/
22635
22636/*Convert WDI mimo PS type into HAL mimo PS type*/
22637WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22638WDI_2_HAL_MIMO_PS
22639(
22640 WDI_HTMIMOPowerSaveState wdiHTOperMode
22641)
22642{
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 the chances of getting inlined*/
22645 switch ( wdiHTOperMode )
22646 {
22647 case WDI_HT_MIMO_PS_STATIC:
22648 return eSIR_HT_MIMO_PS_STATIC;
22649 case WDI_HT_MIMO_PS_DYNAMIC:
22650 return eSIR_HT_MIMO_PS_DYNAMIC;
22651 case WDI_HT_MIMO_PS_NA:
22652 return eSIR_HT_MIMO_PS_NA;
22653 case WDI_HT_MIMO_PS_NO_LIMIT:
22654 return eSIR_HT_MIMO_PS_NO_LIMIT;
22655 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022656
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 return eSIR_HT_MIMO_PS_MAX;
22658}/*WDI_2_HAL_MIMO_PS*/
22659
22660/*Convert WDI ENC type into HAL ENC type*/
22661WPT_STATIC WPT_INLINE tAniEdType
22662WDI_2_HAL_ENC_TYPE
22663(
22664 WDI_EncryptType wdiEncType
22665)
22666{
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 the chances of getting inlined*/
22669 switch ( wdiEncType )
22670 {
22671 case WDI_ENCR_NONE:
22672 return eSIR_ED_NONE;
22673
22674 case WDI_ENCR_WEP40:
22675 return eSIR_ED_WEP40;
22676
22677 case WDI_ENCR_WEP104:
22678 return eSIR_ED_WEP104;
22679
22680 case WDI_ENCR_TKIP:
22681 return eSIR_ED_TKIP;
22682
22683 case WDI_ENCR_CCMP:
22684 return eSIR_ED_CCMP;
22685
22686 case WDI_ENCR_AES_128_CMAC:
22687 return eSIR_ED_AES_128_CMAC;
22688#if defined(FEATURE_WLAN_WAPI)
22689 case WDI_ENCR_WPI:
22690 return eSIR_ED_WPI;
22691#endif
22692 default:
22693 return eSIR_ED_NOT_IMPLEMENTED;
22694 }
22695
22696}/*WDI_2_HAL_ENC_TYPE*/
22697
22698/*Convert WDI WEP type into HAL WEP type*/
22699WPT_STATIC WPT_INLINE tAniWepType
22700WDI_2_HAL_WEP_TYPE
22701(
22702 WDI_WepType wdiWEPType
22703)
22704{
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 the chances of getting inlined*/
22707 switch ( wdiWEPType )
22708 {
22709 case WDI_WEP_STATIC:
22710 return eSIR_WEP_STATIC;
22711
22712 case WDI_WEP_DYNAMIC:
22713 return eSIR_WEP_DYNAMIC;
22714 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022715
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 return eSIR_WEP_MAX;
22717}/*WDI_2_HAL_WEP_TYPE*/
22718
22719WPT_STATIC WPT_INLINE tSirLinkState
22720WDI_2_HAL_LINK_STATE
22721(
22722 WDI_LinkStateType wdiLinkState
22723)
22724{
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022726 the chances of getting inlined*/
22727 switch ( wdiLinkState )
22728 {
22729 case WDI_LINK_IDLE_STATE:
22730 return eSIR_LINK_IDLE_STATE;
22731
22732 case WDI_LINK_PREASSOC_STATE:
22733 return eSIR_LINK_PREASSOC_STATE;
22734
22735 case WDI_LINK_POSTASSOC_STATE:
22736 return eSIR_LINK_POSTASSOC_STATE;
22737
22738 case WDI_LINK_AP_STATE:
22739 return eSIR_LINK_AP_STATE;
22740
22741 case WDI_LINK_IBSS_STATE:
22742 return eSIR_LINK_IBSS_STATE;
22743
22744 case WDI_LINK_BTAMP_PREASSOC_STATE:
22745 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22746
22747 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22748 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22749
22750 case WDI_LINK_BTAMP_AP_STATE:
22751 return eSIR_LINK_BTAMP_AP_STATE;
22752
22753 case WDI_LINK_BTAMP_STA_STATE:
22754 return eSIR_LINK_BTAMP_STA_STATE;
22755
22756 case WDI_LINK_LEARN_STATE:
22757 return eSIR_LINK_LEARN_STATE;
22758
22759 case WDI_LINK_SCAN_STATE:
22760 return eSIR_LINK_SCAN_STATE;
22761
22762 case WDI_LINK_FINISH_SCAN_STATE:
22763 return eSIR_LINK_FINISH_SCAN_STATE;
22764
22765 case WDI_LINK_INIT_CAL_STATE:
22766 return eSIR_LINK_INIT_CAL_STATE;
22767
22768 case WDI_LINK_FINISH_CAL_STATE:
22769 return eSIR_LINK_FINISH_CAL_STATE;
22770
Jeff Johnson295189b2012-06-20 16:38:30 -070022771 case WDI_LINK_LISTEN_STATE:
22772 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022773
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022774 case WDI_LINK_SEND_ACTION_STATE:
22775 return eSIR_LINK_SEND_ACTION_STATE;
22776
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 default:
22778 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022780}
22781
Jeff Johnsone7245742012-09-05 17:12:55 -070022782/*Translate a STA Context from WDI into HAL*/
22783WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022784void
22785WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022786(
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 tConfigStaParams* phalConfigSta,
22788 WDI_ConfigStaReqInfoType* pwdiConfigSta
22789)
22790{
22791 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022792#ifdef WLAN_FEATURE_11AC
22793 /* Get the Version 1 Handler */
22794 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22795 if (WDI_getFwWlanFeatCaps(DOT11AC))
22796 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022797 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022798 }
22799#endif
22800 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 the chances of getting inlined*/
22802
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 wpalMemoryCopy(phalConfigSta->bssId,
22804 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22805
22806 wpalMemoryCopy(phalConfigSta->staMac,
22807 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022808
22809 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22810 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22811 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22812 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22813 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22814 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22815 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22816 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22817 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22818 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22819 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22820 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22821 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22822 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22823 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22824 phalConfigSta->action = pwdiConfigSta->wdiAction;
22825 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22826 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22827 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22828 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22829 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22830 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22831 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022832
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22834
Jeff Johnsone7245742012-09-05 17:12:55 -070022835 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022836 pwdiConfigSta->wdiSupportedRates.opRateMode;
22837 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22838 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22841 }
22842 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22843 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22846 }
22847 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22848 {
22849 phalConfigSta->supportedRates.aniLegacyRates[i] =
22850 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22854 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22855 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022856 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22858 }
22859 phalConfigSta->supportedRates.rxHighestDataRate =
22860 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22861
Jeff Johnsone7245742012-09-05 17:12:55 -070022862#ifdef WLAN_FEATURE_11AC
22863 if(phalConfigSta_V1 != NULL)
22864 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022865 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22866 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22867 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22868 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022869 }
22870#endif
22871
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022873
Jeff Johnsone7245742012-09-05 17:12:55 -070022874#ifdef WLAN_FEATURE_11AC
22875 if(phalConfigSta_V1 != NULL)
22876 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022877 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22878 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022879 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022880 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22881 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22882
Jeff Johnsone7245742012-09-05 17:12:55 -070022883 }
22884#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022885}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022886
22887/*Translate a Rate set info from WDI into HAL*/
22888WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022889WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022890(
Jeff Johnson295189b2012-06-20 16:38:30 -070022891 tSirMacRateSet* pHalRateSet,
22892 WDI_RateSet* pwdiRateSet
22893)
22894{
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22897
22898 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22899 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22900
22901 for ( i = 0; i < pHalRateSet->numRates; i++ )
22902 {
22903 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22904 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022905
Jeff Johnson295189b2012-06-20 16:38:30 -070022906}/*WDI_CopyWDIRateSetToHALRateSet*/
22907
22908
22909/*Translate an EDCA Parameter Record from WDI into HAL*/
22910WPT_STATIC WPT_INLINE void
22911WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022912(
Jeff Johnson295189b2012-06-20 16:38:30 -070022913 tSirMacEdcaParamRecord* phalEdcaParam,
22914 WDI_EdcaParamRecord* pWDIEdcaParam
22915)
22916{
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 the chances of getting inlined*/
22919
22920 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22921 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22922 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22923 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22924
22925 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22926 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22927 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22928}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22929
22930
22931/*Copy a management frame header from WDI fmt into HAL fmt*/
22932WPT_STATIC WPT_INLINE void
22933WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22934(
22935 tSirMacMgmtHdr* pmacMgmtHdr,
22936 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22937)
22938{
22939 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22940 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22941 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22942 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22943 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22944 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22945 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22946 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22947 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22948 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22949 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22950
22951 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22952 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22953
Jeff Johnsone7245742012-09-05 17:12:55 -070022954 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022955 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022956 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022957 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022958 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 pwdiMacMgmtHdr->bssId, 6);
22960
22961 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22962 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22963 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22964
22965}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22966
22967
22968/*Copy config bss parameters from WDI fmt into HAL fmt*/
22969WPT_STATIC WPT_INLINE void
22970WDI_CopyWDIConfigBSSToHALConfigBSS
22971(
22972 tConfigBssParams* phalConfigBSS,
22973 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22974)
22975{
22976
22977 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022978#ifdef WLAN_FEATURE_11AC
22979 /* Get the Version 1 Handler */
22980 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22981 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022982 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022983#endif
22984
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 wpalMemoryCopy( phalConfigBSS->bssId,
22986 pwdiConfigBSS->macBSSID,
22987 WDI_MAC_ADDR_LEN);
22988
22989#ifdef HAL_SELF_STA_PER_BSS
22990 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22991 pwdiConfigBSS->macSelfAddr,
22992 WDI_MAC_ADDR_LEN);
22993#endif
22994
22995 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22996
22997 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22998 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22999
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 pwdiConfigBSS->ucShortSlotTimeSupported;
23002 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23003 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23004 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23005 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23006 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23009 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23010 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23011 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23012 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23013 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23014 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23015 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23016 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23017 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23018 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23019
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 phalConfigBSS->htOperMode =
23021 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023022
23023 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23024 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23025 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23026 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23027
23028#ifdef WLAN_FEATURE_VOWIFI
23029 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23030#endif
23031
23032 /*! Used 32 as magic number because that is how the ssid is declared inside the
23033 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23036 pwdiConfigBSS->wdiSSID.ucLength : 32;
23037 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 pwdiConfigBSS->wdiSSID.sSSID,
23039 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023040
23041 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23042 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023043
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23045 &pwdiConfigBSS->wdiRateSet);
23046
23047 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23048
23049 if(phalConfigBSS->edcaParamsValid)
23050 {
23051 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23052 &pwdiConfigBSS->wdiBEEDCAParams);
23053 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23054 &pwdiConfigBSS->wdiBKEDCAParams);
23055 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23056 &pwdiConfigBSS->wdiVIEDCAParams);
23057 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23058 &pwdiConfigBSS->wdiVOEDCAParams);
23059 }
23060
Jeff Johnsone7245742012-09-05 17:12:55 -070023061 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023062
23063 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23064
23065#ifdef WLAN_FEATURE_VOWIFI_11R
23066
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023069
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 if( phalConfigBSS->extSetStaKeyParamValid )
23071 {
23072 /*-----------------------------------------------------------------------
23073 Copy the STA Key parameters into the HAL message
23074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23077
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23080
23081 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23082
23083 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23084
23085 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23086
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23088 keyIndex++)
23089 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23092 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23093 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23094 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23095 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23096 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23103 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 WDI_MAX_KEY_LENGTH);
23106 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 }
23108 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23109 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 sizeof(phalConfigBSS->extSetStaKeyParam) );
23112 }
23113
23114#endif /*WLAN_FEATURE_VOWIFI_11R*/
23115
Jeff Johnsone7245742012-09-05 17:12:55 -070023116#ifdef WLAN_FEATURE_11AC
23117 if(phalConfigBSS_V1 != NULL)
23118 {
23119 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23120 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23121 }
23122#endif
23123
Jeff Johnson295189b2012-06-20 16:38:30 -070023124}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23125
23126
Jeff Johnsone7245742012-09-05 17:12:55 -070023127/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023128 pointed to by user data */
23129WPT_STATIC WPT_INLINE void
23130WDI_ExtractRequestCBFromEvent
23131(
23132 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 void** ppUserData
23135)
23136{
23137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23138 switch ( pEvent->wdiRequest )
23139 {
23140 case WDI_START_REQ:
23141 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23142 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23143 break;
23144 case WDI_STOP_REQ:
23145 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23146 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23147 break;
23148 case WDI_INIT_SCAN_REQ:
23149 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23150 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23151 break;
23152 case WDI_START_SCAN_REQ:
23153 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23154 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23155 break;
23156 case WDI_END_SCAN_REQ:
23157 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23158 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23159 break;
23160 case WDI_FINISH_SCAN_REQ:
23161 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23162 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23163 break;
23164 case WDI_JOIN_REQ:
23165 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23166 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23167 break;
23168 case WDI_CONFIG_BSS_REQ:
23169 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23170 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23171 break;
23172 case WDI_DEL_BSS_REQ:
23173 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23174 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23175 break;
23176 case WDI_POST_ASSOC_REQ:
23177 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23178 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23179 break;
23180 case WDI_DEL_STA_REQ:
23181 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23182 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23183 break;
23184 case WDI_DEL_STA_SELF_REQ:
23185 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23186 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23187 break;
23188
23189 case WDI_SET_BSS_KEY_REQ:
23190 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23191 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23192 break;
23193 case WDI_RMV_BSS_KEY_REQ:
23194 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23195 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23196 break;
23197 case WDI_SET_STA_KEY_REQ:
23198 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23199 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23200 break;
23201 case WDI_RMV_STA_KEY_REQ:
23202 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23203 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23204 break;
23205 case WDI_ADD_TS_REQ:
23206 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23207 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23208 break;
23209 case WDI_DEL_TS_REQ:
23210 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23211 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23212 break;
23213 case WDI_UPD_EDCA_PRMS_REQ:
23214 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23215 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23216 break;
23217 case WDI_ADD_BA_SESSION_REQ:
23218 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23219 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23220 break;
23221 case WDI_DEL_BA_REQ:
23222 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23223 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23224 break;
23225#ifdef FEATURE_WLAN_CCX
23226 case WDI_TSM_STATS_REQ:
23227 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23228 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23229 break;
23230#endif
23231 case WDI_CH_SWITCH_REQ:
23232 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23233 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23234 break;
23235 case WDI_CONFIG_STA_REQ:
23236 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23237 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23238 break;
23239 case WDI_SET_LINK_ST_REQ:
23240 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23241 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23242 break;
23243 case WDI_GET_STATS_REQ:
23244 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23245 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23246 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023247#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23248 case WDI_GET_ROAM_RSSI_REQ:
23249 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23250 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23251 break;
23252#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 case WDI_UPDATE_CFG_REQ:
23254 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23255 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23256 break;
23257 case WDI_ADD_BA_REQ:
23258 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23259 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23260 break;
23261 case WDI_TRIGGER_BA_REQ:
23262 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23263 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23264 break;
23265 case WDI_UPD_BCON_PRMS_REQ:
23266 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23267 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23268 break;
23269 case WDI_SND_BCON_REQ:
23270 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23271 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23272 break;
23273 case WDI_ENTER_BMPS_REQ:
23274 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23275 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23276 break;
23277 case WDI_EXIT_BMPS_REQ:
23278 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23279 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23280 break;
23281 case WDI_ENTER_UAPSD_REQ:
23282 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23283 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23284 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023285 case WDI_EXIT_UAPSD_REQ:
23286 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23287 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23288 break;
23289 case WDI_SET_UAPSD_PARAM_REQ:
23290 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23291 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23292 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 case WDI_UPDATE_UAPSD_PARAM_REQ:
23294 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23295 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23296 break;
23297 case WDI_CONFIGURE_RXP_FILTER_REQ:
23298 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23299 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23300 break;
23301 case WDI_SET_BEACON_FILTER_REQ:
23302 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23303 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23304 break;
23305 case WDI_REM_BEACON_FILTER_REQ:
23306 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23307 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 case WDI_SET_RSSI_THRESHOLDS_REQ:
23310 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23311 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23312 break;
23313 case WDI_HOST_OFFLOAD_REQ:
23314 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23315 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23316 break;
23317 case WDI_WOWL_ADD_BC_PTRN_REQ:
23318 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23319 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23320 break;
23321 case WDI_WOWL_DEL_BC_PTRN_REQ:
23322 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23323 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23324 break;
23325 case WDI_WOWL_ENTER_REQ:
23326 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23327 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23328 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023329 case WDI_WOWL_EXIT_REQ:
23330 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23331 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23332 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23334 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23335 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23336 break;
23337 case WDI_FLUSH_AC_REQ:
23338 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23339 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23340 break;
23341 case WDI_BTAMP_EVENT_REQ:
23342 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23343 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23344 break;
23345 case WDI_KEEP_ALIVE_REQ:
23346 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23347 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23348 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023349#if defined FEATURE_WLAN_SCAN_PNO
23350 case WDI_SET_PREF_NETWORK_REQ:
23351 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23352 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23353 break;
23354 case WDI_SET_RSSI_FILTER_REQ:
23355 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23356 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23357 break;
23358 case WDI_UPDATE_SCAN_PARAMS_REQ:
23359 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23360 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23361 break;
23362#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 case WDI_SET_TX_PER_TRACKING_REQ:
23364 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23365 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023366 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023367#if defined WLAN_FEATURE_PACKET_FILTERING
23368 case WDI_8023_MULTICAST_LIST_REQ:
23369 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23370 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23371 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023372 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23373 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23374 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23375 break;
23376 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23377 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23378 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23379 break;
23380 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23381 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23382 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23383 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023384#endif
23385 case WDI_SET_POWER_PARAMS_REQ:
23386 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23387 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23388 break;
23389#if defined WLAN_FEATURE_GTK_OFFLOAD
23390 case WDI_GTK_OFFLOAD_REQ:
23391 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23392 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23393 break;
23394 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23395 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23396 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23397 break;
23398#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023399
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 default:
23401 *ppfnReqCB = NULL;
23402 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023403 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 }
23405}/*WDI_ExtractRequestCBFromEvent*/
23406
23407
23408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023409 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023410 frame xtl is enabled for a particular STA.
23411
23412 WDI_PostAssocReq must have been called.
23413
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 @param uSTAIdx: STA index
23415
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 @see WDI_PostAssocReq
23417 @return Result of the function call
23418*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023419wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023420WDI_IsHwFrameTxTranslationCapable
23421(
23422 wpt_uint8 uSTAIdx
23423)
23424{
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 uma value*/
23427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 ------------------------------------------------------------------------*/
23430 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23431 {
23432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23433 "WDI API call before module is initialized - Fail request");
23434
Jeff Johnsone7245742012-09-05 17:12:55 -070023435 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 }
23437
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023438#ifdef WLAN_SOFTAP_VSTA_FEATURE
23439 if (IS_VSTA_IDX(uSTAIdx))
23440 {
23441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23442 "STA %d is a Virtual STA, "
23443 "HW frame translation disabled", uSTAIdx);
23444 return eWLAN_PAL_FALSE;
23445 }
23446#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023447
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 return gWDICb.bFrameTransEnabled;
23449}/*WDI_IsHwFrameTxTranslationCapable*/
23450
23451#ifdef FEATURE_WLAN_SCAN_PNO
23452/**
23453 @brief WDI_SetPreferredNetworkList
23454
Jeff Johnsone7245742012-09-05 17:12:55 -070023455 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023457
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 wdiPNOScanCb: callback for passing back the response
23459 of the Set PNO operation received from the
23460 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023461
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 callback
23464
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 @return Result of the function call
23466*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023468WDI_SetPreferredNetworkReq
23469(
23470 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23471 WDI_PNOScanCb wdiPNOScanCb,
23472 void* pUserData
23473)
23474{
23475 WDI_EventInfoType wdiEventData = {{0}};
23476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23477
23478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 ------------------------------------------------------------------------*/
23481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23482 {
23483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23484 "WDI API call before module is initialized - Fail request");
23485
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023487 }
23488
23489 /*------------------------------------------------------------------------
23490 Fill in Event data and post to the Main FSM
23491 ------------------------------------------------------------------------*/
23492 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023493 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 wdiEventData.pUserData = pUserData;
23497
23498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23499}
23500
23501
23502/**
23503 @brief WDI_SetRssiFilterReq
23504
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023506 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023507
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 wdiRssiFilterCb: callback for passing back the response
23509 of the Set RSSI Filter operation received from the
23510 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023511
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 callback
23514
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 @return Result of the function call
23516*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023517WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023518WDI_SetRssiFilterReq
23519(
23520 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23521 WDI_RssiFilterCb wdiRssiFilterCb,
23522 void* pUserData
23523)
23524{
23525 WDI_EventInfoType wdiEventData = {{0}};
23526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23527
23528 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023529 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 ------------------------------------------------------------------------*/
23531 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23532 {
23533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23534 "WDI API call before module is initialized - Fail request");
23535
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 }
23538
23539 /*------------------------------------------------------------------------
23540 Fill in Event data and post to the Main FSM
23541 ------------------------------------------------------------------------*/
23542 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023545 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 wdiEventData.pUserData = pUserData;
23547
23548 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23549}/*WDI_SetRssiFilterReq*/
23550
23551/**
23552 @brief WDI_UpdateScanParamsReq
23553
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023556
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 wdiUpdateScanParamsCb: callback for passing back the response
23558 of the Set PNO operation received from the
23559 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023560
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023562 callback
23563
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 @return Result of the function call
23565*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023567WDI_UpdateScanParamsReq
23568(
23569 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23570 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23571 void* pUserData
23572)
23573{
23574 WDI_EventInfoType wdiEventData = {{0}};
23575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23576
23577 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 ------------------------------------------------------------------------*/
23580 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23581 {
23582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23583 "WDI API call before module is initialized - Fail request");
23584
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 }
23587
23588 /*------------------------------------------------------------------------
23589 Fill in Event data and post to the Main FSM
23590 ------------------------------------------------------------------------*/
23591 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 wdiEventData.pUserData = pUserData;
23596
23597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23598}
23599
23600/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023603
23604 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023605 pwdiPNOScanReqParams: pointer to the info received
23606 from upper layers
23607 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023608 and its size
23609
Jeff Johnson295189b2012-06-20 16:38:30 -070023610 @return Result of the function call
23611*/
23612
23613WDI_Status
23614WDI_PackPreferredNetworkList
23615(
23616 WDI_ControlBlockType* pWDICtx,
23617 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23618 wpt_uint8** ppSendBuffer,
23619 wpt_uint16* pSize
23620)
23621{
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 wpt_uint16 usDataOffset = 0;
23624 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023625 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023627 /*-----------------------------------------------------------------------
23628 Get message buffer
23629 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023631 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023633 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 {
23635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23636 "Unable to get send buffer in Set PNO req %x ",
23637 pwdiPNOScanReqParams);
23638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 }
23641
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023642 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23643
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 /*-------------------------------------------------------------------------
23645 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23646 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023647 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023649 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23651
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023652 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023655 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023656 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23657
23658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23661 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23662 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23663
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023664 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 {
23666 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023667 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23669
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023670 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023672 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023673
23674 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023675 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023676 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023677
23678 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023679 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023681
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023684 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023685 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23686 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23687 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23688 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023689
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023690 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023692 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023693
23694 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023695 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23697
23698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023700 pPrefNetwListParams->aNetworks[i].ssId.length,
23701 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 }
23703
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023704 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023706 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23707 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23708 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23709
23710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023712 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23714 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23715
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023716 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023718 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023720 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23722 }
23723
23724 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023725 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23727 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23728 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023730
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023731 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023733 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023734
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023735 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23737 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23738 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023741 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023743 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023744
23745 /*Set the output values*/
23746 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023748
23749 return WDI_STATUS_SUCCESS;
23750}/*WDI_PackPreferredNetworkList*/
23751
23752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023755
23756 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 pwdiPNOScanReqParams: pointer to the info received
23758 from upper layers
23759 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 and its size
23761
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 @return Result of the function call
23763*/
23764
23765WDI_Status
23766WDI_PackPreferredNetworkListNew
23767(
23768 WDI_ControlBlockType* pWDICtx,
23769 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23770 wpt_uint8** ppSendBuffer,
23771 wpt_uint16* pSize
23772)
23773{
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 wpt_uint16 usDataOffset = 0;
23776 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023777 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023779
23780 /*-----------------------------------------------------------------------
23781 Get message buffer
23782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023784 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023785 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023786 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023787 {
23788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23789 "Unable to get send buffer in Set PNO req %x ",
23790 pwdiPNOScanReqParams);
23791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 }
23794
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023795 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23796
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 /*-------------------------------------------------------------------------
23798 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23799 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023800 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023801 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023802 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23804
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023805 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23810
23811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023812 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23814 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23815 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023817 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 {
23819 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023820 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23822
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023823 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023825 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023826
23827 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023828 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023830
23831 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023832 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023834
23835 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023836 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023837 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023838
Jeff Johnsone7245742012-09-05 17:12:55 -070023839 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023840 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023841 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23843
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023844 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023846 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023847
23848 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023849 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23851
23852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023853 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023854 pPrefNetwListParams->aNetworks[i].ssId.length,
23855 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 }
23857
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023858 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023859 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23861 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23862 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23863
23864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023866 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23868 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23869
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023870 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023872 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023874 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23876 }
23877
23878 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023879 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23881 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23882 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023885 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023887 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023888
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023889 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23891 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23892 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023893 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023894
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023895 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023897 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023898
Jeff Johnson295189b2012-06-20 16:38:30 -070023899
23900 /*Set the output values*/
23901 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903
23904 return WDI_STATUS_SUCCESS;
23905}/*WDI_PackPreferredNetworkListNew*/
23906
23907/**
23908 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023909
23910 @param pWDICtx: pointer to the WLAN DAL context
23911 pEventData: pointer to the event information structure
23912
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 @return Result of the function call
23914*/
23915WDI_Status
23916WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023917(
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 WDI_ControlBlockType* pWDICtx,
23919 WDI_EventInfoType* pEventData
23920)
23921{
23922 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23923 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023924 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023926 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023927
23928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 -------------------------------------------------------------------------*/
23931 if (( NULL == pEventData ) ||
23932 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23933 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23934 {
23935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 }
23940
23941 /*-------------------------------------------------------------------------
23942 Pack the PNO request structure based on version
23943 -------------------------------------------------------------------------*/
23944 if ( pWDICtx->wdiPNOVersion > 0 )
23945 {
23946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023947 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 pWDICtx->wdiPNOVersion);
23949
23950 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23951 &pSendBuffer, &usSendSize);
23952 }
23953 else
23954 {
23955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023956 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 pWDICtx->wdiPNOVersion);
23958
23959 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23960 &pSendBuffer, &usSendSize);
23961 }
23962
23963 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23964 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23965 {
23966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023967 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 }
23971
23972 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974
23975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23979 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023980}
23981
23982/**
23983 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023984
23985 @param pWDICtx: pointer to the WLAN DAL context
23986 pEventData: pointer to the event information structure
23987
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 @see
23989 @return Result of the function call
23990*/
23991WDI_Status
23992WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023993(
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 WDI_ControlBlockType* pWDICtx,
23995 WDI_EventInfoType* pEventData
23996)
23997{
23998 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23999 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001 wpt_uint16 usDataOffset = 0;
24002 wpt_uint16 usSendSize = 0;
24003 wpt_uint8 ucRssiThreshold;
24004
24005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 -------------------------------------------------------------------------*/
24008 if (( NULL == pEventData ) ||
24009 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24010 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24011 {
24012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 }
24017
24018 /*-----------------------------------------------------------------------
24019 Get message buffer
24020 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 sizeof(ucRssiThreshold),
24023 &pSendBuffer, &usDataOffset, &usSendSize))||
24024 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24025 {
24026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24027 "Unable to get send buffer in Set PNO req %x %x %x",
24028 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 }
24032
24033 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24034
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 wpalMemoryCopy( pSendBuffer+usDataOffset,
24036 &ucRssiThreshold,
24037 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024038
24039 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024041
24042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024043 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024045 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24046 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024047}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024048#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24049/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024050 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024051
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024052 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024053 by the Device Interface
24054
24055 wdiRoamOffloadScancb: callback for passing back the response
24056 of the Roam Candidate Lookup Req operation received from the
24057 device
24058
24059 pUserData: user data will be passed back with the
24060 callback
24061 @return Result of the function call
24062*/
24063WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024064WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024065(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024066 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024067 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24068 void* pUserData
24069)
24070{
24071 WDI_EventInfoType wdiEventData = {{0}};
24072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24073
24074 /*------------------------------------------------------------------------
24075 Sanity Check
24076 ------------------------------------------------------------------------*/
24077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24078 {
24079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24080 "WDI API call before module is initialized - Fail request");
24081
24082 return WDI_STATUS_E_NOT_ALLOWED;
24083 }
24084
24085 /*------------------------------------------------------------------------
24086 Fill in Event data and post to the Main FSM
24087 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024088 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24089 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24090 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024091 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24092 wdiEventData.pUserData = pUserData;
24093
24094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24095}
24096
24097void
24098WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24099{
24100 switch (wdiEdType)
24101 {
24102 case WDI_ED_NONE:
24103 *EdType = eED_NONE;
24104 break;
24105 case WDI_ED_WEP40:
24106 case WDI_ED_WEP104:
24107 *EdType = eED_WEP;
24108 break;
24109 case WDI_ED_TKIP:
24110 *EdType = eED_TKIP;
24111 break;
24112 case WDI_ED_CCMP:
24113#ifdef WLAN_FEATURE_11W
24114 case WDI_ED_AES_128_CMAC:
24115#endif
24116 *EdType = eED_CCMP;
24117 break;
24118#ifdef FEATURE_WLAN_WAPI
24119 case WDI_ED_WPI:
24120 *EdType = eED_WPI;
24121 break;
24122#endif
24123 case WDI_ED_ANY:
24124 *EdType = eED_ANY;
24125 break;
24126
24127 default:
24128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24129 "%s: Unknown Encryption Type", __func__);
24130 break;
24131 }
24132}
24133
24134/**
24135 @brief Helper function to pack Start Roam Candidate Lookup
24136 Request parameters
24137
24138 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024139 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024140 from upper layers
24141 ppSendBuffer, pSize - out pointers of the packed buffer
24142 and its size
24143
24144 @return Result of the function call
24145*/
24146
24147WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024148WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024149(
24150 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024151 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024152 wpt_uint8** ppSendBuffer,
24153 wpt_uint16* pSize
24154)
24155{
24156 wpt_uint8* pSendBuffer = NULL;
24157 wpt_uint16 usDataOffset = 0;
24158 wpt_uint16 usSendSize = 0;
24159 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24160 wpt_uint8 i;
24161 /*-----------------------------------------------------------------------
24162 Get message buffer
24163 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024164 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024165 sizeof(tRoamCandidateListParams),
24166 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024167 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024168 {
24169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24170 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024171 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024172 WDI_ASSERT(0);
24173 return WDI_STATUS_E_FAILURE;
24174 }
24175 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024176 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024177 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024178 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024179 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024180 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024181 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024182 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024183 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024184 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024185 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024186
24187 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024188 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024189 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024190 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024191 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24192 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024193 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24194 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24195 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24196 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24197 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24198 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24199 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24200 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24201 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24202 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24203 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24204 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24205 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24206 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024207 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024208 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24209 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24210 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024211
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24213 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24214 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24215 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24216 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24217 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24218 "HomeAwayTime=%d\n",
24219 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24220 pRoamCandidateListParams->RoamScanOffloadEnabled,
24221 pRoamCandidateListParams->Command,
24222 pRoamCandidateListParams->StartScanReason,
24223 pRoamCandidateListParams->NeighborScanTimerPeriod,
24224 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24225 pRoamCandidateListParams->NeighborScanChannelMinTime,
24226 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24227 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24228 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24229 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24230 pRoamCandidateListParams->ConnectedNetwork.authentication,
24231 pRoamCandidateListParams->ConnectedNetwork.encryption,
24232 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24233 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24234 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024235 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024236 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024237 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024238 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024239 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24240 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024241 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024242 pRoamCandidateListParams->us24GProbeSize);
24243 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024244 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024245 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024246 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024247 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24248 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024249 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024250 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024251 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24252 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24253 pRoamCandidateListParams->nProbes =
24254 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24255 pRoamCandidateListParams->HomeAwayTime =
24256 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024258 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24259 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024261 }
24262
24263
24264 /*Set the output values*/
24265 *ppSendBuffer = pSendBuffer;
24266 *pSize = usSendSize;
24267 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024268}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024269
24270/**
24271 @brief Process Start Roam Candidate Lookup Request function
24272
24273 @param pWDICtx: pointer to the WLAN DAL context
24274 pEventData: pointer to the event information structure
24275
24276 @return Result of the function call
24277*/
24278WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024279WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024280(
24281 WDI_ControlBlockType* pWDICtx,
24282 WDI_EventInfoType* pEventData
24283)
24284{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024285 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024286 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24287 wpt_uint8* pSendBuffer = NULL;
24288 wpt_uint16 usSendSize = 0;
24289 WDI_Status wdiStatus;
24290 /*-------------------------------------------------------------------------
24291 Sanity check
24292 -------------------------------------------------------------------------*/
24293 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024294 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024295 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24296 {
24297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24298 "%s: Invalid parameters", __func__);
24299 WDI_ASSERT(0);
24300 return WDI_STATUS_E_FAILURE;
24301 }
24302
24303 /*-------------------------------------------------------------------------
24304 Pack the Start Roam Candidate Lookup request structure based on version
24305 -------------------------------------------------------------------------*/
24306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24307 "%s: Packing Roam Candidate Lookup request ", __func__);
24308
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024309 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024310 &pSendBuffer, &usSendSize);
24311
24312 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24313 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24314 {
24315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24316 "%s: failed to pack request parameters", __func__);
24317 WDI_ASSERT(0);
24318 return wdiStatus;
24319 }
24320
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024321 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24322 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024323
24324 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024325 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024326 -------------------------------------------------------------------------*/
24327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024328 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024329}
24330
24331/**
24332 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24333 response is being received over the bus from HAL)
24334
24335 @param pWDICtx: pointer to the WLAN DAL context
24336 pEventData: pointer to the event information structure
24337
24338 @see
24339 @return Result of the function call
24340*/
24341WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024342WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024343(
24344 WDI_ControlBlockType* pWDICtx,
24345 WDI_EventInfoType* pEventData
24346)
24347{
24348 WDI_Status wdiStatus;
24349 eHalStatus halStatus;
24350 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24351
24352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24353
24354 /*-------------------------------------------------------------------------
24355 Sanity check
24356 -------------------------------------------------------------------------*/
24357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24358 ( NULL == pEventData->pEventData ))
24359 {
24360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24361 "%s: Invalid parameters", __func__);
24362 WDI_ASSERT(0);
24363 return WDI_STATUS_E_FAILURE;
24364 }
24365
24366 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24367
24368 /*-------------------------------------------------------------------------
24369 Extract response and send it to UMAC
24370 -------------------------------------------------------------------------*/
24371 halStatus = *((eHalStatus*)pEventData->pEventData);
24372 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24373
24374 /*Notify UMAC*/
24375 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24376
24377 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024378}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024379#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024380
24381/**
24382 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024383
24384 @param pWDICtx: pointer to the WLAN DAL context
24385 pEventData: pointer to the event information structure
24386
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 @see
24388 @return Result of the function call
24389*/
24390WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024391WDI_PackUpdateScanParamsReq
24392(
24393 WDI_ControlBlockType* pWDICtx,
24394 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24395 wpt_uint8** ppSendBuffer,
24396 wpt_uint16* pSize
24397)
24398{
24399 wpt_uint8* pSendBuffer = NULL;
24400 wpt_uint16 usDataOffset = 0;
24401 wpt_uint16 usSendSize = 0;
24402 tUpdateScanParams updateScanParams = {0};
24403
24404
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024406 "Begin WDI Update Scan Parameters Old Style Params");
24407 /*-----------------------------------------------------------------------
24408 Get message buffer
24409 -----------------------------------------------------------------------*/
24410 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24411 sizeof(updateScanParams),
24412 &pSendBuffer, &usDataOffset, &usSendSize))||
24413 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24414 {
24415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24416 "Unable to get send buffer in Update Scan Params req %x",
24417 pwdiUpdateScanParams);
24418 WDI_ASSERT(0);
24419 return WDI_STATUS_E_FAILURE;
24420 }
24421
24422 //
24423 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24424 //
24425
24426 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24427 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24428
24429 updateScanParams.ucChannelCount =
24430 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24431 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24432 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24433 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24434
24435 wpalMemoryCopy( updateScanParams.aChannels,
24436 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24437 updateScanParams.ucChannelCount);
24438
24439
24440 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24441 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24442 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24443 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24444 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24445
24446 wpalMemoryCopy( pSendBuffer+usDataOffset,
24447 &updateScanParams,
24448 sizeof(updateScanParams));
24449
24450 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24451 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24452
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024454 "End Update Scan Parameters Old Style");
24455
24456 /*Set the output values*/
24457 *ppSendBuffer = pSendBuffer;
24458 *pSize = usSendSize;
24459
24460 return WDI_STATUS_SUCCESS;
24461}
24462
24463/**
24464 @brief Process Update Scan Params function
24465
24466 @param pWDICtx: pointer to the WLAN DAL context
24467 pEventData: pointer to the event information structure
24468
24469 @see
24470 @return Result of the function call
24471*/
24472WDI_Status
24473WDI_PackUpdateScanParamsReqEx
24474(
24475 WDI_ControlBlockType* pWDICtx,
24476 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24477 wpt_uint8** ppSendBuffer,
24478 wpt_uint16* pSize
24479)
24480{
24481 wpt_uint8* pSendBuffer = NULL;
24482 wpt_uint16 usDataOffset = 0;
24483 wpt_uint16 usSendSize = 0;
24484 tUpdateScanParamsEx updateScanParams = {0};
24485
24486
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024487 /*-----------------------------------------------------------------------
24488 Get message buffer
24489 -----------------------------------------------------------------------*/
24490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24491 sizeof(updateScanParams),
24492 &pSendBuffer, &usDataOffset, &usSendSize))||
24493 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24494 {
24495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24496 "Unable to get send buffer in Update Scan Params Ex req %x",
24497 pwdiUpdateScanParams);
24498 WDI_ASSERT(0);
24499 return WDI_STATUS_E_FAILURE;
24500 }
24501
24502 //
24503 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24504 //
24505
24506 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24507 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24508
24509 updateScanParams.ucChannelCount =
24510 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24511 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24512 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24513 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24514
24515 wpalMemoryCopy( updateScanParams.aChannels,
24516 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24517 updateScanParams.ucChannelCount);
24518
24519
24520 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24521 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24522 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24523 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24524 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24525
24526 wpalMemoryCopy( pSendBuffer+usDataOffset,
24527 &updateScanParams,
24528 sizeof(updateScanParams));
24529
24530 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24531 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24532
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024533 /*Set the output values*/
24534 *ppSendBuffer = pSendBuffer;
24535 *pSize = usSendSize;
24536
24537 return WDI_STATUS_SUCCESS;
24538}
24539
24540/**
24541 @brief Process Update Scan Params function
24542
24543 @param pWDICtx: pointer to the WLAN DAL context
24544 pEventData: pointer to the event information structure
24545
24546 @see
24547 @return Result of the function call
24548*/
24549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024550WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024551(
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 WDI_ControlBlockType* pWDICtx,
24553 WDI_EventInfoType* pEventData
24554)
24555{
24556 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24557 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024560 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024561
24562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 -------------------------------------------------------------------------*/
24565 if (( NULL == pEventData ) ||
24566 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24567 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24568 {
24569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 }
24574
24575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24576 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024577
24578 //
24579 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24580 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024581 if ( pWDICtx->wlanVersion.revision < 1 )
24582 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024583 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024584 &pSendBuffer, &usSendSize);
24585 }
24586 else
24587 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024588 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24589 &pSendBuffer, &usSendSize);
24590 }
24591
24592 if(WDI_STATUS_SUCCESS != wdiStatus)
24593 {
24594 //memory allocation failed
24595 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024596 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024597
Jeff Johnson295189b2012-06-20 16:38:30 -070024598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024599 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024602 wdiUpdateScanParamsCb, pEventData->pUserData,
24603 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024604}
24605
24606/**
24607 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024608
24609 @param pWDICtx: pointer to the WLAN DAL context
24610 pEventData: pointer to the event information structure
24611
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 @see
24613 @return Result of the function call
24614*/
24615WDI_Status
24616WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024617(
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 WDI_ControlBlockType* pWDICtx,
24619 WDI_EventInfoType* pEventData
24620)
24621{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024622 WDI_LowLevelIndType wdiInd;
24623 tpPrefNetwFoundParams pNetwFoundParams;
24624 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024625
24626
24627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 -------------------------------------------------------------------------*/
24630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24631 ( NULL == pEventData->pEventData ))
24632 {
24633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 }
24638
24639 /*-------------------------------------------------------------------------
24640 Extract indication and send it to UMAC
24641 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024642 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24643
24644 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24645 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24646 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24647
24648 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24649 {
24650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24651 "%s: fail to allocate memory", __func__);
24652 return WDI_STATUS_MEM_FAILURE;
24653 }
24654
24655 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24656 (pNetwFoundParams->ssId.length < 32 )?
24657 pNetwFoundParams->ssId.length : 32;
24658 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24659 pNetwFoundParams->ssId.ssId,
24660 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24661 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24662 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24663 pNetwFoundParams->frameLength;
24664 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24665 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24666 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024667
24668 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024669 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024670
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 // DEBUG
24672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24673 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24674 wdiInd.wdiIndicationType,
24675 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24676 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24677
ltimariu034f7d62013-01-24 18:54:33 -080024678 if ( pWDICtx->wdiLowLevelIndCB )
24679 {
24680 /*Notify UMAC*/
24681 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24682 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024683
24684 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024685}
24686
24687/**
24688 @brief Process PNO Rsp function (called when a
24689 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024690
24691 @param pWDICtx: pointer to the WLAN DAL context
24692 pEventData: pointer to the event information structure
24693
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 @see
24695 @return Result of the function call
24696*/
24697WDI_Status
24698WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024699(
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 WDI_ControlBlockType* pWDICtx,
24701 WDI_EventInfoType* pEventData
24702)
24703{
24704 WDI_Status wdiStatus;
24705 eHalStatus halStatus;
24706 WDI_PNOScanCb wdiPNOScanCb = NULL;
24707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24708
24709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 -------------------------------------------------------------------------*/
24712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24713 ( NULL == pEventData->pEventData ))
24714 {
24715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024719 }
24720
24721
Jeff Johnsone7245742012-09-05 17:12:55 -070024722 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024723
24724 /*-------------------------------------------------------------------------
24725 Extract response and send it to UMAC
24726 -------------------------------------------------------------------------*/
24727 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024728 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024729
24730 /*Notify UMAC*/
24731 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24732
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024734}/*WDI_ProcessSetPreferredNetworkRsp*/
24735
24736/**
24737 @brief Process RSSI Filter Rsp function (called when a
24738 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024739
24740 @param pWDICtx: pointer to the WLAN DAL context
24741 pEventData: pointer to the event information structure
24742
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 @see
24744 @return Result of the function call
24745*/
24746WDI_Status
24747WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024748(
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 WDI_ControlBlockType* pWDICtx,
24750 WDI_EventInfoType* pEventData
24751)
24752{
24753 WDI_Status wdiStatus;
24754 eHalStatus halStatus;
24755 WDI_RssiFilterCb wdiRssiFilterCb;
24756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24757
24758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 -------------------------------------------------------------------------*/
24761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24762 ( NULL == pEventData->pEventData ))
24763 {
24764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 }
24769
Jeff Johnsone7245742012-09-05 17:12:55 -070024770 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024771
24772 /*-------------------------------------------------------------------------
24773 Extract response and send it to UMAC
24774 -------------------------------------------------------------------------*/
24775 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024776 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024777
24778 /*Notify UMAC*/
24779 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24780
Jeff Johnsone7245742012-09-05 17:12:55 -070024781 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024782}/*WDI_ProcessSetRssiFilterRsp*/
24783
24784/**
24785 @brief Process Update Scan Params Rsp function (called when a
24786 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024787
24788 @param pWDICtx: pointer to the WLAN DAL context
24789 pEventData: pointer to the event information structure
24790
Jeff Johnson295189b2012-06-20 16:38:30 -070024791 @see
24792 @return Result of the function call
24793*/
24794WDI_Status
24795WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024796(
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 WDI_ControlBlockType* pWDICtx,
24798 WDI_EventInfoType* pEventData
24799)
24800{
24801 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024802 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024803 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024804 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24806
24807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 -------------------------------------------------------------------------*/
24810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24811 ( NULL == pEventData->pEventData ))
24812 {
24813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024817 }
24818
24819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024820 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024821
Jeff Johnsone7245742012-09-05 17:12:55 -070024822 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024823
24824 /*-------------------------------------------------------------------------
24825 Extract response and send it to UMAC
24826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024827 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24828 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 sizeof(halUpdScanParams.status));
24830
24831 uStatus = halUpdScanParams.status;
24832
24833 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024835
24836 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024837 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024838
Jeff Johnsone7245742012-09-05 17:12:55 -070024839 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024840
24841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024842 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 halUpdScanParams.status);
24844
24845 /*Notify UMAC*/
24846 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24847
Jeff Johnsone7245742012-09-05 17:12:55 -070024848 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024849}
24850#endif // FEATURE_WLAN_SCAN_PNO
24851
24852#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024853WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024854WDI_8023MulticastListReq
24855(
24856 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24857 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24858 void* pUserData
24859)
24860{
24861 WDI_EventInfoType wdiEventData;
24862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24863
24864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024865 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024866
24867 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024868 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024869 ------------------------------------------------------------------------*/
24870 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24871 {
24872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24873 "WDI API call before module is initialized - Fail request");
24874
Jeff Johnsone7245742012-09-05 17:12:55 -070024875 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024876 }
24877
24878 /*------------------------------------------------------------------------
24879 Fill in Event data and post to the Main FSM
24880 ------------------------------------------------------------------------*/
24881 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024882 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024884 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024885 wdiEventData.pUserData = pUserData;
24886
24887 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24888}
24889
Jeff Johnsone7245742012-09-05 17:12:55 -070024890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024891WDI_ReceiveFilterSetFilterReq
24892(
24893 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24894 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24895 void* pUserData
24896)
24897{
24898 WDI_EventInfoType wdiEventData;
24899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24900
24901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024902 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024903
24904 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024905 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024906 ------------------------------------------------------------------------*/
24907 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24908 {
24909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24910 "WDI API call before module is initialized - Fail request");
24911
Jeff Johnsone7245742012-09-05 17:12:55 -070024912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024913 }
24914
24915 /*------------------------------------------------------------------------
24916 Fill in Event data and post to the Main FSM
24917 ------------------------------------------------------------------------*/
24918 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024919 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24920 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024921 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24922 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024923 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024924 wdiEventData.pUserData = pUserData;
24925
24926
24927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24928}
24929
Jeff Johnsone7245742012-09-05 17:12:55 -070024930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024931WDI_FilterMatchCountReq
24932(
24933 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24934 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24935 void* pUserData
24936)
24937{
24938 WDI_EventInfoType wdiEventData;
24939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24940
24941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024942 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024943
24944 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024945 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024946 ------------------------------------------------------------------------*/
24947 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24948 {
24949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24950 "WDI API call before module is initialized - Fail request");
24951
Jeff Johnsone7245742012-09-05 17:12:55 -070024952 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024953 }
24954
24955 /*------------------------------------------------------------------------
24956 Fill in Event data and post to the Main FSM
24957 ------------------------------------------------------------------------*/
24958 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024959 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024961 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024962 wdiEventData.pUserData = pUserData;
24963
24964
24965 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24966}
24967
Jeff Johnsone7245742012-09-05 17:12:55 -070024968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024969WDI_ReceiveFilterClearFilterReq
24970(
24971 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24972 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24973 void* pUserData
24974)
24975{
24976 WDI_EventInfoType wdiEventData;
24977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24978
24979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024980 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024981
24982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 ------------------------------------------------------------------------*/
24985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24986 {
24987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24988 "WDI API call before module is initialized - Fail request");
24989
Jeff Johnsone7245742012-09-05 17:12:55 -070024990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024991 }
24992
24993 /*------------------------------------------------------------------------
24994 Fill in Event data and post to the Main FSM
24995 ------------------------------------------------------------------------*/
24996 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024999 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025000 wdiEventData.pUserData = pUserData;
25001
25002
25003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25004}
25005
25006/**
25007 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025008
25009 @param pWDICtx: pointer to the WLAN DAL context
25010 pEventData: pointer to the event information structure
25011
Jeff Johnson295189b2012-06-20 16:38:30 -070025012 @see
25013 @return Result of the function call
25014*/
25015WDI_Status
25016WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025017(
Jeff Johnson295189b2012-06-20 16:38:30 -070025018 WDI_ControlBlockType* pWDICtx,
25019 WDI_EventInfoType* pEventData
25020)
25021{
25022 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25023 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025024 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 wpt_uint16 usDataOffset = 0;
25026 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025027 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025028 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025029 wpt_uint8 ucCurrentBSSSesIdx = 0;
25030 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025031
25032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025033 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025034
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025035 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25036 if( NULL == pRcvFltMcAddrListType )
25037 {
25038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25039 "Failed to alloc in WDI_Process8023MulticastListReq");
25040 return WDI_STATUS_E_FAILURE;
25041 }
25042
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 -------------------------------------------------------------------------*/
25046 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025049 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25051 {
25052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025053 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025054 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 return WDI_STATUS_E_FAILURE;
25057 }
25058
25059 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25060 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25061 &pBSSSes);
25062 if ( NULL == pBSSSes )
25063 {
25064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025065 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025066 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 }
25069
25070 /*-----------------------------------------------------------------------
25071 Get message buffer
25072 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25074 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 sizeof(tHalRcvFltMcAddrListType),
25076 &pSendBuffer, &usDataOffset, &usSendSize))||
25077 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25078 {
25079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25080 "Unable to get send buffer in "
25081 "WDI_Process8023MulticastListReq() %x %x %x",
25082 pEventData, pwdiFltPktSetMcListReqParamsType,
25083 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025084 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 }
25088
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025089 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025091 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025093 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25095 sizeof(tSirMacAddr));
25096 }
25097
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025098 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025100 pRcvFltMcAddrListType,
25101 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025102
25103 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105
25106
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025107 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025109 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025114}
25115
25116/**
25117 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025118
25119 @param pWDICtx: pointer to the WLAN DAL context
25120 pEventData: pointer to the event information structure
25121
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 @see
25123 @return Result of the function call
25124*/
25125WDI_Status
25126WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025127(
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 WDI_ControlBlockType* pWDICtx,
25129 WDI_EventInfoType* pEventData
25130)
25131{
25132 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25133 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025135 wpt_uint16 usDataOffset = 0;
25136 wpt_uint16 usSendSize = 0;
25137 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025138 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 wpt_uint8 ucCurrentBSSSesIdx = 0;
25141 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025142 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25143 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025144
25145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025146 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025147
25148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 -------------------------------------------------------------------------*/
25151 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025152 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025154 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025155 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25156 {
25157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 return WDI_STATUS_E_FAILURE;
25161 }
25162
25163 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25164 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25165 &pBSSSes);
25166 if ( NULL == pBSSSes )
25167 {
25168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025169 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 }
25172
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025173 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25174 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025175
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025176 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25177 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25178 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25179
25180 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25181 usSessRcvPktFilterCfgSize);
25182
25183 if(NULL == pSessRcvPktFilterCfg)
25184 {
25185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25186 "%s: Failed to allocate memory for "
25187 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025188 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025189 WDI_ASSERT(0);
25190 return WDI_STATUS_E_FAILURE;
25191 }
25192
25193 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25194
25195 /*-----------------------------------------------------------------------
25196 Get message buffer
25197 -----------------------------------------------------------------------*/
25198
25199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25200 usSessRcvPktFilterCfgSize,
25201 &pSendBuffer, &usDataOffset, &usSendSize))||
25202 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25203 {
25204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25205 "Unable to get send buffer in "
25206 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25207 pEventData, pwdiSetRcvPktFilterReqInfo,
25208 wdiReceiveFilterSetFilterCb);
25209 WDI_ASSERT(0);
25210 wpalMemoryFree(pSessRcvPktFilterCfg);
25211 return WDI_STATUS_E_FAILURE;
25212 }
25213
25214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25215 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25216 usSendSize,pSessRcvPktFilterCfg);
25217
25218 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25219 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25220 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25221 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25222
25223 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25224
25225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25226 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25227 pSessRcvPktFilterCfg->filterType);
25228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25229 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25230 pSessRcvPktFilterCfg->coleasceTime);
25231
25232 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25233 {
25234 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25235 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25236 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25237 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25238 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25239 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25240 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25241 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25242
25243 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25244 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25245 8);
25246 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25247 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25248 8);
25249
25250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25251 "Out:Proto %d Comp Flag %d \n",
25252 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25253 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25254
25255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25256 "Data Offset %d Data Len %d\n",
25257 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25258 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25259
25260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25261 "CData: %d:%d:%d:%d:%d:%d\n",
25262 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25263 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25264 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25265 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25266 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25267 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25268
25269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25270 "MData: %d:%d:%d:%d:%d:%d\n",
25271 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25272 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25273 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25274 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25275 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25276 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25277 }
25278
25279 wpalMemoryCopy( pSendBuffer+usDataOffset,
25280 pSessRcvPktFilterCfg,
25281 usSessRcvPktFilterCfgSize);
25282
25283
25284 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25285 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25286
25287 wpalMemoryFree(pSessRcvPktFilterCfg);
25288
25289 }
25290 /*If SLM_SESSIONIZATION is not supported then do this */
25291 else
25292 {
25293 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25294 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25295 * sizeof(tHalRcvPktFilterParams));
25296
25297 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 usRcvPktFilterCfgSize);
25299
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025300 if(NULL == pRcvPktFilterCfg)
25301 {
25302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25303 "%s: Failed to allocate memory for "
25304 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025305 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025306 WDI_ASSERT(0);
25307 return WDI_STATUS_E_FAILURE;
25308 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025309
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025310 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025312 /*-----------------------------------------------------------------------
25313 Get message buffer
25314 -----------------------------------------------------------------------*/
25315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 usRcvPktFilterCfgSize,
25317 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025318 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25319 {
25320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025321 "Unable to get send buffer in "
25322 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25323 pEventData, pwdiSetRcvPktFilterReqInfo,
25324 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025325 WDI_ASSERT(0);
25326 wpalMemoryFree(pRcvPktFilterCfg);
25327 return WDI_STATUS_E_FAILURE;
25328 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025329
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025331 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025332 usSendSize,usRcvPktFilterCfgSize);
25333
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025334 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25335 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25336 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25337 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025340 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025341 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025343 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025344 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025345
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025346 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25347 {
25348 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25349 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25350 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25351 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25352 pRcvPktFilterCfg->paramsData[i].dataOffset =
25353 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25354 pRcvPktFilterCfg->paramsData[i].dataLength =
25355 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025357 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25359 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025360 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25362 8);
25363
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025366 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025367 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25368
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25370 "Data Offset %d Data Len %d\n",
25371 pRcvPktFilterCfg->paramsData[i].dataOffset,
25372 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025373
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25375 "CData: %d:%d:%d:%d:%d:%d\n",
25376 pRcvPktFilterCfg->paramsData[i].compareData[0],
25377 pRcvPktFilterCfg->paramsData[i].compareData[1],
25378 pRcvPktFilterCfg->paramsData[i].compareData[2],
25379 pRcvPktFilterCfg->paramsData[i].compareData[3],
25380 pRcvPktFilterCfg->paramsData[i].compareData[4],
25381 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025382
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25384 "MData: %d:%d:%d:%d:%d:%d\n",
25385 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25386 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25387 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25388 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25389 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25390 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25391 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025393 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025394 pRcvPktFilterCfg,
25395 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025396
25397
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025398 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25399 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
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_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025402 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025403 wpalMemoryFree(pRcvPktFilterCfg);
25404 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025406 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025410 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025411}
25412
25413/**
25414 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025415
25416 @param pWDICtx: pointer to the WLAN DAL context
25417 pEventData: pointer to the event information structure
25418
Jeff Johnson295189b2012-06-20 16:38:30 -070025419 @see
25420 @return Result of the function call
25421*/
25422WDI_Status
25423WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025424(
Jeff Johnson295189b2012-06-20 16:38:30 -070025425 WDI_ControlBlockType* pWDICtx,
25426 WDI_EventInfoType* pEventData
25427)
25428{
25429 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25430 NULL;
25431 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25432 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 wpt_uint16 usDataOffset = 0;
25435 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025436 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25437 wpt_uint8 ucCurrentBSSSesIdx = 0;
25438 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025439
25440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025441 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025442
25443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 -------------------------------------------------------------------------*/
25446 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025447 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025449 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025450 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25451 {
25452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 }
25457
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025458 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25459 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25460 &pBSSSes);
25461 if ( NULL == pBSSSes )
25462 {
25463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025464 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025465 return WDI_STATUS_E_FAILURE;
25466 }
25467
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 /*-----------------------------------------------------------------------
25469 Get message buffer
25470 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025471 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25472 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025473 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025475 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 {
25477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25478 "Unable to get send buffer in "
25479 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25480 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25481 wdiFilterMatchCountCb);
25482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 }
25485
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025486 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25487 wpalMemoryCopy( pSendBuffer+usDataOffset,
25488 &rcvFltPktMatchCntReqParam,
25489 sizeof(rcvFltPktMatchCntReqParam));
25490
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 //
25492 // Don't need to fill send buffer other than header
25493 //
25494 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025496
25497
25498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025499 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25502 wdiFilterMatchCountCb,
25503 pEventData->pUserData,
25504 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025505}
25506
25507/**
25508 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025509
25510 @param pWDICtx: pointer to the WLAN DAL context
25511 pEventData: pointer to the event information structure
25512
Jeff Johnson295189b2012-06-20 16:38:30 -070025513 @see
25514 @return Result of the function call
25515*/
25516WDI_Status
25517WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025518(
Jeff Johnson295189b2012-06-20 16:38:30 -070025519 WDI_ControlBlockType* pWDICtx,
25520 WDI_EventInfoType* pEventData
25521)
Jeff Johnsone7245742012-09-05 17:12:55 -070025522{
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25524 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 wpt_uint16 usDataOffset = 0;
25527 wpt_uint16 usSendSize = 0;
25528 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025529 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025530 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025531
25532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025533 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025534
25535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 -------------------------------------------------------------------------*/
25538 if (( NULL == pEventData ) ||
25539 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25540 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25543 {
25544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025547 return WDI_STATUS_E_FAILURE;
25548 }
25549
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025550 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25552 &pBSSSes);
25553 if ( NULL == pBSSSes )
25554 {
25555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025556 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 }
25559
25560 /*-----------------------------------------------------------------------
25561 Get message buffer
25562 -----------------------------------------------------------------------*/
25563 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 sizeof(tHalRcvFltPktClearParam),
25566 &pSendBuffer, &usDataOffset, &usSendSize))||
25567 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25568 {
25569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25570 "Unable to get send buffer in "
25571 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25572 pEventData, pwdiRcvFltPktClearReqParamsType,
25573 wdiRcvFltPktClearFilterCb);
25574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 }
25577
25578
25579 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025582 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025583
Jeff Johnsone7245742012-09-05 17:12:55 -070025584 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25585 wpalMemoryCopy( pSendBuffer+usDataOffset,
25586 &rcvFltPktClearParam,
25587 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025588
25589 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025590 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025591
25592
25593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025594 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025598 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025599}
25600
25601/**
25602 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025603
25604 @param pWDICtx: pointer to the WLAN DAL context
25605 pEventData: pointer to the event information structure
25606
Jeff Johnson295189b2012-06-20 16:38:30 -070025607 @see
25608 @return Result of the function call
25609*/
25610WDI_Status
25611WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025612(
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 WDI_ControlBlockType* pWDICtx,
25614 WDI_EventInfoType* pEventData
25615)
25616{
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 eHalStatus halStatus;
25618 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025619 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25620 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25622
25623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025624 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025625
25626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 -------------------------------------------------------------------------*/
25629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25630 ( NULL == pEventData->pEventData ))
25631 {
25632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 }
25637
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025639
25640 /*-------------------------------------------------------------------------
25641 Extract response and send it to UMAC
25642 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025643 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25644 {
25645 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25646 pEventData->pEventData,
25647 sizeof(halRcvFltPktSetMcListRsp));
25648
25649 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25650 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25651 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25652 halRcvFltPktSetMcListRsp.bssIdx;
25653 }
25654 else
25655 {
25656 halStatus = *((eHalStatus*)pEventData->pEventData);
25657 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25658 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025659
25660 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025661 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025662
Jeff Johnsone7245742012-09-05 17:12:55 -070025663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025664}
25665
25666/**
25667 @brief Process Set Rsp function (called when a
25668 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025669
25670 @param pWDICtx: pointer to the WLAN DAL context
25671 pEventData: pointer to the event information structure
25672
Jeff Johnson295189b2012-06-20 16:38:30 -070025673 @see
25674 @return Result of the function call
25675*/
25676WDI_Status
25677WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025678(
Jeff Johnson295189b2012-06-20 16:38:30 -070025679 WDI_ControlBlockType* pWDICtx,
25680 WDI_EventInfoType* pEventData
25681)
25682{
Jeff Johnson295189b2012-06-20 16:38:30 -070025683 eHalStatus halStatus;
25684 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025685 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25686 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25688
25689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025690 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025691
25692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 -------------------------------------------------------------------------*/
25695 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25696 ( NULL == pEventData->pEventData ))
25697 {
25698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 }
25703
25704 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025705 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025706
25707 /*-------------------------------------------------------------------------
25708 Extract response and send it to UMAC
25709 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025710 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25711 {
25712 wpalMemoryCopy( &halSetPktFilterRspParams,
25713 pEventData->pEventData,
25714 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025715
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025716 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25717 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25718 }
25719 else
25720 {
25721 halStatus = *((eHalStatus*)pEventData->pEventData);
25722 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25723 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025724 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025725 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025726
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025728}
25729
25730/**
25731 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025732
25733 @param pWDICtx: pointer to the WLAN DAL context
25734 pEventData: pointer to the event information structure
25735
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 @see
25737 @return Result of the function call
25738*/
25739WDI_Status
25740WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025741(
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 WDI_ControlBlockType* pWDICtx,
25743 WDI_EventInfoType* pEventData
25744)
25745{
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025748 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25749 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025750
25751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25752
25753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025754 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025755
25756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 -------------------------------------------------------------------------*/
25759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25760 ( NULL == pEventData->pEventData ))
25761 {
25762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025766 }
25767
Jeff Johnsone7245742012-09-05 17:12:55 -070025768 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025769
25770 /*-------------------------------------------------------------------------
25771 Extract response and send it to UMAC
25772 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025773 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25774 {
25775 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25776 pEventData->pEventData,
25777 sizeof(halRcvFltrPktMatachRsp));
25778
25779 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25780 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25781 }
25782 else
25783 {
25784 halStatus = *((eHalStatus*)pEventData->pEventData);
25785 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25786 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025787
25788 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025789 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025790
Jeff Johnsone7245742012-09-05 17:12:55 -070025791 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025792}
25793
25794/**
25795 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025796
25797 @param pWDICtx: pointer to the WLAN DAL context
25798 pEventData: pointer to the event information structure
25799
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 @see
25801 @return Result of the function call
25802*/
25803WDI_Status
25804WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025805(
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 WDI_ControlBlockType* pWDICtx,
25807 WDI_EventInfoType* pEventData
25808)
25809{
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 eHalStatus halStatus;
25811 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025812 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25813 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25815
25816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025817 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025818
25819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025821 -------------------------------------------------------------------------*/
25822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25823 ( NULL == pEventData->pEventData ))
25824 {
25825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025829 }
25830
25831 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025832 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025833
25834 /*-------------------------------------------------------------------------
25835 Extract response and send it to UMAC
25836 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025837 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25838 {
25839 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25840 pEventData->pEventData,
25841 sizeof(halRcvFltPktClearRspMsg));
25842
25843 wdiRcvFltPktClearRspParamsType.wdiStatus =
25844 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25845 wdiRcvFltPktClearRspParamsType.bssIdx =
25846 halRcvFltPktClearRspMsg.bssIdx;
25847 }
25848 else
25849 {
25850 halStatus = *((eHalStatus*)pEventData->pEventData);
25851 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25852 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025853
25854 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025855 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025856
Jeff Johnsone7245742012-09-05 17:12:55 -070025857 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025858}
25859#endif // WLAN_FEATURE_PACKET_FILTERING
25860
25861/**
25862 @brief Process Shutdown Rsp function
25863 There is no shutdown response comming from HAL
25864 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025865
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025867 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025868
25869 @see
25870 @return Result of the function call
25871*/
25872WDI_Status
25873WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025874(
Jeff Johnson295189b2012-06-20 16:38:30 -070025875 WDI_ControlBlockType* pWDICtx,
25876 WDI_EventInfoType* pEventData
25877)
25878{
25879 /*There is no shutdown response comming from HAL - function just kept for
25880 simmetry */
25881 WDI_ASSERT(0);
25882 return WDI_STATUS_SUCCESS;
25883}/*WDI_ProcessShutdownRsp*/
25884
25885/**
25886 @brief WDI_SetPowerParamsReq
25887
Jeff Johnsone7245742012-09-05 17:12:55 -070025888 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025890
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 wdiPowerParamsCb: callback for passing back the response
25892 of the Set Power Params operation received from the
25893 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025894
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025896 callback
25897
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 @return Result of the function call
25899*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025900WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025901WDI_SetPowerParamsReq
25902(
25903 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25904 WDI_SetPowerParamsCb wdiPowerParamsCb,
25905 void* pUserData
25906)
25907{
25908 WDI_EventInfoType wdiEventData;
25909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25910
25911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 ------------------------------------------------------------------------*/
25914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25915 {
25916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25917 "WDI API call before module is initialized - Fail request");
25918
Jeff Johnsone7245742012-09-05 17:12:55 -070025919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025920 }
25921
25922 /*------------------------------------------------------------------------
25923 Fill in Event data and post to the Main FSM
25924 ------------------------------------------------------------------------*/
25925 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025926 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025928 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 wdiEventData.pUserData = pUserData;
25930
25931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25932}/*WDI_SetPowerParamsReq*/
25933
25934/**
25935 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025936
25937 @param pWDICtx: pointer to the WLAN DAL context
25938 pEventData: pointer to the event information structure
25939
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 @see
25941 @return Result of the function call
25942*/
25943WDI_Status
25944WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025945(
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 WDI_ControlBlockType* pWDICtx,
25947 WDI_EventInfoType* pEventData
25948)
25949{
25950 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25951 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 wpt_uint16 usDataOffset = 0;
25954 wpt_uint16 usSendSize = 0;
25955 tSetPowerParamsType powerParams;
25956
25957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 -------------------------------------------------------------------------*/
25960 if (( NULL == pEventData ) ||
25961 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25962 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25963 {
25964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 }
25969
25970 /*-----------------------------------------------------------------------
25971 Get message buffer
25972 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025973 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 sizeof(powerParams),
25975 &pSendBuffer, &usDataOffset, &usSendSize))||
25976 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25977 {
25978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25979 "Unable to get send buffer in Set PNO req %x %x %x",
25980 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 }
25984
25985 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25988
25989 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025991 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25992
25993 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025994 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25996
25997 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025998 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025999 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26000
26001 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026002 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26004
26005 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026006 powerParams.uBETInterval =
26007 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026008
Yue Ma0da19492013-05-13 17:01:29 -070026009 /* MAX LI for modulated DTIM */
26010 powerParams.uMaxLIModulatedDTIM =
26011 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026012
26013 wpalMemoryCopy( pSendBuffer+usDataOffset,
26014 &powerParams,
26015 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026016
26017 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026018 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026019
26020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026021 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026023 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26024 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026025}
26026
26027/**
26028 @brief Process Power Params Rsp function (called when a
26029 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026030
26031 @param pWDICtx: pointer to the WLAN DAL context
26032 pEventData: pointer to the event information structure
26033
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 @see
26035 @return Result of the function call
26036*/
26037WDI_Status
26038WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026039(
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 WDI_ControlBlockType* pWDICtx,
26041 WDI_EventInfoType* pEventData
26042)
26043{
26044 WDI_Status wdiStatus;
26045 eHalStatus halStatus;
26046 WDI_SetPowerParamsCb wdiPowerParamsCb;
26047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26048
26049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026051 -------------------------------------------------------------------------*/
26052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26053 ( NULL == pEventData->pEventData ))
26054 {
26055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 }
26060
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026062
26063 /*-------------------------------------------------------------------------
26064 Extract response and send it to UMAC
26065 -------------------------------------------------------------------------*/
26066 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026068
26069 /*Notify UMAC*/
26070 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26071
Jeff Johnsone7245742012-09-05 17:12:55 -070026072 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026073}/*WDI_ProcessSetPowerParamsRsp*/
26074
26075#ifdef WLAN_FEATURE_GTK_OFFLOAD
26076/**
26077 @brief WDI_GTKOffloadReq will be called when the upper MAC
26078 wants to set GTK Rekey Counter while in power save. Upon
26079 the call of this API the WLAN DAL will pack and send a
26080 HAL GTK offload request message to the lower RIVA
26081 sub-system if DAL is in state STARTED.
26082
26083 In state BUSY this request will be queued. Request won't
26084 be allowed in any other state.
26085
26086 WDI_PostAssocReq must have been called.
26087
26088 @param pwdiGtkOffloadParams: the GTK offload as specified
26089 by the Device Interface
26090
26091 wdiGtkOffloadCb: callback for passing back the response
26092 of the GTK offload operation received from the device
26093
26094 pUserData: user data will be passed back with the
26095 callback
26096
26097 @see WDI_PostAssocReq
26098 @return Result of the function call
26099*/
26100WDI_Status
26101WDI_GTKOffloadReq
26102(
26103 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26104 WDI_GtkOffloadCb wdiGtkOffloadCb,
26105 void* pUserData
26106)
26107{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026108 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26110
26111 /*------------------------------------------------------------------------
26112 Sanity Check
26113 ------------------------------------------------------------------------*/
26114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26115 {
26116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26117 "WDI API call before module is initialized - Fail request");
26118
26119 return WDI_STATUS_E_NOT_ALLOWED;
26120 }
26121
26122 /*------------------------------------------------------------------------
26123 Fill in Event data and post to the Main FSM
26124 ------------------------------------------------------------------------*/
26125 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26126 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026127 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26129 wdiEventData.pUserData = pUserData;
26130
26131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26132}
26133
26134
26135/**
26136 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26137 MAC wants to get GTK Rekey Counter while in power save.
26138 Upon the call of this API the WLAN DAL will pack and
26139 send a HAL GTK offload request message to the lower RIVA
26140 sub-system if DAL is in state STARTED.
26141
26142 In state BUSY this request will be queued. Request won't
26143 be allowed in any other state.
26144
26145 WDI_PostAssocReq must have been called.
26146
26147 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26148 Information Message as specified by the
26149 Device Interface
26150
26151 wdiGtkOffloadGetInfoCb: callback for passing back the
26152 response of the GTK offload operation received from the
26153 device
26154
26155 pUserData: user data will be passed back with the
26156 callback
26157
26158 @see WDI_PostAssocReq
26159 @return Result of the function call
26160*/
26161WDI_Status
26162WDI_GTKOffloadGetInfoReq
26163(
26164 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26165 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26166 void* pUserData
26167)
26168{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026169 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26171
26172 /*------------------------------------------------------------------------
26173 Sanity Check
26174 ------------------------------------------------------------------------*/
26175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26176 {
26177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26178 "WDI API call before module is initialized - Fail request");
26179
26180 return WDI_STATUS_E_NOT_ALLOWED;
26181 }
26182
26183 /*------------------------------------------------------------------------
26184 Fill in Event data and post to the Main FSM
26185 ------------------------------------------------------------------------*/
26186 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26187 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26188 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26189 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26190 wdiEventData.pUserData = pUserData;
26191
26192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26193}
26194
26195
26196/**
26197 @brief Process set GTK Offload Request function
26198
26199 @param pWDICtx: pointer to the WLAN DAL context
26200 pEventData: pointer to the event information structure
26201
26202 @see
26203 @return Result of the function call
26204*/
26205WDI_Status
26206WDI_ProcessGTKOffloadReq
26207(
26208 WDI_ControlBlockType* pWDICtx,
26209 WDI_EventInfoType* pEventData
26210)
26211{
26212 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26213 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26214 wpt_uint8* pSendBuffer = NULL;
26215 wpt_uint16 usDataOffset = 0;
26216 wpt_uint16 usSendSize = 0;
26217 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026218 wpt_uint8 ucCurrentSessionId = 0;
26219 WDI_BSSSessionType* pBSSSes = NULL;
26220
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26222
26223 /*-------------------------------------------------------------------------
26224 Sanity check
26225 -------------------------------------------------------------------------*/
26226 if (( NULL == pEventData ) ||
26227 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26228 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26229 {
26230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026232 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026233 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026234 }
26235
26236 /*-----------------------------------------------------------------------
26237 Get message buffer
26238 -----------------------------------------------------------------------*/
26239 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26240 sizeof(gtkOffloadReqParams),
26241 &pSendBuffer, &usDataOffset, &usSendSize))||
26242 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26243 {
26244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26245 "Unable to get send buffer in GTK offload req %x %x %x",
26246 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26247 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026248 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026249 }
26250
26251 //
26252 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26253 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026254 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26255 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26256 &pBSSSes);
26257 if ( NULL == pBSSSes )
26258 {
26259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026260 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026261 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026262 }
26263
26264 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26265
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26267 // Copy KCK
26268 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26269 // Copy KEK
26270 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26271 // Copy KeyReplayCounter
26272 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26273
26274 wpalMemoryCopy( pSendBuffer+usDataOffset,
26275 &gtkOffloadReqParams,
26276 sizeof(gtkOffloadReqParams));
26277
26278 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26279 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26280
26281 /*-------------------------------------------------------------------------
26282 Send Get STA Request to HAL
26283 -------------------------------------------------------------------------*/
26284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26285 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026286
26287fail:
26288 // Release the message buffer so we don't leak
26289 wpalMemoryFree(pSendBuffer);
26290
26291failRequest:
26292 //WDA should have failure check to avoid the memory leak
26293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026294}
26295
26296
26297/**
26298 @brief Process GTK Offload Get Information Request function
26299
26300 @param pWDICtx: pointer to the WLAN DAL context
26301 pEventData: pointer to the event information structure
26302
26303 @see
26304 @return Result of the function call
26305*/
26306WDI_Status
26307WDI_ProcessGTKOffloadGetInfoReq
26308(
26309 WDI_ControlBlockType* pWDICtx,
26310 WDI_EventInfoType* pEventData
26311)
26312{
26313 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26314 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26315 wpt_uint8* pSendBuffer = NULL;
26316 wpt_uint16 usDataOffset = 0;
26317 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026318 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26319 wpt_uint8 ucCurrentSessionId = 0;
26320 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026321
26322 /*-------------------------------------------------------------------------
26323 Sanity check
26324 -------------------------------------------------------------------------*/
26325 if (( NULL == pEventData ) ||
26326 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26327 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26328 {
26329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026331 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026332 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026333 }
26334
26335 /*-----------------------------------------------------------------------
26336 Get message buffer
26337 -----------------------------------------------------------------------*/
26338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026339 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026340 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026341 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026342 {
26343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26344 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26345 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26346 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026347 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026348 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026349 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26350 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26351 &pBSSSes);
26352 if ( NULL == pBSSSes )
26353 {
26354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026355 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026356 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026357 }
26358 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026359
26360 //
26361 // Don't need to fill send buffer other than header
26362 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026363 wpalMemoryCopy( pSendBuffer+usDataOffset,
26364 &halGtkOffloadGetInfoReqParams,
26365 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026366
26367 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26368 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26369
26370 /*-------------------------------------------------------------------------
26371 Send Get STA Request to HAL
26372 -------------------------------------------------------------------------*/
26373 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26374 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026375fail:
26376 // Release the message buffer so we don't leak
26377 wpalMemoryFree(pSendBuffer);
26378
26379failRequest:
26380 //WDA should have failure check to avoid the memory leak
26381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026382}
26383
26384/**
26385 @brief Process host offload Rsp function (called when a
26386 response is being received over the bus from HAL)
26387
26388 @param pWDICtx: pointer to the WLAN DAL context
26389 pEventData: pointer to the event information structure
26390
26391 @see
26392 @return Result of the function call
26393*/
26394WDI_Status
26395WDI_ProcessGtkOffloadRsp
26396(
26397 WDI_ControlBlockType* pWDICtx,
26398 WDI_EventInfoType* pEventData
26399)
26400{
Jeff Johnson295189b2012-06-20 16:38:30 -070026401 eHalStatus halStatus;
26402 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026403 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26404 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26406
26407 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26408
26409 /*-------------------------------------------------------------------------
26410 Sanity check
26411 -------------------------------------------------------------------------*/
26412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26413 ( NULL == pEventData->pEventData))
26414 {
26415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 WDI_ASSERT(0);
26418 return WDI_STATUS_E_FAILURE;
26419 }
26420
26421 /*-------------------------------------------------------------------------
26422 Extract response and send it to UMAC
26423 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026424 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26425 {
26426 wpalMemoryCopy( &halGtkOffloadRspParams,
26427 pEventData->pEventData,
26428 sizeof(halGtkOffloadRspParams));
26429
26430 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026431 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026432 wdiGtkOffloadRsparams.bssIdx =
26433 halGtkOffloadRspParams.bssIdx;
26434 }
26435 else
26436 {
26437 halStatus = *((eHalStatus*)pEventData->pEventData);
26438 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26439 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026440
26441 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026442 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026443
26444 return WDI_STATUS_SUCCESS;
26445}
26446
26447/**
26448 @brief Process GTK Offload Get Information Response function
26449
26450 @param pWDICtx: pointer to the WLAN DAL context
26451 pEventData: pointer to the event information structure
26452
26453 @see
26454 @return Result of the function call
26455*/
26456WDI_Status
26457WDI_ProcessGTKOffloadGetInfoRsp
26458(
26459 WDI_ControlBlockType* pWDICtx,
26460 WDI_EventInfoType* pEventData
26461)
26462{
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026464 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026465 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26466 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026468
26469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26470
26471 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26472
26473 /*-------------------------------------------------------------------------
26474 Sanity check
26475 -------------------------------------------------------------------------*/
26476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26477 ( NULL == pEventData->pEventData ))
26478 {
26479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 WDI_ASSERT(0);
26482 return WDI_STATUS_E_FAILURE;
26483 }
26484
26485 /*-------------------------------------------------------------------------
26486 Extract response and send it to UMAC
26487 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026488 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26489 {
26490 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26491 pEventData->pEventData,
26492 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026493
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026494 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026495 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026496 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26497 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26498 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26499 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26500 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26501 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26502 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26503 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026504
26505 wpalMutexAcquire(&pWDICtx->wptMutex);
26506 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26507 &pBSSSes);
26508
26509 if ( NULL == pBSSSes )
26510 {
26511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26512 "Association sequence for this BSS does not exist or "
26513 "association no longer in progress - mysterious HAL response");
26514 wpalMutexRelease(&pWDICtx->wptMutex);
26515 return WDI_STATUS_E_NOT_ALLOWED;
26516 }
26517
26518 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26519 sizeof (wpt_macAddr));
26520 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026521 }
26522 else
26523 {
26524 halStatus = *((eHalStatus*)pEventData->pEventData);
26525 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26526 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026527 /*Notify UMAC*/
26528 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26529 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026530 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026531
26532 return WDI_STATUS_SUCCESS;
26533}
26534#endif // WLAN_FEATURE_GTK_OFFLOAD
26535
26536#ifdef WLAN_WAKEUP_EVENTS
26537WDI_Status
26538WDI_ProcessWakeReasonInd
26539(
26540 WDI_ControlBlockType* pWDICtx,
26541 WDI_EventInfoType* pEventData
26542)
26543{
26544 WDI_LowLevelIndType *pWdiInd;
26545 tpWakeReasonParams pWakeReasonParams;
26546 wpt_uint32 allocSize = 0;
26547
26548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026549 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026550
26551 /*-------------------------------------------------------------------------
26552 Sanity check
26553 -------------------------------------------------------------------------*/
26554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26555 ( NULL == pEventData->pEventData ))
26556 {
26557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 WDI_ASSERT( 0 );
26560 return WDI_STATUS_E_FAILURE;
26561 }
26562
26563 /*-------------------------------------------------------------------------
26564 Extract indication and send it to UMAC
26565 -------------------------------------------------------------------------*/
26566 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26567
26568 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26569
26570 //Allocate memory for WDI_WakeReasonIndType structure
26571 pWdiInd = wpalMemoryAllocate(allocSize) ;
26572
26573 if(NULL == pWdiInd)
26574 {
26575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26576 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026577 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 WDI_ASSERT(0);
26579 return WDI_STATUS_E_FAILURE;
26580 }
26581
26582 wpalMemoryZero(pWdiInd, allocSize);
26583
26584 /* Fill in the indication parameters*/
26585 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26586 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26587 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26588 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26589 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26590 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26591 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26592 &(pWakeReasonParams->aDataStart[0]),
26593 pWakeReasonParams->ulStoredDataLen);
26594
ltimariu034f7d62013-01-24 18:54:33 -080026595
26596 if ( pWDICtx->wdiLowLevelIndCB )
26597 {
26598 /*Notify UMAC*/
26599 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26600 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026601
26602 //Free memory allocated for WDI_WakeReasonIndType structure
26603 wpalMemoryFree(pWdiInd);
26604
26605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026606 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026607
26608 return WDI_STATUS_SUCCESS;
26609}
26610#endif // WLAN_WAKEUP_EVENTS
26611
26612void WDI_GetWcnssCompiledApiVersion
26613(
26614 WDI_WlanVersionType *pWcnssApiVersion
26615)
26616{
26617 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26618 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26619 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26620 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26621}
26622
26623/**
26624 @brief Process Set TM Level Rsp function (called when a
26625 response is being received over the bus from HAL)
26626
26627 @param pWDICtx: pointer to the WLAN DAL context
26628 pEventData: pointer to the event information structure
26629
26630 @see
26631 @return Result of the function call
26632*/
26633WDI_Status
26634WDI_ProcessSetTmLevelRsp
26635(
26636 WDI_ControlBlockType* pWDICtx,
26637 WDI_EventInfoType* pEventData
26638)
26639{
26640 WDI_Status wdiStatus;
26641 eHalStatus halStatus;
26642 WDI_SetTmLevelCb wdiSetTmLevelCb;
26643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26644
26645 /*-------------------------------------------------------------------------
26646 Sanity check
26647 -------------------------------------------------------------------------*/
26648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26649 ( NULL == pEventData->pEventData ))
26650 {
26651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026653 WDI_ASSERT(0);
26654 return WDI_STATUS_E_FAILURE;
26655 }
26656
26657 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26658
26659 /*-------------------------------------------------------------------------
26660 Extract response and send it to UMAC
26661 -------------------------------------------------------------------------*/
26662 halStatus = *((eHalStatus*)pEventData->pEventData);
26663 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26664
26665 /*Notify UMAC*/
26666 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26667
26668 return WDI_STATUS_SUCCESS;
26669}/*WDI_ProcessSetTmLevelRsp*/
26670
26671/**
26672 @brief Process Set Thermal Mitigation level Changed request
26673
26674 @param pWDICtx: pointer to the WLAN DAL context
26675 pEventData: pointer to the event information structure
26676
26677 @see
26678 @return Result of the function call
26679*/
26680WDI_Status
26681WDI_ProcessSetTmLevelReq
26682(
26683 WDI_ControlBlockType* pWDICtx,
26684 WDI_EventInfoType* pEventData
26685)
26686{
26687 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
26688 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
26689 wpt_uint8* pSendBuffer = NULL;
26690 wpt_uint16 usDataOffset = 0;
26691 wpt_uint16 usSendSize = 0;
26692 tSetThermalMitgationType halTmMsg;
26693
26694 /*-------------------------------------------------------------------------
26695 Sanity check
26696 -------------------------------------------------------------------------*/
26697 if (( NULL == pEventData ) ||
26698 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
26699 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
26700 {
26701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026703 WDI_ASSERT(0);
26704 return WDI_STATUS_E_FAILURE;
26705 }
26706
26707 /*-----------------------------------------------------------------------
26708 Get message buffer
26709 -----------------------------------------------------------------------*/
26710 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
26711 sizeof(halTmMsg),
26712 &pSendBuffer, &usDataOffset, &usSendSize))||
26713 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
26714 {
26715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26716 "Unable to get send buffer in Set PNO req %x %x %x",
26717 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
26718 WDI_ASSERT(0);
26719 return WDI_STATUS_E_FAILURE;
26720 }
26721
26722 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
26723 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
26724
26725 wpalMemoryCopy( pSendBuffer+usDataOffset,
26726 &halTmMsg,
26727 sizeof(halTmMsg));
26728
26729 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
26730 pWDICtx->pfncRspCB = NULL;
26731 /*-------------------------------------------------------------------------
26732 Send Get STA Request to HAL
26733 -------------------------------------------------------------------------*/
26734 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26735 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
26736}
26737
26738/* Fill the value from the global features enabled array to the global capabilities
26739 * bitmap struct
26740 */
26741static void
26742FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
26743{
26744 wpt_int8 i;
26745 for (i=0; i<len; i++)
26746 {
26747 setFeatCaps(fCaps, enabledFeat[i]);
26748 }
26749}
26750
26751/**
26752 @brief WDI_featureCapsExchangeReq
26753 Post feature capability bitmap exchange event.
26754 Host will send its own capability to FW in this req and
26755 expect FW to send its capability back as a bitmap in Response
26756
26757 @param
26758
26759 wdiFeatureCapsExchangeCb: callback called on getting the response.
26760 It is kept to mantain similarity between WDI reqs and if needed, can
26761 be used in future. Currently, It is set to NULL
26762
26763 pUserData: user data will be passed back with the
26764 callback
26765
26766 @see
26767 @return Result of the function call
26768*/
26769WDI_Status
26770WDI_featureCapsExchangeReq
26771(
26772 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
26773 void* pUserData
26774)
26775{
26776 WDI_EventInfoType wdiEventData;
26777 wpt_int32 fCapsStructSize;
26778
26779 /*------------------------------------------------------------------------
26780 Sanity Check
26781 ------------------------------------------------------------------------*/
26782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26783 {
26784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26785 "WDI API call before module is initialized - Fail request");
26786
26787 return WDI_STATUS_E_NOT_ALLOWED;
26788 }
26789
26790 /* Allocate memory separately for global variable carrying FW caps */
26791 fCapsStructSize = sizeof(tWlanFeatCaps);
26792 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26793 if ( NULL == gpHostWlanFeatCaps )
26794 {
26795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26796 "Cannot allocate memory for host capability info\n");
26797 WDI_ASSERT(0);
26798 return WDI_STATUS_MEM_FAILURE;
26799 }
26800
26801 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26802
26803 /*------------------------------------------------------------------------
26804 Fill in Event data and post to the Main FSM
26805 ------------------------------------------------------------------------*/
26806 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26807 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26809 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026810 gpHostWlanFeatCaps->featCaps[0],
26811 gpHostWlanFeatCaps->featCaps[1],
26812 gpHostWlanFeatCaps->featCaps[2],
26813 gpHostWlanFeatCaps->featCaps[3]
26814 );
26815
26816 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26817 wdiEventData.pEventData = gpHostWlanFeatCaps;
26818 wdiEventData.uEventDataSize = fCapsStructSize;
26819 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26820 wdiEventData.pUserData = pUserData;
26821
26822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26823}
26824
26825/**
Yathishd8713192012-12-10 14:21:35 -080026826 @brief Disable Active mode offload in Host
26827
26828 @param void
26829 @see
26830 @return void
26831*/
26832void
26833WDI_disableCapablityFeature(wpt_uint8 feature_index)
26834{
26835 supportEnabledFeatures[feature_index] = 0;
26836 return;
26837}
26838
26839/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026840 @brief Process Host-FW Capability Exchange Request function
26841
26842 @param pWDICtx: pointer to the WLAN DAL context
26843 pEventData: pointer to the event information structure
26844
26845 @see
26846 @return Result of the function call
26847*/
26848WDI_Status
26849WDI_ProcessFeatureCapsExchangeReq
26850(
26851 WDI_ControlBlockType* pWDICtx,
26852 WDI_EventInfoType* pEventData
26853)
26854{
26855 wpt_uint8* pSendBuffer = NULL;
26856 wpt_uint16 usDataOffset = 0;
26857 wpt_uint16 usSendSize = 0;
26858 wpt_uint16 usLen = 0;
26859
26860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26861
26862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026863 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026864
26865 /*-------------------------------------------------------------------------
26866 Sanity check
26867 -------------------------------------------------------------------------*/
26868 /* Call back function is NULL since not required for cap exchange req */
26869 if (( NULL == pEventData ) ||
26870 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26871 {
26872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026874 WDI_ASSERT(0);
26875 return WDI_STATUS_E_FAILURE;
26876 }
26877
26878 /*-----------------------------------------------------------------------
26879 Get message buffer
26880 -----------------------------------------------------------------------*/
26881 usLen = sizeof(tWlanFeatCaps);
26882
26883 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26884 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26885 usLen,
26886 &pSendBuffer, &usDataOffset, &usSendSize))||
26887 ( usSendSize < (usDataOffset + usLen )))
26888 {
26889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26890 "Unable to get send buffer in feat caps exchange req %x %x",
26891 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26892 WDI_ASSERT(0);
26893 return WDI_STATUS_E_FAILURE;
26894 }
26895
26896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026897 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026898 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26899 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26900 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26901 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26902 );
26903
26904 /* Copy host caps after the offset in the send buffer */
26905 wpalMemoryCopy( pSendBuffer+usDataOffset,
26906 (tWlanFeatCaps *)pEventData->pEventData,
26907 usLen);
26908
26909 /*-------------------------------------------------------------------------
26910 Send Start Request to HAL
26911 -------------------------------------------------------------------------*/
26912 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26913 (WDI_StartRspCb)pEventData->pCBfnc,
26914 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26915
26916}/*WDI_ProcessFeatureCapsExchangeReq*/
26917
26918/**
26919 @brief Process Host-FW Capability Exchange Response function
26920
26921 @param pWDICtx: pointer to the WLAN DAL context
26922 pEventData: pointer to the event information structure
26923
26924 @see
26925 @return Result of the function call
26926*/
26927WDI_Status
26928WDI_ProcessFeatureCapsExchangeRsp
26929(
26930 WDI_ControlBlockType* pWDICtx,
26931 WDI_EventInfoType* pEventData
26932)
26933{
26934 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26935 wpt_int32 fCapsStructSize;
26936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26937
26938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026939 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026940
26941 /*-------------------------------------------------------------------------
26942 Sanity check
26943 -------------------------------------------------------------------------*/
26944 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26945 ( NULL == pEventData->pEventData ))
26946 {
26947 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026950 WDI_ASSERT(0);
26951 return WDI_STATUS_E_FAILURE;
26952 }
26953
26954 /* Allocate memory separately for global variable carrying FW caps */
26955 fCapsStructSize = sizeof(tWlanFeatCaps);
26956 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26957 if ( NULL == gpFwWlanFeatCaps )
26958 {
26959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26960 "Cannot allocate memory for host capability info\n");
26961 WDI_ASSERT(0);
26962 return WDI_STATUS_MEM_FAILURE;
26963 }
26964
26965 /*-------------------------------------------------------------------------
26966 Unpack HAL Response Message - the header was already extracted by the
26967 main Response Handling procedure
26968 -------------------------------------------------------------------------*/
26969 /*-------------------------------------------------------------------------
26970 Extract response and send it to UMAC
26971 -------------------------------------------------------------------------*/
26972
26973 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26974 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26976 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026977 gpFwWlanFeatCaps->featCaps[0],
26978 gpFwWlanFeatCaps->featCaps[1],
26979 gpFwWlanFeatCaps->featCaps[2],
26980 gpFwWlanFeatCaps->featCaps[3]
26981 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26983
26984 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26985 if (wdiFeatureCapsExchangeCb != NULL)
26986 wdiFeatureCapsExchangeCb(NULL, NULL);
26987
26988 return WDI_STATUS_SUCCESS;
26989}
26990
Mohit Khanna4a70d262012-09-11 16:30:12 -070026991#ifdef WLAN_FEATURE_11AC
26992WDI_Status
26993WDI_ProcessUpdateVHTOpModeRsp
26994(
26995 WDI_ControlBlockType* pWDICtx,
26996 WDI_EventInfoType* pEventData
26997)
26998{
26999 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27000 WDI_Status wdiStatus;
27001 eHalStatus halStatus;
27002
27003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27004
27005 /*-------------------------------------------------------------------------
27006 Sanity check
27007 -------------------------------------------------------------------------*/
27008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27009 ( NULL == pEventData->pEventData))
27010 {
27011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027012 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027013 WDI_ASSERT(0);
27014 return WDI_STATUS_E_FAILURE;
27015 }
27016 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27017
27018 /*-------------------------------------------------------------------------
27019 Extract response and send it to UMAC
27020 -------------------------------------------------------------------------*/
27021 halStatus = *((eHalStatus*)pEventData->pEventData);
27022 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27023
27024 /*Notify UMAC*/
27025 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27026
27027 return WDI_STATUS_SUCCESS;
27028}
27029#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027030/**
27031 @brief WDI_getHostWlanFeatCaps
27032 WDI API that returns whether the feature passed to it as enum value in
27033 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27034 variable storing host capability bitmap to find this. This can be used by
27035 other moduels to decide certain things like call different APIs based on
27036 whether a particular feature is supported.
27037
27038 @param
27039
27040 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27041
27042 @see
27043 @return
27044 0 - if the feature is NOT supported in host
27045 any non-zero value - if the feature is SUPPORTED in host.
27046*/
27047wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27048{
27049 wpt_uint8 featSupported = 0;
27050 if (gpHostWlanFeatCaps != NULL)
27051 {
27052 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27053 }
27054 else
27055 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027057 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 }
27059 return featSupported;
27060}
27061
27062/**
27063 @brief WDI_getFwWlanFeatCaps
27064 WDI API that returns whether the feature passed to it as enum value in
27065 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27066 variable storing host capability bitmap to find this. This can be used by
27067 other moduels to decide certain things like call different APIs based on
27068 whether a particular feature is supported.
27069
27070 @param
27071
27072 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27073 in wlan_hal_msg.h.
27074
27075 @see
27076 @return
27077 0 - if the feature is NOT supported in FW
27078 any non-zero value - if the feature is SUPPORTED in FW.
27079*/
27080wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27081{
27082 wpt_uint8 featSupported = 0;
27083 if (gpFwWlanFeatCaps != NULL)
27084 {
27085 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27086 }
27087 else
27088 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027090 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027091 }
27092 return featSupported;
27093}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027094
27095#ifdef WLAN_FEATURE_11AC
27096WDI_Status
27097WDI_ProcessUpdateVHTOpModeReq
27098(
27099 WDI_ControlBlockType* pWDICtx,
27100 WDI_EventInfoType* pEventData
27101)
27102{
27103 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27104 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27105 wpt_uint8* pSendBuffer = NULL;
27106 wpt_uint16 usDataOffset = 0;
27107 wpt_uint16 usSendSize = 0;
27108
27109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27110
27111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027112 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027113
27114 /*-------------------------------------------------------------------------
27115 Sanity check
27116 -------------------------------------------------------------------------*/
27117 if (( NULL == pEventData ) ||
27118 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27119 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27120 {
27121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027122 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027123 WDI_ASSERT(0);
27124 return WDI_STATUS_E_FAILURE;
27125 }
27126
27127 /*-----------------------------------------------------------------------
27128 Get message buffer
27129 -----------------------------------------------------------------------*/
27130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27131 sizeof(WDI_UpdateVHTOpMode),
27132 &pSendBuffer, &usDataOffset, &usSendSize))||
27133 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27134 {
27135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27136 "Unable to get send buffer in update vht opMode req");
27137 WDI_ASSERT(0);
27138 return WDI_STATUS_E_FAILURE;
27139 }
27140
27141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27142 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27143
27144 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27145 sizeof(WDI_UpdateVHTOpMode));
27146
27147 /*-------------------------------------------------------------------------
27148 Send Start Request to HAL
27149 -------------------------------------------------------------------------*/
27150 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27151 wdiVHTOpModeCb,
27152 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27153
27154}
27155
27156WDI_Status
27157WDI_UpdateVHTOpModeReq
27158(
27159 WDI_UpdateVHTOpMode *pData,
27160 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27161 void* pUserData
27162)
27163{
27164 WDI_EventInfoType wdiEventData;
27165
27166 /*------------------------------------------------------------------------
27167 Sanity Check
27168 ------------------------------------------------------------------------*/
27169 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27170 {
27171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27172 "WDI API call before module is initialized - Fail request");
27173
27174 return WDI_STATUS_E_NOT_ALLOWED;
27175 }
27176
27177 /*------------------------------------------------------------------------
27178 Fill in Event data and post to the Main FSM
27179 ------------------------------------------------------------------------*/
27180 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27181 wdiEventData.pEventData = pData;
27182 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27183 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27184 wdiEventData.pUserData = pUserData;
27185
27186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27187 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27188
27189 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27190
27191}
27192#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027193
27194/**
27195 @brief WDI_TransportChannelDebug -
27196 Display DXE Channel debugging information
27197 User may request to display DXE channel snapshot
27198 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027199
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027200 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027201 @param enableStallDetect : Enable stall detect feature
27202 This feature will take effect to data performance
27203 Not integrate till fully verification
27204 @see
27205 @return none
27206*/
27207void WDI_TransportChannelDebug
27208(
27209 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027210 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027211)
27212{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027213 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027214 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027215}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027216/**
27217 @brief WDI_SsrTimerCB
27218 Callback function for SSR timer, if this is called then the graceful
27219 shutdown for Riva did not happen.
27220
27221 @param pUserData : user data to timer
27222
27223 @see
27224 @return none
27225*/
27226void
27227WDI_SsrTimerCB
27228(
27229 void *pUserData
27230)
27231{
27232 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27234
27235 if (NULL == pWDICtx )
27236 {
27237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027238 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027239 WDI_ASSERT(0);
27240 return;
27241 }
27242 wpalRivaSubystemRestart();
27243
27244 return;
27245
27246}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027247
27248/**
27249 @brief WDI_SetEnableSSR -
27250 This API is called to enable/disable SSR on WDI timeout.
27251
27252 @param enableSSR : enable/disable SSR
27253
27254 @see
27255 @return none
27256*/
27257void WDI_SetEnableSSR(wpt_boolean enableSSR)
27258{
27259 gWDICb.bEnableSSR = enableSSR;
27260}