blob: 37c4f0fe9b3e4e12af7e4174002cc97d0ab507df [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);
13517 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13518 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13519 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013520
Jeff Johnson295189b2012-06-20 16:38:30 -070013521#endif // WLAN_NS_OFFLOAD
13522 }
13523
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013524 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13525
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 // copy hostOffloadParams into pSendBuffer
13527 wpalMemoryCopy( pSendBuffer+usDataOffset,
13528 &hostOffloadParams,
13529 sizeof(hostOffloadParams));
13530
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013531 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013533 // copy nsOffloadParams into pSendBuffer
13534 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 &nsOffloadParams,
13536 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013537 }
13538 else
13539 {
13540#ifdef WLAN_NS_OFFLOAD
13541 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13542 {
13543 // copy nsOffloadParams into pSendBuffer
13544 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13545 &nsOffloadParams,
13546 sizeof(nsOffloadParams));
13547 }
13548#endif
13549 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013550
13551 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013552 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013553
13554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13558 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013559
13560fail:
13561 // Release the message buffer so we don't leak
13562 wpalMemoryFree(pSendBuffer);
13563
13564failRequest:
13565 //WDA should have failure check to avoid the memory leak
13566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013567}/*WDI_ProcessHostOffloadReq*/
13568
13569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013572
13573 @param pWDICtx: pointer to the WLAN DAL context
13574 pEventData: pointer to the event information structure
13575
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 @see
13577 @return Result of the function call
13578*/
13579WDI_Status
13580WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013581(
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 WDI_ControlBlockType* pWDICtx,
13583 WDI_EventInfoType* pEventData
13584)
13585{
13586 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13587 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 wpt_uint16 usDataOffset = 0;
13590 wpt_uint16 usSendSize = 0;
13591 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013592 wpt_uint8 ucCurrentBSSSesIdx = 0;
13593 WDI_BSSSessionType* pBSSSes = NULL;
13594
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13596
13597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 -------------------------------------------------------------------------*/
13600 if (( NULL == pEventData ) ||
13601 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13602 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13603 {
13604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13605 "Invalid parameters in Keep Alive req");
13606 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013607 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 }
13609
13610 /*-----------------------------------------------------------------------
13611 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 sizeof(keepAliveReq),
13616 &pSendBuffer, &usDataOffset, &usSendSize))||
13617 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13618 {
13619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13620 "Unable to get send buffer in keep alive req %x %x %x",
13621 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13622 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013623 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 }
13625
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013626 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13627 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13628 &pBSSSes);
13629 if ( NULL == pBSSSes )
13630 {
13631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013632 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013633 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013634 }
13635
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13637 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13638
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013639 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013640
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13642 {
13643 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13644 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13645 HAL_IPV4_ADDR_LEN);
13646 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13647 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 wpalMemoryCopy(keepAliveReq.destMacAddr,
13650 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13651 HAL_MAC_ADDR_LEN);
13652 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013653
13654 wpalMemoryCopy( pSendBuffer+usDataOffset,
13655 &keepAliveReq,
13656 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013657
13658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13659 "Process keep alive req %d",sizeof(keepAliveReq));
13660
13661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13662 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13663
13664 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013666
13667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13668 "Sending keep alive req to HAL");
13669
13670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13674 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013675
13676fail:
13677 // Release the message buffer so we don't leak
13678 wpalMemoryFree(pSendBuffer);
13679
13680failRequest:
13681 //WDA should have failure check to avoid the memory leak
13682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013683}/*WDI_ProcessKeepAliveReq*/
13684
13685
13686/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013689
13690 @param pWDICtx: pointer to the WLAN DAL context
13691 pEventData: pointer to the event information structure
13692
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 @see
13694 @return Result of the function call
13695*/
13696WDI_Status
13697WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013698(
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 WDI_ControlBlockType* pWDICtx,
13700 WDI_EventInfoType* pEventData
13701)
13702{
13703 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13704 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 wpt_uint16 usDataOffset = 0;
13707 wpt_uint16 usSendSize = 0;
13708 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013709 wpt_uint8 ucCurrentBSSSesIdx = 0;
13710 WDI_BSSSessionType* pBSSSes = NULL;
13711
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13713
13714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 -------------------------------------------------------------------------*/
13717 if (( NULL == pEventData ) ||
13718 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13719 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13720 {
13721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013724 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 }
13726
13727 /*-----------------------------------------------------------------------
13728 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 sizeof(wowlAddBcPtrnReq),
13733 &pSendBuffer, &usDataOffset, &usSendSize))||
13734 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13735 {
13736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13737 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13738 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13739 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013740 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 }
13742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013743 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13744 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13745 &pBSSSes);
13746 if ( NULL == pBSSSes )
13747 {
13748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013749 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013750 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013751 }
13752
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13761
13762 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13763 {
13764 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13765 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13766 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13767 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13768 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13769 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13770 }
13771 else
13772 {
13773 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13774 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13775 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13776 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13777 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13778 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13779
13780 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13781 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13782 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13783 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13784 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13785 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13786 }
13787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013788 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13789
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 wpalMemoryCopy( pSendBuffer+usDataOffset,
13791 &wowlAddBcPtrnReq,
13792 sizeof(wowlAddBcPtrnReq));
13793
13794 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013796
13797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13801 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013802fail:
13803 // Release the message buffer so we don't leak
13804 wpalMemoryFree(pSendBuffer);
13805
13806failRequest:
13807 //WDA should have failure check to avoid the memory leak
13808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013809}/*WDI_ProcessWowlAddBcPtrnReq*/
13810
13811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013814
13815 @param pWDICtx: pointer to the WLAN DAL context
13816 pEventData: pointer to the event information structure
13817
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 @see
13819 @return Result of the function call
13820*/
13821WDI_Status
13822WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013823(
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 WDI_ControlBlockType* pWDICtx,
13825 WDI_EventInfoType* pEventData
13826)
13827{
13828 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13829 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013830 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 wpt_uint16 usDataOffset = 0;
13832 wpt_uint16 usSendSize = 0;
13833 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013834 wpt_uint8 ucCurrentBSSSesIdx = 0;
13835 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13837
13838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 -------------------------------------------------------------------------*/
13841 if (( NULL == pEventData ) ||
13842 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13843 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13844 {
13845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013848 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 }
13850
13851 /*-----------------------------------------------------------------------
13852 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013853 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 sizeof(wowlDelBcPtrnReq),
13857 &pSendBuffer, &usDataOffset, &usSendSize))||
13858 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13859 {
13860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13861 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13862 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13863 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013864 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 }
13866
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013867 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13868 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13869 &pBSSSes);
13870 if ( NULL == pBSSSes )
13871 {
13872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013873 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013874 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013875 }
13876
Jeff Johnsone7245742012-09-05 17:12:55 -070013877 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013878 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013879
13880 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13881
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 wpalMemoryCopy( pSendBuffer+usDataOffset,
13883 &wowlDelBcPtrnReq,
13884 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013885
13886 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013887 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013888
13889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13893 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013894
13895fail:
13896 // Release the message buffer so we don't leak
13897 wpalMemoryFree(pSendBuffer);
13898
13899failRequest:
13900 //WDA should have failure check to avoid the memory leak
13901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013902}/*WDI_ProcessWowlDelBcPtrnReq*/
13903
13904/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013907
13908 @param pWDICtx: pointer to the WLAN DAL context
13909 pEventData: pointer to the event information structure
13910
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 @see
13912 @return Result of the function call
13913*/
13914WDI_Status
13915WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013916(
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 WDI_ControlBlockType* pWDICtx,
13918 WDI_EventInfoType* pEventData
13919)
13920{
13921 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13922 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 wpt_uint16 usDataOffset = 0;
13925 wpt_uint16 usSendSize = 0;
13926 tHalWowlEnterParams wowlEnterReq;
13927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13928
13929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013931 -------------------------------------------------------------------------*/
13932 if (( NULL == pEventData ) ||
13933 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13934 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13935 {
13936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 }
13941
13942 /*-----------------------------------------------------------------------
13943 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 sizeof(wowlEnterReq),
13948 &pSendBuffer, &usDataOffset, &usSendSize))||
13949 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13950 {
13951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13952 "Unable to get send buffer in Wowl enter req %x %x %x",
13953 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 }
13957
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13974
13975#ifdef WLAN_WAKEUP_EVENTS
13976 wowlEnterReq.ucWoWEAPIDRequestEnable =
13977 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13978
13979 wowlEnterReq.ucWoWEAPOL4WayEnable =
13980 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13981
13982 wowlEnterReq.ucWowNetScanOffloadMatch =
13983 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13984
13985 wowlEnterReq.ucWowGTKRekeyError =
13986 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13987
13988 wowlEnterReq.ucWoWBSSConnLoss =
13989 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13990#endif // WLAN_WAKEUP_EVENTS
13991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013992 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13993
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13995 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13996 sizeof(tSirMacAddr));
13997
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 wpalMemoryCopy( pSendBuffer+usDataOffset,
13999 &wowlEnterReq,
14000 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014001
14002 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004
14005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14009 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014010}/*WDI_ProcessWowlEnterReq*/
14011
14012/**
14013 @brief Process Wowl exit Request function (called when Main FSM
14014 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014015
14016 @param pWDICtx: pointer to the WLAN DAL context
14017 pEventData: pointer to the event information structure
14018
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 @see
14020 @return Result of the function call
14021*/
14022WDI_Status
14023WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014024(
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 WDI_ControlBlockType* pWDICtx,
14026 WDI_EventInfoType* pEventData
14027)
14028{
14029 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014030 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 wpt_uint16 usDataOffset = 0;
14033 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014034 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14036
14037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 -------------------------------------------------------------------------*/
14040 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014041 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14043 {
14044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 }
14049
14050 /*-----------------------------------------------------------------------
14051 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014055 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014057 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 {
14059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14060 "Unable to get send buffer in Wowl Exit req %x %x",
14061 pEventData, wdiWowlExitCb);
14062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 }
14065
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014066 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14067
14068 wpalMemoryCopy( pSendBuffer+usDataOffset,
14069 &wowlExitparams,
14070 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14075 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014076}/*WDI_ProcessWowlExitReq*/
14077
14078/**
14079 @brief Process Configure Apps Cpu Wakeup State Request function
14080 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014081
14082 @param pWDICtx: pointer to the WLAN DAL context
14083 pEventData: pointer to the event information structure
14084
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 @see
14086 @return Result of the function call
14087*/
14088WDI_Status
14089WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014090(
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 WDI_ControlBlockType* pWDICtx,
14092 WDI_EventInfoType* pEventData
14093)
14094{
14095 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14096 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 wpt_uint16 usDataOffset = 0;
14099 wpt_uint16 usSendSize = 0;
14100 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14102
14103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 -------------------------------------------------------------------------*/
14106 if (( NULL == pEventData ) ||
14107 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14108 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14109 {
14110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 }
14115
14116 /*-----------------------------------------------------------------------
14117 Get message buffer
14118 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 sizeof(halCfgAppsCpuWakeupStateReqParams),
14121 &pSendBuffer, &usDataOffset, &usSendSize))||
14122 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14123 {
14124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14125 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14126 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 }
14130
Jeff Johnsone7245742012-09-05 17:12:55 -070014131 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014132 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14133
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 wpalMemoryCopy( pSendBuffer+usDataOffset,
14135 &halCfgAppsCpuWakeupStateReqParams,
14136 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014137
14138 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140
14141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014144 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14145 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14146 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014147}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14148
14149#ifdef WLAN_FEATURE_VOWIFI_11R
14150/**
14151 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14152 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014153
14154 @param pWDICtx: pointer to the WLAN DAL context
14155 pEventData: pointer to the event information structure
14156
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 @see
14158 @return Result of the function call
14159*/
14160WDI_Status
14161WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014162(
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 WDI_ControlBlockType* pWDICtx,
14164 WDI_EventInfoType* pEventData
14165)
14166{
14167 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14168 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 wpt_uint16 usDataOffset = 0;
14173 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014174 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 wpt_macAddr macBSSID;
14176 tAggrAddTsReq halAggrAddTsReq;
14177 int i;
14178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14179
14180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 -------------------------------------------------------------------------*/
14183 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14184 ( NULL == pEventData->pCBfnc ))
14185 {
14186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 }
14191 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14192 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14193 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14194 /*-------------------------------------------------------------------------
14195 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014196 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014197 -------------------------------------------------------------------------*/
14198 wpalMutexAcquire(&pWDICtx->wptMutex);
14199
14200 /*------------------------------------------------------------------------
14201 Find the BSS for which the request is made and identify WDI session
14202 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14204 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 &macBSSID))
14206 {
14207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14208 "This station does not exist in the WDI Station Table %d");
14209 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 }
14212
Jeff Johnsone7245742012-09-05 17:12:55 -070014213 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14214 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14217 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14218 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014219
14220 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014221 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014222 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014223
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 /*------------------------------------------------------------------------
14225 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 ------------------------------------------------------------------------*/
14228 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14229 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14231 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14232 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014233
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 }
14238
14239 wpalMutexRelease(&pWDICtx->wptMutex);
14240 /*-----------------------------------------------------------------------
14241 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 sizeof(tAggrAddTsParams),
14246 &pSendBuffer, &usDataOffset, &usSendSize))||
14247 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14248 {
14249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14250 "Unable to get send buffer in set bss key req %x %x %x",
14251 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 }
14255
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14260
14261 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14262 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14269 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014271 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14272 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14275 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14278 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14281 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14284 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14287 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14290 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014295
14296
14297 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14327 }
14328
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 wpalMemoryCopy( pSendBuffer+usDataOffset,
14330 &halAggrAddTsReq,
14331 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014332
14333 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
14336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014342}/*WDI_ProcessAggrAddTSpecReq*/
14343#endif /* WLAN_FEATURE_VOWIFI_11R */
14344
14345/**
14346 @brief Process Shutdown Request function (called when Main FSM
14347 allows it)
14348
14349 @param pWDICtx: pointer to the WLAN DAL context
14350 pEventData: pointer to the event information structure
14351
14352 @see
14353 @return Result of the function call
14354*/
14355WDI_Status
14356WDI_ProcessShutdownReq
14357(
14358 WDI_ControlBlockType* pWDICtx,
14359 WDI_EventInfoType* pEventData
14360 )
14361{
14362 wpt_status wptStatus;
14363
14364
14365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14366
14367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 -------------------------------------------------------------------------*/
14370 if ( NULL == pEventData )
14371 {
14372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 WDI_ASSERT(0);
14375 return WDI_STATUS_E_FAILURE;
14376 }
14377
14378 wpalMutexAcquire(&pWDICtx->wptMutex);
14379
14380
14381 gWDIInitialized = eWLAN_PAL_FALSE;
14382 /*! TO DO: stop the data services */
14383 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14384 {
14385 /*Stop the STA Table !UT- check this logic again
14386 It is safer to do it here than on the response - because a stop is imminent*/
14387 WDI_STATableStop(pWDICtx);
14388
14389 /* Stop Transport Driver, DXE */
14390 WDTS_Stop(pWDICtx);
14391 }
14392
14393 /*Clear all pending request*/
14394 WDI_ClearPendingRequests(pWDICtx);
14395 /* Close Data transport*/
14396 /* FTM mode does not open Data Path */
14397 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14398 {
14399 WDTS_Close(pWDICtx);
14400 }
14401 /*Close the STA Table !UT- check this logic again*/
14402 WDI_STATableClose(pWDICtx);
14403 /*close the PAL */
14404 wptStatus = wpalClose(pWDICtx->pPALContext);
14405 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14406 {
14407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14408 "Failed to wpal Close %d", wptStatus);
14409 WDI_ASSERT(0);
14410 }
14411
14412 /*Transition back to init state*/
14413 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14414
14415 wpalMutexRelease(&pWDICtx->wptMutex);
14416
14417 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419
14420
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014422}/*WDI_ProcessShutdownReq*/
14423
14424/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014426========================================================================*/
14427
14428/**
14429 @brief Process Start Response function (called when a response
14430 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014431
14432 @param pWDICtx: pointer to the WLAN DAL context
14433 pEventData: pointer to the event information structure
14434
Jeff Johnson295189b2012-06-20 16:38:30 -070014435 @see
14436 @return Result of the function call
14437*/
14438WDI_Status
14439WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014440(
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 WDI_ControlBlockType* pWDICtx,
14442 WDI_EventInfoType* pEventData
14443)
14444{
14445 WDI_StartRspParamsType wdiRspParams;
14446 WDI_StartRspCb wdiStartRspCb = NULL;
14447
14448 tHalMacStartRspParams* startRspParams;
14449
14450#ifndef HAL_SELF_STA_PER_BSS
14451 WDI_AddStaParams wdiAddSTAParam = {0};
14452#endif
14453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14454
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 -------------------------------------------------------------------------*/
14459 if (( NULL == pEventData ) ||
14460 ( NULL == pEventData->pEventData) ||
14461 ( NULL == wdiStartRspCb ))
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 }
14468
14469 /*-------------------------------------------------------------------------
14470 Extract response and send it to UMAC
14471 -------------------------------------------------------------------------*/
14472 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14473 {
14474 // not enough data was received
14475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14476 "Invalid response length in Start Resp Expect %x Rcvd %x",
14477 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 }
14481
14482 /*-------------------------------------------------------------------------
14483 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 -------------------------------------------------------------------------*/
14486 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14487
14488 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14489 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14490 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14491 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14492 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14493 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14494 wdiRspParams.wlanReportedVersion.major =
14495 startRspParams->wcnssWlanVersion.major;
14496 wdiRspParams.wlanReportedVersion.minor =
14497 startRspParams->wcnssWlanVersion.minor;
14498 wdiRspParams.wlanReportedVersion.version =
14499 startRspParams->wcnssWlanVersion.version;
14500 wdiRspParams.wlanReportedVersion.revision =
14501 startRspParams->wcnssWlanVersion.revision;
14502 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14503 startRspParams->wcnssCrmVersionString,
14504 sizeof(wdiRspParams.wcnssSoftwareVersion));
14505 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14506 startRspParams->wcnssWlanVersionString,
14507 sizeof(wdiRspParams.wcnssHardwareVersion));
14508 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14509
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014510 /*Save the HAL Version*/
14511 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14512
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 wpalMutexAcquire(&pWDICtx->wptMutex);
14514 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14515 {
14516 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14517
14518 /*Cache the start response for further use*/
14519 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014520 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 sizeof(pWDICtx->wdiCachedStartRspParams));
14522
14523 }
14524 else
14525 {
14526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14527 "Failed to start device with status %s(%d)",
14528 WDI_getHALStatusMsgString(startRspParams->status),
14529 startRspParams->status);
14530
14531 /*Set the expected state transition to stopped - because the start has
14532 failed*/
14533 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14534
14535 wpalMutexRelease(&pWDICtx->wptMutex);
14536
14537 /*Notify UMAC*/
14538 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014539
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14541
14542 /*Although the response is an error - it was processed by our function
14543 so as far as the caller is concerned this is a succesful reponse processing*/
14544 return WDI_STATUS_SUCCESS;
14545 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014546
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 wpalMutexRelease(&pWDICtx->wptMutex);
14548
14549 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14550 {
14551 /* FTM mode does not need to execute below */
14552 /* Notify UMAC */
14553 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14554 return WDI_STATUS_SUCCESS;
14555 }
14556
14557 /* START the Data transport */
14558 WDTS_startTransport(pWDICtx);
14559
14560 /*Start the STA Table !- check this logic again*/
14561 WDI_STATableStart(pWDICtx);
14562
14563#ifndef HAL_SELF_STA_PER_BSS
14564 /* Store the Self STA Index */
14565 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14566
14567 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14568 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14569 WDI_MAC_ADDR_LEN);
14570
14571 /* At this point add the self-STA */
14572
14573 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14574 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14575 /*! TO DO: wdiAddSTAParam.dpuSig */
14576 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14577 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14578 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14579
14580 //all DPU indices are the same for self STA
14581 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14582 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014583 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14585 WDI_MAC_ADDR_LEN);
14586 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14587 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14588
14589 /* Note: Since we don't get an explicit config STA request for self STA, we
14590 add the self STA upon receiving the Start response message. But the
14591 self STA entry in the table is deleted when WDI gets an explicit delete STA
14592 request */
14593 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14594#endif
14595
14596 /*Notify UMAC*/
14597 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14598
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014600}/*WDI_ProcessStartRsp*/
14601
14602
14603/**
14604 @brief Process Stop Response function (called when a response
14605 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014606
14607 @param pWDICtx: pointer to the WLAN DAL context
14608 pEventData: pointer to the event information structure
14609
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 @see
14611 @return Result of the function call
14612*/
14613WDI_Status
14614WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014615(
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 WDI_ControlBlockType* pWDICtx,
14617 WDI_EventInfoType* pEventData
14618)
14619{
14620 WDI_Status wdiStatus;
14621 WDI_StopRspCb wdiStopRspCb = NULL;
14622
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14625
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 -------------------------------------------------------------------------*/
14630 if (( NULL == pEventData ) ||
14631 ( NULL == pEventData->pEventData) ||
14632 ( NULL == wdiStopRspCb ))
14633 {
14634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 }
14639
14640 /*-------------------------------------------------------------------------
14641 Extract response and send it to UMAC
14642 -------------------------------------------------------------------------*/
14643 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14644 {
14645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14646 "Invalid response length in Stop Resp %x %x",
14647 pEventData->uEventDataSize);
14648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 }
14651
14652 /*-------------------------------------------------------------------------
14653 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014654 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14657 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 sizeof(halMacStopRspMsg.stopRspParams));
14659
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014661
14662 wpalMutexAcquire(&pWDICtx->wptMutex);
14663
14664 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 --------------------------------------------------------------------------*/
14667 if ( WDI_STATUS_SUCCESS != wdiStatus )
14668 {
14669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14670 "Failed to stop the device with status %s (%d)",
14671 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14672 halMacStopRspMsg.stopRspParams.status);
14673
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14675
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014679
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14681
14682 /*Transition now as WDI may get preempted imediately after it sends
14683 up the Stop Response and it will not get to process the state transition
14684 from Main Rsp function*/
14685 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14686 wpalMutexRelease(&pWDICtx->wptMutex);
14687
14688 /*! TO DO: - STOP the Data transport */
14689
14690 /*Notify UMAC*/
14691 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14692
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014694}/*WDI_ProcessStopRsp*/
14695
14696/**
14697 @brief Process Close Rsp function (called when a response
14698 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014699
14700 @param pWDICtx: pointer to the WLAN DAL context
14701 pEventData: pointer to the event information structure
14702
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 @see
14704 @return Result of the function call
14705*/
14706WDI_Status
14707WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014708(
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 WDI_ControlBlockType* pWDICtx,
14710 WDI_EventInfoType* pEventData
14711)
14712{
14713 /*There is no close response comming from HAL - function just kept for
14714 simmetry */
14715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014717}/*WDI_ProcessCloseRsp*/
14718
14719
14720/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014722============================================================================*/
14723
14724/**
14725 @brief Process Init Scan Rsp function (called when a response
14726 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014727
14728 @param pWDICtx: pointer to the WLAN DAL context
14729 pEventData: pointer to the event information structure
14730
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 @see
14732 @return Result of the function call
14733*/
14734WDI_Status
14735WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014736(
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 WDI_ControlBlockType* pWDICtx,
14738 WDI_EventInfoType* pEventData
14739)
14740{
14741 WDI_Status wdiStatus;
14742 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014743 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014744 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14746
14747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 -------------------------------------------------------------------------*/
14750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14751 ( NULL == pEventData->pEventData))
14752 {
14753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 }
14758
14759 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14760 if( NULL == wdiInitScanRspCb)
14761 {
14762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014763 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 }
14767
14768 /*-------------------------------------------------------------------------
14769 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14773 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 sizeof(halInitScanRspMsg.initScanRspParams));
14775
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014777
14778 if ( pWDICtx->bInBmps )
14779 {
14780 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014781 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14782 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14784 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14785 WDI_ASSERT(0);
14786 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 }
14788
14789 /*Notify UMAC*/
14790 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14791
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793}/*WDI_ProcessInitScanRsp*/
14794
14795
14796/**
14797 @brief Process Start Scan Rsp function (called when a response
14798 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014799
14800 @param pWDICtx: pointer to the WLAN DAL context
14801 pEventData: pointer to the event information structure
14802
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 @see
14804 @return Result of the function call
14805*/
14806WDI_Status
14807WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014808(
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 WDI_ControlBlockType* pWDICtx,
14810 WDI_EventInfoType* pEventData
14811)
14812{
14813 WDI_StartScanRspParamsType wdiStartScanParams;
14814 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014815
14816 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14818
14819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 -------------------------------------------------------------------------*/
14822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14823 ( NULL == pEventData->pEventData))
14824 {
14825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 }
14830
14831 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14832 if( NULL == wdiStartScanRspCb)
14833 {
14834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014835 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 }
14839
14840 /*-------------------------------------------------------------------------
14841 Extract response and send it to UMAC
14842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14844 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 sizeof(halStartScanRspMsg.startScanRspParams));
14846
14847 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14848 halStartScanRspMsg.startScanRspParams.status);
14849#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 halStartScanRspMsg.startScanRspParams.startTSF,
14854 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014855#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014856
14857 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14858 {
14859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14860 "Start scan failed with status %s (%d)",
14861 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14862 halStartScanRspMsg.startScanRspParams.status);
14863 /* send the status to UMAC, don't return from here*/
14864 }
14865
14866 /*Notify UMAC*/
14867 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14868
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014870
14871}/*WDI_ProcessStartScanRsp*/
14872
14873
14874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014877
14878 @param pWDICtx: pointer to the WLAN DAL context
14879 pEventData: pointer to the event information structure
14880
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 @see
14882 @return Result of the function call
14883*/
14884WDI_Status
14885WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014886(
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 WDI_ControlBlockType* pWDICtx,
14888 WDI_EventInfoType* pEventData
14889)
14890{
14891 WDI_Status wdiStatus;
14892 tHalEndScanRspMsg halEndScanRspMsg;
14893 WDI_EndScanRspCb wdiEndScanRspCb;
14894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14895
14896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 -------------------------------------------------------------------------*/
14899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14900 ( NULL == pEventData->pEventData))
14901 {
14902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 }
14907
14908 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14909
14910 /*-------------------------------------------------------------------------
14911 Extract response and send it to UMAC
14912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14914 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 sizeof(halEndScanRspMsg.endScanRspParams));
14916
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014918
14919 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14920 {
14921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14922 "End Scan failed with status %s (%d )",
14923 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14924 halEndScanRspMsg.endScanRspParams.status);
14925 /* send the status to UMAC, don't return from here*/
14926 }
14927
14928 /*Notify UMAC*/
14929 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14930
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014932}/*WDI_ProcessEndScanRsp*/
14933
14934
14935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014938
14939 @param pWDICtx: pointer to the WLAN DAL context
14940 pEventData: pointer to the event information structure
14941
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 @see
14943 @return Result of the function call
14944*/
14945WDI_Status
14946WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014947(
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 WDI_ControlBlockType* pWDICtx,
14949 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014950)
Jeff Johnson295189b2012-06-20 16:38:30 -070014951{
14952 WDI_Status wdiStatus;
14953 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014954
14955 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14957
14958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 -------------------------------------------------------------------------*/
14961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14962 ( NULL == pEventData->pEventData))
14963 {
14964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 }
14969
14970 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14971
14972 /*-------------------------------------------------------------------------
14973 Extract response and send it to UMAC
14974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14976 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14978
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014980
14981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 halFinishScanRspMsg.finishScanRspParams.status);
14984
14985 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14986 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14987 {
14988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14989 "Finish Scan failed with status %s (%d)",
14990 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14991 halFinishScanRspMsg.finishScanRspParams.status);
14992 /* send the status to UMAC, don't return from here*/
14993 }
14994
14995 /*Notify UMAC*/
14996 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14997
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014999}/*WDI_ProcessFinishScanRsp*/
15000
15001/**
15002 @brief Process Join Response function (called when a response
15003 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015004
15005 @param pWDICtx: pointer to the WLAN DAL context
15006 pEventData: pointer to the event information structure
15007
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 @see
15009 @return Result of the function call
15010*/
15011WDI_Status
15012WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015013(
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 WDI_ControlBlockType* pWDICtx,
15015 WDI_EventInfoType* pEventData
15016)
15017{
15018 WDI_Status wdiStatus;
15019 WDI_JoinRspCb wdiJoinRspCb;
15020 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015021
15022 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15024
15025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 -------------------------------------------------------------------------*/
15028 if (( NULL == pWDICtx ) ||
15029 ( NULL == pWDICtx->pfncRspCB ) ||
15030 ( NULL == pEventData ) ||
15031 ( NULL == pEventData->pEventData))
15032 {
15033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 }
15038
15039 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15040
15041 /*-------------------------------------------------------------------------
15042 Extract response and send it to UMAC
15043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15045 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 sizeof(halJoinRspMsg.joinRspParams));
15047
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015049
15050 wpalMutexAcquire(&pWDICtx->wptMutex);
15051
15052 /*-----------------------------------------------------------------------
15053 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15058 {
15059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15061 "association no longer in progress %d - mysterious HAL response",
15062 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015063
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 }
15068
15069 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15070
15071 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015072 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 -----------------------------------------------------------------------*/
15074 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15075 {
15076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15077 "Join only allowed in Joining state - failure state is %d "
15078 "strange HAL response", pBSSSes->wdiAssocState);
15079
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15081
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 }
15085
15086
15087 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 -----------------------------------------------------------------------*/
15090 if ( WDI_STATUS_SUCCESS != wdiStatus )
15091 {
15092 /*Association was failed by HAL - remove session*/
15093 WDI_DeleteSession(pWDICtx, pBSSSes);
15094
15095 /*Association no longer in progress */
15096 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15097
15098 /*Association no longer in progress - prepare pending assoc for processing*/
15099 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015100
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 }
15102 else
15103 {
15104 /*Transition to state Joining - this may be redundant as we are supposed
15105 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015106 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 }
15108
15109 wpalMutexRelease(&pWDICtx->wptMutex);
15110
15111 /*Notify UMAC*/
15112 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15113
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115}/*WDI_ProcessJoinRsp*/
15116
15117
15118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015121
15122 @param pWDICtx: pointer to the WLAN DAL context
15123 pEventData: pointer to the event information structure
15124
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 @see
15126 @return Result of the function call
15127*/
15128WDI_Status
15129WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015130(
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 WDI_ControlBlockType* pWDICtx,
15132 WDI_EventInfoType* pEventData
15133)
15134{
15135 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15136 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 WDI_BSSSessionType* pBSSSes = NULL;
15139
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15142 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15145
15146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 -------------------------------------------------------------------------*/
15149 if (( NULL == pEventData ) ||
15150 ( NULL == pEventData->pEventData))
15151 {
15152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 }
15157
15158 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15159
15160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15164 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 sizeof(halConfigBssRspMsg.configBssRspParams));
15166
15167 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15168 halConfigBssRspMsg.configBssRspParams.status);
15169 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15173 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015174
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015176
15177 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015179
15180 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015182
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015184
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15188 #endif
15189 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15190 halConfigBssRspMsg.configBssRspParams.staMac,
15191 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 wpalMutexAcquire(&pWDICtx->wptMutex);
15194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15198 wdiConfigBSSParams.macBSSID,
15199 &pBSSSes);
15200
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 /*-----------------------------------------------------------------------
15202 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 -----------------------------------------------------------------------*/
15205 if ( NULL == pBSSSes )
15206 {
15207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15208 "Association sequence for this BSS does not yet exist "
15209 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015210
15211 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15212
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015216
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 /*Save data for this BSS*/
15218 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15219 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15230 pBSSSes->bcastStaIdx =
15231 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015234
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 /*-------------------------------------------------------------------------
15236 Add Peer STA
15237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15240 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015241
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 wdiAddSTAParam.ucHTCapable =
15246 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15247 wdiAddSTAParam.ucStaType =
15248 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15249
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15252 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015254
15255 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15256 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15257 WDI_MAC_ADDR_LEN);
15258
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015272
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15274 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015275
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15277 /*-------------------------------------------------------------------------
15278 Add Broadcast STA only in AP mode
15279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 WDI_BSS_OPERATIONAL_MODE_AP )
15282 {
15283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15284 "Add BCAST STA to table for index: %d",
15285 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015286
15287 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015289
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15291 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15292 }
15293 wpalMutexRelease(&pWDICtx->wptMutex);
15294 }
15295 else
15296 {
15297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15298 "Config BSS RSP failed with status : %s(%d)",
15299 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015300 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 halConfigBssRspMsg.configBssRspParams.status);
15302
Jeff Johnsone7245742012-09-05 17:12:55 -070015303
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 /*Association was failed by HAL - remove session*/
15305 WDI_DeleteSession(pWDICtx, pBSSSes);
15306
15307 /*Association no longer in progress */
15308 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15309
15310 /*Association no longer in progress - prepare pending assoc for processing*/
15311 WDI_DequeueAssocRequest(pWDICtx);
15312
15313 }
15314
15315 /*Notify UMAC*/
15316 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15317
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015319}/*WDI_ProcessConfigBSSRsp*/
15320
15321
15322/**
15323 @brief Process Del BSS Response function (called when a response
15324 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015325
15326 @param pWDICtx: pointer to the WLAN DAL context
15327 pEventData: pointer to the event information structure
15328
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 @see
15330 @return Result of the function call
15331*/
15332WDI_Status
15333WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015334(
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 WDI_ControlBlockType* pWDICtx,
15336 WDI_EventInfoType* pEventData
15337)
15338{
15339 WDI_DelBSSRspParamsType wdiDelBSSParams;
15340 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 WDI_BSSSessionType* pBSSSes = NULL;
15343
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15346
15347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 -------------------------------------------------------------------------*/
15350 if (( NULL == pEventData ) ||
15351 ( NULL == pEventData->pEventData))
15352 {
15353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 }
15358
15359 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15360
15361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15365 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 sizeof(halDelBssRspMsg.deleteBssRspParams));
15367
15368
15369 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015371
15372 wpalMutexAcquire(&pWDICtx->wptMutex);
15373
15374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15378 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15379 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015380
15381 /*-----------------------------------------------------------------------
15382 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 -----------------------------------------------------------------------*/
15385 if ( NULL == pBSSSes )
15386 {
15387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15388 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015389 "association no longer in progress - mysterious HAL response");
15390
15391 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15392
15393 wpalMutexRelease(&pWDICtx->wptMutex);
15394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015396
15397 /*Extract BSSID for the response to UMAC*/
15398 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15399 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15400
15401 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15402
15403 /*-----------------------------------------------------------------------
15404 The current session will be deleted
15405 -----------------------------------------------------------------------*/
15406 WDI_DeleteSession(pWDICtx, pBSSSes);
15407
15408
15409 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15410 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015412 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015413 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015414
15415 /* Delete the STA's in this BSS */
15416 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15417
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 wpalMutexRelease(&pWDICtx->wptMutex);
15419
15420 /*Notify UMAC*/
15421 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15422
Jeff Johnsone7245742012-09-05 17:12:55 -070015423 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015424}/*WDI_ProcessDelBSSRsp*/
15425
15426/**
15427 @brief Process Post Assoc Rsp function (called when a response
15428 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015429
15430 @param pWDICtx: pointer to the WLAN DAL context
15431 pEventData: pointer to the event information structure
15432
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 @see
15434 @return Result of the function call
15435*/
15436WDI_Status
15437WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015438(
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 WDI_ControlBlockType* pWDICtx,
15440 WDI_EventInfoType* pEventData
15441)
15442{
15443 WDI_PostAssocRspParamsType wdiPostAssocParams;
15444 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15449
15450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 -------------------------------------------------------------------------*/
15453 if (( NULL == pEventData ) ||
15454 ( NULL == pEventData->pEventData))
15455 {
15456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015457 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 }
15461
15462 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15463
15464 /*-------------------------------------------------------------------------
15465 Extract response and send it to UMAC
15466 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15468 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 sizeof(halPostAssocRspMsg.postAssocRspParams));
15470
15471 /*Extract the Post Assoc STA Params */
15472
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015476 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15479
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 wdiPostAssocParams.wdiStatus =
15481 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015482
15483 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15484 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15486 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 WDI_MAC_ADDR_LEN);
15488
15489 /* Extract Post Assoc BSS Params */
15490
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15492 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15493 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015494
15495 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15496 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15499 .macSTA, WDI_MAC_ADDR_LEN);
15500
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15503
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15506
15507 wdiPostAssocParams.bssParams.ucBSSIdx =
15508 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15509
Jeff Johnsone7245742012-09-05 17:12:55 -070015510 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15512
15513 wpalMutexAcquire(&pWDICtx->wptMutex);
15514
15515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015521
15522 /*-----------------------------------------------------------------------
15523 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 -----------------------------------------------------------------------*/
15526 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15529 {
15530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15531 "Association sequence for this BSS does not yet exist or "
15532 "association no longer in progress - mysterious HAL response");
15533
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15535
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 }
15539
15540 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015542 -----------------------------------------------------------------------*/
15543 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15544 {
15545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15546 "Post Assoc not allowed before JOIN - failing request "
15547 "strange HAL response");
15548
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15550
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 }
15554
15555 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015556 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 -----------------------------------------------------------------------*/
15558 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15559 {
15560 /*Association was failed by HAL - remove session*/
15561 WDI_DeleteSession(pWDICtx, pBSSSes);
15562 }
15563 else
15564 {
15565 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015567
15568 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15577
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15580 }
15581
15582 /*Association no longer in progress */
15583 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15584
15585 /*Association no longer in progress - prepare pending assoc for processing*/
15586 WDI_DequeueAssocRequest(pWDICtx);
15587
15588 wpalMutexRelease(&pWDICtx->wptMutex);
15589
15590 /*Notify UMAC*/
15591 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15592
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015594}/*WDI_ProcessPostAssocRsp*/
15595
15596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015599
15600 @param pWDICtx: pointer to the WLAN DAL context
15601 pEventData: pointer to the event information structure
15602
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 @see
15604 @return Result of the function call
15605*/
15606WDI_Status
15607WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015608(
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 WDI_ControlBlockType* pWDICtx,
15610 WDI_EventInfoType* pEventData
15611)
15612{
15613 WDI_DelSTARspParamsType wdiDelSTARsp;
15614 WDI_DelSTARspCb wdiDelSTARspCb;
15615 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15618
15619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 -------------------------------------------------------------------------*/
15622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15623 ( NULL == pEventData->pEventData))
15624 {
15625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 }
15630
15631 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15632
15633 /*-------------------------------------------------------------------------
15634 Extract response and send it to UMAC
15635 -------------------------------------------------------------------------*/
15636 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 sizeof(halDelStaRspMsg.delStaRspParams));
15639
15640 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 wdiDelSTARsp.wdiStatus =
15642 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015643
15644 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15645
15646 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15647 if(staType == WDI_STA_ENTRY_SELF)
15648 {
15649 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15650
15651 /* At this point add the self-STA */
15652
15653 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15654 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15655 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15656
15657#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15658#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15659
15660 //all DPU indices are the same for self STA
15661 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15662 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15663 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15664 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15665 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15666 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015667
15668 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 }
15670 else
15671 {
15672 //Delete the station in the table
15673 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15674 }
15675
15676 /*Notify UMAC*/
15677 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15678
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015680}/*WDI_ProcessDelSTARsp*/
15681
15682
15683/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015685==========================================================================*/
15686
15687/**
15688 @brief Process Set BSS Key Rsp function (called when a response
15689 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015690
15691 @param pWDICtx: pointer to the WLAN DAL context
15692 pEventData: pointer to the event information structure
15693
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 @see
15695 @return Result of the function call
15696*/
15697WDI_Status
15698WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015699(
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 WDI_ControlBlockType* pWDICtx,
15701 WDI_EventInfoType* pEventData
15702)
15703{
15704 WDI_Status wdiStatus;
15705 eHalStatus halStatus;
15706 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15708
15709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 -------------------------------------------------------------------------*/
15712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15713 ( NULL == pEventData->pEventData))
15714 {
15715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 }
15720
15721 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15722
15723 /*-------------------------------------------------------------------------
15724 Extract response and send it to UMAC
15725 -------------------------------------------------------------------------*/
15726 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015728
15729 if ( eHAL_STATUS_SUCCESS != halStatus )
15730 {
15731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15732 "Set BSS Key failed with status %s (%d)",
15733 WDI_getHALStatusMsgString(halStatus),
15734 halStatus);
15735 /* send the status to UMAC, don't return from here*/
15736 }
15737
15738 /*Notify UMAC*/
15739 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15740
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015742}/*WDI_ProcessSetBssKeyRsp*/
15743
15744/**
15745 @brief Process Remove BSS Key Rsp function (called when a response
15746 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015747
15748 @param pWDICtx: pointer to the WLAN DAL context
15749 pEventData: pointer to the event information structure
15750
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 @see
15752 @return Result of the function call
15753*/
15754WDI_Status
15755WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015756(
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 WDI_ControlBlockType* pWDICtx,
15758 WDI_EventInfoType* pEventData
15759)
15760{
15761 WDI_Status wdiStatus;
15762 eHalStatus halStatus;
15763 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15765
15766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 -------------------------------------------------------------------------*/
15769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15770 ( NULL == pEventData->pEventData))
15771 {
15772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 }
15777
15778 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15779
15780 /*-------------------------------------------------------------------------
15781 Extract response and send it to UMAC
15782 -------------------------------------------------------------------------*/
15783 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015785
15786 if ( eHAL_STATUS_SUCCESS != halStatus )
15787 {
15788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15789 "Remove BSS Key failed with status %s (%d )",
15790 WDI_getHALStatusMsgString(halStatus),
15791 halStatus);
15792 /* send the status to UMAC, don't return from here*/
15793 }
15794
15795 /*Notify UMAC*/
15796 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15797
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015799}/*WDI_ProcessSetBssKeyRsp*/
15800
15801
15802/**
15803 @brief Process Set STA Key Rsp function (called when a response
15804 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015805
15806 @param pWDICtx: pointer to the WLAN DAL context
15807 pEventData: pointer to the event information structure
15808
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 @see
15810 @return Result of the function call
15811*/
15812WDI_Status
15813WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015814(
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 WDI_ControlBlockType* pWDICtx,
15816 WDI_EventInfoType* pEventData
15817)
15818{
15819 WDI_Status wdiStatus;
15820 eHalStatus halStatus;
15821 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15823
15824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 -------------------------------------------------------------------------*/
15827 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15828 ( NULL == pEventData->pEventData))
15829 {
15830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 }
15835
15836 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15837
15838 /*-------------------------------------------------------------------------
15839 Extract response and send it to UMAC
15840 -------------------------------------------------------------------------*/
15841 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015843
15844 if ( eHAL_STATUS_SUCCESS != halStatus )
15845 {
15846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15847 "Set STA Key failed with status %s (%d)",
15848 WDI_getHALStatusMsgString(halStatus),
15849 halStatus);
15850 /* send the status to UMAC, don't return from here*/
15851 }
15852
15853 /*Notify UMAC*/
15854 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15855
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015857}/*WDI_ProcessSetSTAKeyRsp*/
15858
15859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
15863 @param pWDICtx: pointer to the WLAN DAL context
15864 pEventData: pointer to the event information structure
15865
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 @see
15867 @return Result of the function call
15868*/
15869WDI_Status
15870WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015871(
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 WDI_ControlBlockType* pWDICtx,
15873 WDI_EventInfoType* pEventData
15874)
15875{
15876 WDI_Status wdiStatus;
15877 eHalStatus halStatus;
15878 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15880
15881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 -------------------------------------------------------------------------*/
15884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15885 ( NULL == pEventData->pEventData))
15886 {
15887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 }
15892
15893 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15894
15895 /*-------------------------------------------------------------------------
15896 Extract response and send it to UMAC
15897 -------------------------------------------------------------------------*/
15898 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015899 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015900
15901 if ( eHAL_STATUS_SUCCESS != halStatus )
15902 {
15903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15904 "Remove STA Key failed with status %s (%d)",
15905 WDI_getHALStatusMsgString(halStatus),
15906 halStatus);
15907 /* send the status to UMAC, don't return from here*/
15908 }
15909
15910 /*Notify UMAC*/
15911 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15912
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015914}/*WDI_ProcessRemoveStaKeyRsp*/
15915
15916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015919
15920 @param pWDICtx: pointer to the WLAN DAL context
15921 pEventData: pointer to the event information structure
15922
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 @see
15924 @return Result of the function call
15925*/
15926WDI_Status
15927WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015928(
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 WDI_ControlBlockType* pWDICtx,
15930 WDI_EventInfoType* pEventData
15931)
15932{
15933 WDI_Status wdiStatus;
15934 eHalStatus halStatus;
15935 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15937
15938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 -------------------------------------------------------------------------*/
15941 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15942 ( NULL == pEventData->pEventData))
15943 {
15944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 }
15949
15950 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15951
15952 /*-------------------------------------------------------------------------
15953 Extract response and send it to UMAC
15954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 wpalMemoryCopy( &halStatus,
15956 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 sizeof(halStatus));
15958
Jeff Johnsone7245742012-09-05 17:12:55 -070015959 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015960
15961 if ( eHAL_STATUS_SUCCESS != halStatus )
15962 {
15963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15964 "Set STA Key failed with status %s (%d)",
15965 WDI_getHALStatusMsgString(halStatus),
15966 halStatus);
15967 /* send the status to UMAC, don't return from here*/
15968 }
15969
15970 /*Notify UMAC*/
15971 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15972
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015974}/*WDI_ProcessSetSTABcastKeyRsp*/
15975
15976/**
15977 @brief Process Remove STA Bcast Key Rsp function (called when a
15978 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015979
15980 @param pWDICtx: pointer to the WLAN DAL context
15981 pEventData: pointer to the event information structure
15982
Jeff Johnson295189b2012-06-20 16:38:30 -070015983 @see
15984 @return Result of the function call
15985*/
15986WDI_Status
15987WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015988(
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 WDI_ControlBlockType* pWDICtx,
15990 WDI_EventInfoType* pEventData
15991)
15992{
15993 WDI_Status wdiStatus;
15994 eHalStatus halStatus;
15995 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15997
15998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 -------------------------------------------------------------------------*/
16001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16002 ( NULL == pEventData->pEventData))
16003 {
16004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 }
16009
16010 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16011
16012 /*-------------------------------------------------------------------------
16013 Extract response and send it to UMAC
16014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 wpalMemoryCopy( &halStatus,
16016 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 sizeof(halStatus));
16018
Jeff Johnsone7245742012-09-05 17:12:55 -070016019 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016020
16021 if ( eHAL_STATUS_SUCCESS != halStatus )
16022 {
16023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16024 "Remove STA Key failed with status %s (%d)",
16025 WDI_getHALStatusMsgString(halStatus),
16026 halStatus);
16027 /* send the status to UMAC, don't return from here*/
16028 }
16029
16030 /*Notify UMAC*/
16031 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16032
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016034}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16035
16036
16037/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016038 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016039==========================================================================*/
16040
16041/**
16042 @brief Process Add TSpec Rsp function (called when a response
16043 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016044
16045 @param pWDICtx: pointer to the WLAN DAL context
16046 pEventData: pointer to the event information structure
16047
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 @see
16049 @return Result of the function call
16050*/
16051WDI_Status
16052WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016053(
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 WDI_ControlBlockType* pWDICtx,
16055 WDI_EventInfoType* pEventData
16056)
16057{
16058 WDI_Status wdiStatus;
16059 eHalStatus halStatus;
16060 WDI_AddTsRspCb wdiAddTsRspCb;
16061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16062
16063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 -------------------------------------------------------------------------*/
16066 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16067 ( NULL == pEventData->pEventData))
16068 {
16069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016070 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 }
16074
16075 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16076
16077 /*-------------------------------------------------------------------------
16078 Extract response and send it to UMAC
16079 -------------------------------------------------------------------------*/
16080 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016082
16083 /*Notify UMAC*/
16084 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16085
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016087}/*WDI_ProcessAddTSpecRsp*/
16088
16089
16090/**
16091 @brief Process Del TSpec Rsp function (called when a response
16092 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016093
16094 @param pWDICtx: pointer to the WLAN DAL context
16095 pEventData: pointer to the event information structure
16096
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 @see
16098 @return Result of the function call
16099*/
16100WDI_Status
16101WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016102(
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 WDI_ControlBlockType* pWDICtx,
16104 WDI_EventInfoType* pEventData
16105)
16106{
16107 WDI_Status wdiStatus;
16108 eHalStatus halStatus;
16109 WDI_DelTsRspCb wdiDelTsRspCb;
16110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16111
16112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 -------------------------------------------------------------------------*/
16115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16116 ( NULL == pEventData->pEventData))
16117 {
16118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 }
16123
16124 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16125
16126 /*-------------------------------------------------------------------------
16127 Extract response and send it to UMAC
16128 -------------------------------------------------------------------------*/
16129 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016131
16132 /*Notify UMAC*/
16133 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016136}/*WDI_ProcessDelTSpecRsp*/
16137
16138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016141
16142 @param pWDICtx: pointer to the WLAN DAL context
16143 pEventData: pointer to the event information structure
16144
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 @see
16146 @return Result of the function call
16147*/
16148WDI_Status
16149WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016150(
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 WDI_ControlBlockType* pWDICtx,
16152 WDI_EventInfoType* pEventData
16153)
16154{
16155 WDI_Status wdiStatus;
16156 eHalStatus halStatus;
16157 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16159
16160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 -------------------------------------------------------------------------*/
16163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16164 ( NULL == pEventData->pEventData))
16165 {
16166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 }
16171
16172 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16173
16174 /*-------------------------------------------------------------------------
16175 Extract response and send it to UMAC
16176 -------------------------------------------------------------------------*/
16177 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016179
16180 /*Notify UMAC*/
16181 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16182
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016184}/*WDI_ProcessUpdateEDCAParamsRsp*/
16185
16186
16187/**
16188 @brief Process Add BA Rsp function (called when a response
16189 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016190
16191 @param pWDICtx: pointer to the WLAN DAL context
16192 pEventData: pointer to the event information structure
16193
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 @see
16195 @return Result of the function call
16196*/
16197WDI_Status
16198WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016199(
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 WDI_ControlBlockType* pWDICtx,
16201 WDI_EventInfoType* pEventData
16202)
16203{
16204 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16205
16206 tAddBASessionRspParams halBASessionRsp;
16207 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16208
Jeff Johnsone7245742012-09-05 17:12:55 -070016209
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16211
16212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 -------------------------------------------------------------------------*/
16215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16216 ( NULL == pEventData->pEventData))
16217 {
16218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 }
16223
16224 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16225
16226 /*-------------------------------------------------------------------------
16227 Extract response and send it to UMAC
16228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 wpalMemoryCopy( &halBASessionRsp,
16230 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 sizeof(halBASessionRsp));
16232
16233 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16234
Jeff Johnson43971f52012-07-17 12:26:56 -070016235 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 {
16237 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16238 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16239 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16240 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16241 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16242 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16243 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16244 }
16245
16246 /*Notify UMAC*/
16247 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16248
Jeff Johnsone7245742012-09-05 17:12:55 -070016249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016250}/*WDI_ProcessAddSessionBARsp*/
16251
16252
16253/**
16254 @brief Process Del BA Rsp function (called when a response
16255 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016256
16257 @param pWDICtx: pointer to the WLAN DAL context
16258 pEventData: pointer to the event information structure
16259
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 @see
16261 @return Result of the function call
16262*/
16263WDI_Status
16264WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016265(
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 WDI_ControlBlockType* pWDICtx,
16267 WDI_EventInfoType* pEventData
16268)
16269{
16270 WDI_Status wdiStatus;
16271 eHalStatus halStatus;
16272 WDI_DelBARspCb wdiDelBARspCb;
16273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16274
16275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 -------------------------------------------------------------------------*/
16278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16279 ( NULL == pEventData->pEventData))
16280 {
16281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 }
16286
16287 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16288
16289 /*-------------------------------------------------------------------------
16290 Extract response and send it to UMAC
16291 -------------------------------------------------------------------------*/
16292 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016294
16295 if ( eHAL_STATUS_SUCCESS == halStatus )
16296 {
16297 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16298 }
16299
16300 /*Notify UMAC*/
16301 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16302
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304}/*WDI_ProcessDelBARsp*/
16305
16306#ifdef FEATURE_WLAN_CCX
16307/**
16308 @brief Process TSM Stats Rsp function (called when a response
16309 is being received over the bus from HAL)
16310
16311 @param pWDICtx: pointer to the WLAN DAL context
16312 pEventData: pointer to the event information structure
16313
16314 @see
16315 @return Result of the function call
16316*/
16317WDI_Status
16318WDI_ProcessTsmStatsRsp
16319(
16320 WDI_ControlBlockType* pWDICtx,
16321 WDI_EventInfoType* pEventData
16322)
16323{
16324 WDI_TsmRspCb wdiTsmStatsRspCb;
16325 tTsmStatsRspMsg halTsmStatsRspMsg;
16326 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16328
16329 /*-------------------------------------------------------------------------
16330 Sanity check
16331 -------------------------------------------------------------------------*/
16332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16333 ( NULL == pEventData->pEventData))
16334 {
16335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016336 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 WDI_ASSERT(0);
16338 return WDI_STATUS_E_FAILURE;
16339 }
16340
16341 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16342
16343 /*-------------------------------------------------------------------------
16344 Unpack HAL Response Message - the header was already extracted by the
16345 main Response Handling procedure
16346 -------------------------------------------------------------------------*/
16347 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16348 pEventData->pEventData,
16349 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16350
16351 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16352 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16353 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16354 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16355 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16356 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16357 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16358 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16359 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16360 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16361 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16362 halTsmStatsRspMsg.tsmStatsRspParams.status);
16363
16364 /*Notify UMAC*/
16365 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16366
16367 return WDI_STATUS_SUCCESS;
16368}/*WDI_ProcessTsmStatsRsp*/
16369
16370#endif
16371
16372
16373
16374/**
16375 @brief Process Flush AC Rsp function (called when a response
16376 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016377
16378 @param pWDICtx: pointer to the WLAN DAL context
16379 pEventData: pointer to the event information structure
16380
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 @see
16382 @return Result of the function call
16383*/
16384WDI_Status
16385WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016386(
Jeff Johnson295189b2012-06-20 16:38:30 -070016387 WDI_ControlBlockType* pWDICtx,
16388 WDI_EventInfoType* pEventData
16389)
16390{
16391 WDI_Status wdiStatus;
16392 eHalStatus halStatus;
16393 WDI_FlushAcRspCb wdiFlushAcRspCb;
16394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16395
16396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 -------------------------------------------------------------------------*/
16399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16400 ( NULL == pEventData->pEventData))
16401 {
16402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 }
16407
16408 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16409
16410 /*-------------------------------------------------------------------------
16411 Extract response and send it to UMAC
16412 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016413 wpalMemoryCopy( &halStatus,
16414 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016415 sizeof(halStatus));
16416
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016418
16419 /*Notify UMAC*/
16420 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16421
Jeff Johnsone7245742012-09-05 17:12:55 -070016422 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016423}/*WDI_ProcessFlushAcRsp*/
16424
16425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016428
16429 @param pWDICtx: pointer to the WLAN DAL context
16430 pEventData: pointer to the event information structure
16431
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 @see
16433 @return Result of the function call
16434*/
16435WDI_Status
16436WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016437(
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 WDI_ControlBlockType* pWDICtx,
16439 WDI_EventInfoType* pEventData
16440)
16441{
16442 WDI_Status wdiStatus;
16443 eHalStatus halStatus;
16444 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16446
16447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 -------------------------------------------------------------------------*/
16450 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16451 ( NULL == pEventData->pEventData))
16452 {
16453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 }
16458
16459 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16460
16461 /*-------------------------------------------------------------------------
16462 Extract response and send it to UMAC
16463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wpalMemoryCopy( &halStatus,
16465 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 sizeof(halStatus));
16467
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016469
16470 /*Notify UMAC*/
16471 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16472
Jeff Johnsone7245742012-09-05 17:12:55 -070016473 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016474}/*WDI_ProcessBtAmpEventRsp*/
16475
16476
16477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016480
16481 @param pWDICtx: pointer to the WLAN DAL context
16482 pEventData: pointer to the event information structure
16483
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 @see
16485 @return Result of the function call
16486*/
16487WDI_Status
16488WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016489(
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 WDI_ControlBlockType* pWDICtx,
16491 WDI_EventInfoType* pEventData
16492)
16493{
16494 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16495 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16496 tAddStaSelfRspMsg halAddStaSelfRsp;
16497 WDI_AddStaParams wdiAddSTAParam = {0};
16498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16499
16500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 -------------------------------------------------------------------------*/
16503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16504 ( NULL == pEventData->pEventData))
16505 {
16506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 }
16511
Jeff Johnsone7245742012-09-05 17:12:55 -070016512 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16514
16515 /*-------------------------------------------------------------------------
16516 Extract response and send it to UMAC
16517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16519 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16521
16522
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 wdiAddSTASelfParams.wdiStatus =
16524 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016528 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016530 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16532
16533 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16534 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16535 WDI_MAC_ADDR_LEN);
16536
16537
16538#ifdef HAL_SELF_STA_PER_BSS
16539
16540 /* At this point add the self-STA */
16541
16542 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16543 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16544 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16545
16546 //all DPU indices are the same for self STA
16547
16548 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16551 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16552 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16553 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16554 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16555
16556 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16557 WDI_MAC_ADDR_LEN);
16558
16559 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16560 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16561
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16564 {
16565 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16566 }
16567#endif
16568
16569 /*Notify UMAC*/
16570 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16571
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016573}/*WDI_ProcessAddSTASelfRsp*/
16574
16575
16576
16577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016580
16581 @param pWDICtx: pointer to the WLAN DAL context
16582 pEventData: pointer to the event information structure
16583
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 @see
16585 @return Result of the function call
16586*/
16587WDI_Status
16588WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016589(
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 WDI_ControlBlockType* pWDICtx,
16591 WDI_EventInfoType* pEventData
16592)
16593{
16594 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16595 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16596 tDelStaSelfRspParams delStaSelfRspParams;
16597 wpt_uint8 ucStaIdx;
16598
16599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16600
16601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016603 -------------------------------------------------------------------------*/
16604 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16605 ( NULL == pEventData->pEventData))
16606 {
16607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 }
16612
16613 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16614
16615 /*-------------------------------------------------------------------------
16616 Extract response and send it to UMAC
16617 -------------------------------------------------------------------------*/
16618
Jeff Johnsone7245742012-09-05 17:12:55 -070016619 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 (wpt_uint8*)pEventData->pEventData,
16621 sizeof(tDelStaSelfRspParams));
16622
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 wdiDelStaSelfRspParams.wdiStatus =
16624 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016625
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16628 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16629 {
16630 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 delStaSelfRspParams.selfMacAddr,
16633 &ucStaIdx);
16634 if(WDI_STATUS_E_FAILURE == wdiStatus)
16635 {
16636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016637 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 }
16641 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16642 }
16643
16644 /*Notify UMAC*/
16645 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16646
16647 return WDI_STATUS_SUCCESS;
16648}
16649
Jeff Johnsone7245742012-09-05 17:12:55 -070016650#ifdef FEATURE_OEM_DATA_SUPPORT
16651/**
16652 @brief Start Oem Data Rsp function (called when a
16653 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016654
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 @param pWDICtx: pointer to the WLAN DAL context
16656 pEventData: pointer to the event information structure
16657
16658 @see
16659 @return Result of the function call
16660*/
16661#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16662
16663WDI_Status
16664WDI_ProcessStartOemDataRsp
16665(
16666 WDI_ControlBlockType* pWDICtx,
16667 WDI_EventInfoType* pEventData
16668)
16669{
16670 WDI_oemDataRspCb wdiOemDataRspCb;
16671 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16672 tStartOemDataRspParams* halStartOemDataRspParams;
16673
16674 /*-------------------------------------------------------------------------
16675 Sanity check
16676 -------------------------------------------------------------------------*/
16677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16678 ( NULL == pEventData->pEventData))
16679 {
16680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016681 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 WDI_ASSERT(0);
16683 return WDI_STATUS_E_FAILURE;
16684 }
16685
16686 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16687
16688 /*-------------------------------------------------------------------------
16689 Extract response and send it to UMAC
16690 -------------------------------------------------------------------------*/
16691 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16692
16693
16694 //It is the responsibility of the application code to check for failure
16695 //conditions!
16696
16697 //Allocate memory for WDI OEM DATA RSP structure
16698 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16699
16700 if(NULL == wdiOemDataRspParams)
16701 {
16702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16703 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16704 pWDICtx, pEventData, pEventData->pEventData);
16705 WDI_ASSERT(0);
16706 return WDI_STATUS_E_FAILURE;
16707 }
16708
16709 /* Populate WDI structure members */
16710 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16711
16712 /*Notify UMAC*/
16713 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16714
16715 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16716 wpalMemoryFree(wdiOemDataRspParams);
16717
16718 return WDI_STATUS_SUCCESS;
16719}/*WDI_PrcoessStartOemDataRsp*/
16720#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016721
16722/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016724===========================================================================*/
16725
16726/**
16727 @brief Process Channel Switch Rsp function (called when a response
16728 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016729
16730 @param pWDICtx: pointer to the WLAN DAL context
16731 pEventData: pointer to the event information structure
16732
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 @see
16734 @return Result of the function call
16735*/
16736WDI_Status
16737WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016738(
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 WDI_ControlBlockType* pWDICtx,
16740 WDI_EventInfoType* pEventData
16741)
16742{
16743 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16744 WDI_SwitchChRspCb wdiChSwitchRspCb;
16745 tSwitchChannelRspParams halSwitchChannelRsp;
16746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16747
16748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 -------------------------------------------------------------------------*/
16751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16752 ( NULL == pEventData->pEventData))
16753 {
16754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 }
16759
16760 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16761
16762 /*-------------------------------------------------------------------------
16763 Extract response and send it to UMAC
16764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 (wpt_uint8*)pEventData->pEventData,
16767 sizeof(halSwitchChannelRsp));
16768
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 wdiSwitchChRsp.wdiStatus =
16770 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16772
16773#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016775#endif
16776
16777 /*Notify UMAC*/
16778 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16779
Jeff Johnsone7245742012-09-05 17:12:55 -070016780 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016781}/*WDI_ProcessChannelSwitchRsp*/
16782
16783
16784/**
16785 @brief Process Config STA Rsp function (called when a response
16786 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016787
16788 @param pWDICtx: pointer to the WLAN DAL context
16789 pEventData: pointer to the event information structure
16790
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 @see
16792 @return Result of the function call
16793*/
16794WDI_Status
16795WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016796(
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 WDI_ControlBlockType* pWDICtx,
16798 WDI_EventInfoType* pEventData
16799)
16800{
16801 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16802 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16803 WDI_AddStaParams wdiAddSTAParam;
16804
16805 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016807
Jeff Johnsone7245742012-09-05 17:12:55 -070016808 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16810
16811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 -------------------------------------------------------------------------*/
16814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16815 ( NULL == pEventData->pEventData))
16816 {
16817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 }
16822
16823 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16824
16825 /*-------------------------------------------------------------------------
16826 Extract response and send it to UMAC
16827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16829 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 sizeof(halConfigStaRsp.configStaRspParams));
16831
16832
16833 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16834 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16835 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16836 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16837 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16838
16839 /* MAC Address of STA - take from cache as it does not come back in the
16840 response*/
16841 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016844
16845 wdiCfgSTAParams.wdiStatus =
16846 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016847
16848 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16849 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16850 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16851
16852 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16853 {
16854 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16855 {
16856 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16859 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016860
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 wdiAddSTAParam.ucHTCapable =
16865 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16866 wdiAddSTAParam.ucStaType =
16867 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16868
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16871 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016873
16874 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16875 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16876 WDI_MAC_ADDR_LEN);
16877
16878 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16879 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16880 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016881
16882 if ( NULL == pBSSSes )
16883 {
16884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16885 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016886
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 }
16890
16891 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016892 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016896 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 halConfigStaRsp.configStaRspParams.ucBcastSig;
16900 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16901 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016902
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16904 }
16905 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16906 {
16907 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16908
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016913 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016914 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 halConfigStaRsp.configStaRspParams.ucUcastSig;
16923 }
16924 }
16925
16926 /*Notify UMAC*/
16927 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16928
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016930}/*WDI_ProcessConfigStaRsp*/
16931
16932
16933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016936
16937 @param pWDICtx: pointer to the WLAN DAL context
16938 pEventData: pointer to the event information structure
16939
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 @see
16941 @return Result of the function call
16942*/
16943WDI_Status
16944WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016945(
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 WDI_ControlBlockType* pWDICtx,
16947 WDI_EventInfoType* pEventData
16948)
16949{
16950 WDI_Status wdiStatus;
16951 eHalStatus halStatus;
16952 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16953
16954 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16957
16958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 -------------------------------------------------------------------------*/
16961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16962 ( NULL == pEventData->pEventData))
16963 {
16964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 }
16969
16970 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16971
16972 wpalMutexAcquire(&pWDICtx->wptMutex);
16973
16974 /*If the link is being transitioned to idle - the BSS is to be deleted
16975 - this type of ending a session is possible when UMAC has failed an
16976 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016977 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016978 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16979 {
16980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016982 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016983 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16984 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16985 &pBSSSes);
16986
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 /*-----------------------------------------------------------------------
16988 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 -----------------------------------------------------------------------*/
16991 if ( NULL == pBSSSes )
16992 {
16993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16994 "Set link response received outside association session");
16995 }
16996 else
16997 {
16998 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16999 will be del BSS coming after this to stop the beaconing & cleaning up the
17000 sessions*/
17001 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17002 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17003 {
17004 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 -----------------------------------------------------------------------*/
17007 WDI_DeleteSession(pWDICtx, pBSSSes);
17008
17009 /*-----------------------------------------------------------------------
17010 Check to see if this association is in progress - if so disable the
17011 flag as this has ended
17012 -----------------------------------------------------------------------*/
17013 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 /*Association no longer in progress */
17016 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17017 /*Association no longer in progress - prepare pending assoc for processing*/
17018 WDI_DequeueAssocRequest(pWDICtx);
17019 }
17020 }
17021 }
17022 }
17023 /* If the link state has been set to POST ASSOC, reset the "association in
17024 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17027 {
17028 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17029 WDI_DequeueAssocRequest(pWDICtx);
17030 }
17031
17032 wpalMutexRelease(&pWDICtx->wptMutex);
17033
17034 /*-------------------------------------------------------------------------
17035 Extract response and send it to UMAC
17036 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wpalMemoryCopy( &halStatus,
17038 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 sizeof(halStatus));
17040
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017042
17043 /*Notify UMAC*/
17044 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17045
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017047}/*WDI_ProcessSetLinkStateRsp*/
17048
17049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017052
17053 @param pWDICtx: pointer to the WLAN DAL context
17054 pEventData: pointer to the event information structure
17055
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 @see
17057 @return Result of the function call
17058*/
17059WDI_Status
17060WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017061(
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 WDI_ControlBlockType* pWDICtx,
17063 WDI_EventInfoType* pEventData
17064)
17065{
17066 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17067 WDI_GetStatsRspCb wdiGetStatsRspCb;
17068 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017069
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17071
17072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 -------------------------------------------------------------------------*/
17075 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17076 ( NULL == pEventData->pEventData))
17077 {
17078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 }
17083
17084 /*-------------------------------------------------------------------------
17085 Extract response and send it to UMAC
17086 -------------------------------------------------------------------------*/
17087 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17088
17089 /*allocate the stats response buffer */
17090 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17091 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17092 + sizeof(WDI_GetStatsRspParamsType));
17093
17094 if(NULL == wdiGetStatsRsp)
17095 {
17096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17097 "Failed to allocate memory in Get Stats Response %x %x %x ",
17098 pWDICtx, pEventData, pEventData->pEventData);
17099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 }
17102
17103 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17104
17105 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17106 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17107 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17108 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17109 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17110 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17111
17112 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17113 wpalMemoryCopy(wdiGetStatsRsp + 1,
17114 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17115 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17116
17117 /*Notify UMAC*/
17118 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17119
17120 wpalMemoryFree(wdiGetStatsRsp);
17121
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017123}/*WDI_ProcessGetStatsRsp*/
17124
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017125#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17126/**
17127 @brief Process Get Roam Rssi Rsp function (called when a response is
17128 being received over the bus from HAL)
17129
17130 @param pWDICtx: pointer to the WLAN DAL context
17131 pEventData: pointer to the event information structure
17132
17133 @see
17134 @return Result of the function call
17135*/
17136WDI_Status
17137WDI_ProcessGetRoamRssiRsp
17138(
17139 WDI_ControlBlockType* pWDICtx,
17140 WDI_EventInfoType* pEventData
17141)
17142{
17143 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17144 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17145 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17147
17148 /*-------------------------------------------------------------------------
17149 Sanity check
17150 -------------------------------------------------------------------------*/
17151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17152 ( NULL == pEventData->pEventData))
17153 {
17154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17155 "%s: Invalid parameters", __func__);
17156 WDI_ASSERT(0);
17157 return WDI_STATUS_E_FAILURE;
17158 }
17159
17160 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17161 if(NULL == wdiGetRoamRssiRspCb)
17162 {
17163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17164 "%s: call back function is NULL", __func__);
17165 WDI_ASSERT(0);
17166 return WDI_STATUS_E_FAILURE;
17167 }
17168
17169 /*-------------------------------------------------------------------------
17170 Extract response and send it to UMAC
17171 -------------------------------------------------------------------------*/
17172 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17173 pEventData->pEventData,
17174 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17175
17176 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17177 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17178 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17179
17180 /*Notify UMAC*/
17181 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17182
17183 return WDI_STATUS_SUCCESS;
17184}/*WDI_ProcessGetRoamRssiRsp*/
17185#endif
17186
Jeff Johnson295189b2012-06-20 16:38:30 -070017187
17188/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017191
17192 @param pWDICtx: pointer to the WLAN DAL context
17193 pEventData: pointer to the event information structure
17194
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 @see
17196 @return Result of the function call
17197*/
17198WDI_Status
17199WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017200(
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 WDI_ControlBlockType* pWDICtx,
17202 WDI_EventInfoType* pEventData
17203)
17204{
17205 WDI_Status wdiStatus;
17206 eHalStatus halStatus;
17207 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17209
17210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 -------------------------------------------------------------------------*/
17213 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17214 ( NULL == pEventData->pEventData))
17215 {
17216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 }
17221
17222 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17223
17224 /*-------------------------------------------------------------------------
17225 Extract response and send it to UMAC
17226 -------------------------------------------------------------------------*/
17227 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017229
17230 /*Notify UMAC*/
17231 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17232
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017234}/*WDI_ProcessUpdateCfgRsp*/
17235
17236
17237
17238/**
17239 @brief Process Add BA Rsp function (called when a response
17240 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017241
17242 @param pWDICtx: pointer to the WLAN DAL context
17243 pEventData: pointer to the event information structure
17244
Jeff Johnson295189b2012-06-20 16:38:30 -070017245 @see
17246 @return Result of the function call
17247*/
17248WDI_Status
17249WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017250(
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 WDI_ControlBlockType* pWDICtx,
17252 WDI_EventInfoType* pEventData
17253)
17254{
17255 WDI_AddBARspCb wdiAddBARspCb;
17256
17257 tAddBARspParams halAddBARsp;
17258 WDI_AddBARspinfoType wdiAddBARsp;
17259
17260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17261
17262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 -------------------------------------------------------------------------*/
17265 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17266 ( NULL == pEventData->pEventData))
17267 {
17268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 }
17273
17274 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17275
17276 /*-------------------------------------------------------------------------
17277 Extract response and send it to UMAC
17278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 wpalMemoryCopy( &halAddBARsp,
17280 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 sizeof(halAddBARsp));
17282
17283 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17284
Jeff Johnson43971f52012-07-17 12:26:56 -070017285 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 {
17287 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17288 }
17289
17290 /*Notify UMAC*/
17291 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17292
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294}/*WDI_ProcessAddSessionBARsp*/
17295
17296/**
17297 @brief Process Add BA Rsp function (called when a response
17298 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017299
17300 @param pWDICtx: pointer to the WLAN DAL context
17301 pEventData: pointer to the event information structure
17302
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 @see
17304 @return Result of the function call
17305*/
17306WDI_Status
17307WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017308(
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 WDI_ControlBlockType* pWDICtx,
17310 WDI_EventInfoType* pEventData
17311)
17312{
17313 WDI_TriggerBARspCb wdiTriggerBARspCb;
17314
17315 tTriggerBARspParams* halTriggerBARsp;
17316 tTriggerBaRspCandidate* halBaCandidate;
17317 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17318 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17319 wpt_uint16 index;
17320 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017321 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17323
17324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 -------------------------------------------------------------------------*/
17327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17328 ( NULL == pEventData->pEventData))
17329 {
17330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 }
17335
17336 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17337
17338 /*-------------------------------------------------------------------------
17339 Extract response and send it to UMAC
17340 -------------------------------------------------------------------------*/
17341 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17342
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017343 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17344
17345 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17346 {
17347 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017350
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017351 if(NULL == wdiTriggerBARsp)
17352 {
17353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17354 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17355 pWDICtx, pEventData, pEventData->pEventData);
17356 WDI_ASSERT(0);
17357 return WDI_STATUS_E_FAILURE;
17358 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017359
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017360 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17361
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017363 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17365
17366 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17367 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17368
17369 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17370 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17373 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17374 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17379 }
17380 wdiTriggerBARspCandidate++;
17381 halBaCandidate++;
17382 }
17383 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017384 else
17385 {
17386 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17387
17388 if(NULL == wdiTriggerBARsp)
17389 {
17390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17391 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17392 pWDICtx, pEventData, pEventData->pEventData);
17393 WDI_ASSERT(0);
17394 return WDI_STATUS_E_FAILURE;
17395 }
17396
17397 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17398
17399 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017400
17401 /*Notify UMAC*/
17402 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17403
17404 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017406}/*WDI_ProcessAddSessionBARsp*/
17407
17408/**
17409 @brief Process Update Beacon Params Rsp function (called when a response
17410 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017411
17412 @param pWDICtx: pointer to the WLAN DAL context
17413 pEventData: pointer to the event information structure
17414
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 @see
17416 @return Result of the function call
17417*/
17418WDI_Status
17419WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017420(
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 WDI_ControlBlockType* pWDICtx,
17422 WDI_EventInfoType* pEventData
17423)
17424{
17425 WDI_Status wdiStatus;
17426 eHalStatus halStatus;
17427 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17429
17430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017432 -------------------------------------------------------------------------*/
17433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17434 ( NULL == pEventData->pEventData))
17435 {
17436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 }
17441
17442 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17443
17444 /*-------------------------------------------------------------------------
17445 Extract response and send it to UMAC
17446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 wpalMemoryCopy( &halStatus,
17448 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 sizeof(halStatus));
17450
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017452
17453 /*Notify UMAC*/
17454 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17455
Jeff Johnsone7245742012-09-05 17:12:55 -070017456 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017457}/*WDI_ProcessUpdateBeaconParamsRsp*/
17458
17459/**
17460 @brief Process Send Beacon template Rsp function (called when a response
17461 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017462
17463 @param pWDICtx: pointer to the WLAN DAL context
17464 pEventData: pointer to the event information structure
17465
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 @see
17467 @return Result of the function call
17468*/
17469WDI_Status
17470WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017471(
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 WDI_ControlBlockType* pWDICtx,
17473 WDI_EventInfoType* pEventData
17474)
17475{
17476 WDI_Status wdiStatus;
17477 eHalStatus halStatus;
17478 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17480
17481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 -------------------------------------------------------------------------*/
17484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17485 ( NULL == pEventData->pEventData))
17486 {
17487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 }
17492
17493 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17494
17495 /*-------------------------------------------------------------------------
17496 Extract response and send it to UMAC
17497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 wpalMemoryCopy( &halStatus,
17499 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 sizeof(halStatus));
17501
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017503
17504 /*Notify UMAC*/
17505 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17506
Jeff Johnsone7245742012-09-05 17:12:55 -070017507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017508}/*WDI_ProcessSendBeaconParamsRsp*/
17509
Jeff Johnsone7245742012-09-05 17:12:55 -070017510
Jeff Johnson295189b2012-06-20 16:38:30 -070017511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017514
17515 @param pWDICtx: pointer to the WLAN DAL context
17516 pEventData: pointer to the event information structure
17517
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 @see
17519 @return Result of the function call
17520*/
17521WDI_Status
17522WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017523(
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 WDI_ControlBlockType* pWDICtx,
17525 WDI_EventInfoType* pEventData
17526)
17527{
17528 WDI_Status wdiStatus;
17529 eHalStatus halStatus;
17530 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17532
17533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 -------------------------------------------------------------------------*/
17536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17537 ( NULL == pEventData->pEventData))
17538 {
17539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 }
17544
17545 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17546
17547 /*-------------------------------------------------------------------------
17548 Extract response and send it to UMAC
17549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 wpalMemoryCopy( &halStatus,
17551 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 sizeof(halStatus));
17553
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017555
17556 /*Notify UMAC*/
17557 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17558
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017560}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17561
17562 /**
17563 @brief Process Set Max Tx Power Rsp function (called when a response
17564 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017565
17566 @param pWDICtx: pointer to the WLAN DAL context
17567 pEventData: pointer to the event information structure
17568
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 @see
17570 @return Result of the function call
17571*/
17572WDI_Status
17573WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017574(
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 WDI_ControlBlockType* pWDICtx,
17576 WDI_EventInfoType* pEventData
17577)
17578{
17579 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017580
Jeff Johnson295189b2012-06-20 16:38:30 -070017581 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017582
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17585
17586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 -------------------------------------------------------------------------*/
17589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17590 ( NULL == pEventData->pEventData))
17591 {
17592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 }
17597
17598 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17599
17600 /*-------------------------------------------------------------------------
17601 Extract response and send it to UMAC
17602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17604 pEventData->pEventData,
17605 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017606
17607 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17608 {
17609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17610 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 }
17614
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017617 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017618
17619 /*Notify UMAC*/
17620 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17621
Jeff Johnsone7245742012-09-05 17:12:55 -070017622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017623}
17624
schangd82195a2013-03-13 18:41:24 -070017625 /**
17626 @brief Process Set Tx Power Rsp function (called when a response
17627 is being received over the bus from HAL)
17628
17629 @param pWDICtx: pointer to the WLAN DAL context
17630 pEventData: pointer to the event information structure
17631
17632 @see
17633 @return Result of the function call
17634*/
17635WDI_Status
17636WDI_ProcessSetTxPowerRsp
17637(
17638 WDI_ControlBlockType* pWDICtx,
17639 WDI_EventInfoType* pEventData
17640)
17641{
17642 tSetTxPwrRspMsg halTxpowerrsp;
17643 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17644 WDA_SetTxPowerRspCb wdiReqStatusCb;
17645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17646
17647 /*-------------------------------------------------------------------------
17648 Sanity check
17649 -------------------------------------------------------------------------*/
17650 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17651 ( NULL == pEventData->pEventData))
17652 {
17653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17654 "%s: Invalid parameters", __func__);
17655 WDI_ASSERT(0);
17656 return WDI_STATUS_E_FAILURE;
17657 }
17658
17659 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17660
17661 /*-------------------------------------------------------------------------
17662 Extract response and send it to UMAC
17663 -------------------------------------------------------------------------*/
17664 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17665 pEventData->pEventData,
17666 sizeof(halTxpowerrsp.setTxPwrRspParams));
17667
17668 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17669 {
17670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17671 "Error status returned in Set Tx Power Response ");
17672 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17673 return WDI_STATUS_E_FAILURE;
17674 }
17675
17676 wdiSetTxPowerRspMsg.wdiStatus =
17677 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17678
17679 /*Notify UMAC*/
17680 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17681
17682 return WDI_STATUS_SUCCESS;
17683}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017684#ifdef FEATURE_WLAN_TDLS
17685/**
17686 @brief Process TDLS Link Establish Rsp function (called
17687 when a response is being received over the bus from HAL)
17688
17689 @param pWDICtx: pointer to the WLAN DAL context
17690 pEventData: pointer to the event information structure
17691
17692 @see
17693 @return Result of the function call
17694*/
17695WDI_Status
17696WDI_ProcessLinkEstablishReqRsp
17697(
17698 WDI_ControlBlockType* pWDICtx,
17699 WDI_EventInfoType* pEventData
17700)
17701{
17702 WDI_Status wdiStatus;
17703 eHalStatus halStatus;
17704 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
17705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17706
17707 /*-------------------------------------------------------------------------
17708 Sanity check
17709 -------------------------------------------------------------------------*/
17710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17711 ( NULL == pEventData->pEventData))
17712 {
17713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17714 "%s: Invalid parameters", __func__);
17715 WDI_ASSERT(0);
17716 return WDI_STATUS_E_FAILURE;
17717 }
17718
17719 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17720
17721 /*-------------------------------------------------------------------------
17722 Extract response and send it to UMAC
17723 -------------------------------------------------------------------------*/
17724 wpalMemoryCopy( &halStatus,
17725 pEventData->pEventData,
17726 sizeof(halStatus));
17727
17728 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17729
17730 /*Notify UMAC*/
17731 wdiTDLSLinkEstablishReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17732
17733 return WDI_STATUS_SUCCESS;
17734}/*WDI_ProcessLinkEstablishReqRsp*/
17735#endif
schangd82195a2013-03-13 18:41:24 -070017736
Jeff Johnson295189b2012-06-20 16:38:30 -070017737/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017738 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017740
17741 @param pWDICtx: pointer to the WLAN DAL context
17742 pEventData: pointer to the event information structure
17743
Jeff Johnson295189b2012-06-20 16:38:30 -070017744 @see
17745 @return Result of the function call
17746*/
17747WDI_Status
17748WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017749(
Jeff Johnson295189b2012-06-20 16:38:30 -070017750 WDI_ControlBlockType* pWDICtx,
17751 WDI_EventInfoType* pEventData
17752)
17753{
17754 WDI_Status wdiStatus;
17755 eHalStatus halStatus;
17756 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17758
17759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 -------------------------------------------------------------------------*/
17762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17763 ( NULL == pEventData->pEventData))
17764 {
17765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017766 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 }
17770
17771 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17772
17773 /*-------------------------------------------------------------------------
17774 Extract response and send it to UMAC
17775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017776 wpalMemoryCopy( &halStatus,
17777 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 sizeof(halStatus));
17779
Jeff Johnsone7245742012-09-05 17:12:55 -070017780 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017781
17782 /*Notify UMAC*/
17783 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17784
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017786}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017788 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017789 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017790
17791 @param pWDICtx: pointer to the WLAN DAL context
17792 pEventData: pointer to the event information structure
17793
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 @see
17795 @return Result of the function call
17796*/
17797WDI_Status
17798WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017799(
Jeff Johnson295189b2012-06-20 16:38:30 -070017800 WDI_ControlBlockType* pWDICtx,
17801 WDI_EventInfoType* pEventData
17802)
17803{
17804 WDI_Status wdiStatus;
17805 eHalStatus halStatus;
17806 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017807 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17809
17810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 -------------------------------------------------------------------------*/
17813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17814 ( NULL == pEventData->pEventData))
17815 {
17816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 }
17821
17822 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17823
17824 /*-------------------------------------------------------------------------
17825 Extract response and send it to UMAC
17826 -------------------------------------------------------------------------*/
17827 halStatus = *((eHalStatus*)pEventData->pEventData);
17828
Jeff Johnsone7245742012-09-05 17:12:55 -070017829 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017830
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017831 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17832 * Other module states are taken care by PMC.
17833 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17834 */
17835 if (wdiStatus != WDI_STATUS_SUCCESS) {
17836
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17838 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17839 halStatus);
17840 /* Call Back is not required as we are putting the DXE in FULL
17841 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017842 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17843
17844 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17846 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17847 WDI_ASSERT(0);
17848 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017849 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 /*Notify UMAC*/
17851 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17852
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017854}/*WDI_ProcessEnterImpsRsp*/
17855
17856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017857 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017859
17860 @param pWDICtx: pointer to the WLAN DAL context
17861 pEventData: pointer to the event information structure
17862
Jeff Johnson295189b2012-06-20 16:38:30 -070017863 @see
17864 @return Result of the function call
17865*/
17866WDI_Status
17867WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017868(
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 WDI_ControlBlockType* pWDICtx,
17870 WDI_EventInfoType* pEventData
17871)
17872{
17873 WDI_Status wdiStatus;
17874 eHalStatus halStatus;
17875 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017876 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17878
17879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 -------------------------------------------------------------------------*/
17882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17883 ( NULL == pEventData->pEventData))
17884 {
17885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 }
17890
17891 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17892
17893 /*-------------------------------------------------------------------------
17894 Extract response and send it to UMAC
17895 -------------------------------------------------------------------------*/
17896 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017898
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053017899 if (halStatus != eHAL_STATUS_SUCCESS)
17900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17901 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
17902
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017904 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17905 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17906 {
17907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17908 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17909 WDI_ASSERT(0);
17910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 /*Notify UMAC*/
17912 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17913
Jeff Johnsone7245742012-09-05 17:12:55 -070017914 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017915}/*WDI_ProcessExitImpsRsp*/
17916
17917/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017920
17921 @param pWDICtx: pointer to the WLAN DAL context
17922 pEventData: pointer to the event information structure
17923
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 @see
17925 @return Result of the function call
17926*/
17927WDI_Status
17928WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017929(
Jeff Johnson295189b2012-06-20 16:38:30 -070017930 WDI_ControlBlockType* pWDICtx,
17931 WDI_EventInfoType* pEventData
17932)
17933{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017934 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17935 tHalEnterBmpsRspParams halEnterBmpsRsp;
17936 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17937 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017938 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17940
17941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 -------------------------------------------------------------------------*/
17944 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17945 ( NULL == pEventData->pEventData))
17946 {
17947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017948 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 }
17952
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017954 Extract response and send it to UMAC
17955 -------------------------------------------------------------------------*/
17956 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17957 {
17958 wpalMemoryCopy( &halEnterBmpsRsp,
17959 pEventData->pEventData,
17960 sizeof(halEnterBmpsRsp));
17961
17962 //Used to print debug message
17963 halStatus = halEnterBmpsRsp.status;
17964 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17965 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17966 }
17967 else
17968 {
17969 halStatus = *((eHalStatus*)pEventData->pEventData);
17970 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17971 }
17972
17973 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017974
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017975 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17976 * Other module states are taken care by PMC.
17977 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17978 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017979 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17980 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017983 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17984 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017985 /* Call Back is not required as we are putting the DXE in FULL
17986 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017987 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17988 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17989 {
17990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17991 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17992 WDI_ASSERT(0);
17993 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017994 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017995 }
17996
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017998 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017999
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018001}/*WDI_ProcessEnterBmpsRsp*/
18002
18003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018006
18007 @param pWDICtx: pointer to the WLAN DAL context
18008 pEventData: pointer to the event information structure
18009
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 @see
18011 @return Result of the function call
18012*/
18013WDI_Status
18014WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018015(
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 WDI_ControlBlockType* pWDICtx,
18017 WDI_EventInfoType* pEventData
18018)
18019{
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 eHalStatus halStatus;
18021 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018022 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018023 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18024 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18026
18027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018029 -------------------------------------------------------------------------*/
18030 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18031 ( NULL == pEventData->pEventData))
18032 {
18033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 }
18038
18039 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18040
18041 /*-------------------------------------------------------------------------
18042 Extract response and send it to UMAC
18043 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018044
18045 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18046 {
18047 wpalMemoryCopy( &halExitBmpsRsp,
18048 pEventData->pEventData,
18049 sizeof(halExitBmpsRsp));
18050
18051 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18052 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18053 }
18054 else
18055 {
18056 halStatus = *((eHalStatus*)pEventData->pEventData);
18057 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018059
18060 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018061 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18062 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18063 {
18064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18065 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18066 WDI_ASSERT(0);
18067 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18069
18070 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018071 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018072
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018074}/*WDI_ProcessExitBmpsRsp*/
18075
18076/**
18077 @brief Process Enter UAPSD Rsp function (called when a response
18078 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018079
18080 @param pWDICtx: pointer to the WLAN DAL context
18081 pEventData: pointer to the event information structure
18082
Jeff Johnson295189b2012-06-20 16:38:30 -070018083 @see
18084 @return Result of the function call
18085*/
18086WDI_Status
18087WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018088(
Jeff Johnson295189b2012-06-20 16:38:30 -070018089 WDI_ControlBlockType* pWDICtx,
18090 WDI_EventInfoType* pEventData
18091)
18092{
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018094 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018096 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18097
Jeff Johnson295189b2012-06-20 16:38:30 -070018098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18099
18100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 -------------------------------------------------------------------------*/
18103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18104 ( NULL == pEventData->pEventData))
18105 {
18106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 }
18111
18112 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18113
18114 /*-------------------------------------------------------------------------
18115 Extract response and send it to UMAC
18116 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018117 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18118 {
18119 wpalMemoryCopy( &halEnterUapsdRsp,
18120 pEventData->pEventData,
18121 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018122
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018123 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18124 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18125 }
18126 else
18127 {
18128 halStatus = *((eHalStatus*)pEventData->pEventData);
18129 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18130 }
18131
18132 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 {
18134 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18135 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18136 // the traffic to decide when to suspend the trigger frames when there is no traffic
18137 // activity on the trigger enabled ACs
18138 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18139
18140#ifdef WLAN_PERF
18141 // Increment the BD signature to refresh the fast path BD utilization
18142 pWDICtx->uBdSigSerialNum++;
18143#endif
18144 }
18145
18146 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018147 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018148
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018150}/*WDI_ProcessEnterUapsdRsp*/
18151
18152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018153 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018154 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018155
18156 @param pWDICtx: pointer to the WLAN DAL context
18157 pEventData: pointer to the event information structure
18158
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 @see
18160 @return Result of the function call
18161*/
18162WDI_Status
18163WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018164(
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 WDI_ControlBlockType* pWDICtx,
18166 WDI_EventInfoType* pEventData
18167)
18168{
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 eHalStatus halStatus;
18170 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018171 tHalExitUapsdRspParams halExitUapsdRsp;
18172 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18174
18175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 -------------------------------------------------------------------------*/
18178 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18179 ( NULL == pEventData->pEventData))
18180 {
18181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 }
18186
18187 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18188
18189 /*-------------------------------------------------------------------------
18190 Extract response and send it to UMAC
18191 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018192 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18193 {
18194 wpalMemoryCopy( &halExitUapsdRsp,
18195 pEventData->pEventData,
18196 sizeof(halExitUapsdRsp));
18197
18198 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18199 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18200 }
18201 else
18202 {
18203 halStatus = *((eHalStatus*)pEventData->pEventData);
18204 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18205 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18207 // directly instead of the FW WQ.
18208 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18209
18210#ifdef WLAN_PERF
18211 // Increment the BD signature to refresh the fast path BD utilization
18212 pWDICtx->uBdSigSerialNum++;
18213#endif
18214
18215 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018216 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219}/*WDI_ProcessExitUapsdRsp*/
18220
18221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018224
18225 @param pWDICtx: pointer to the WLAN DAL context
18226 pEventData: pointer to the event information structure
18227
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 @see
18229 @return Result of the function call
18230*/
18231WDI_Status
18232WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018233(
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 WDI_ControlBlockType* pWDICtx,
18235 WDI_EventInfoType* pEventData
18236)
18237{
18238 WDI_Status wdiStatus;
18239 eHalStatus halStatus;
18240 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18242
18243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 -------------------------------------------------------------------------*/
18246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18247 ( NULL == pEventData->pEventData))
18248 {
18249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018253 }
18254
18255 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18256
18257 /*-------------------------------------------------------------------------
18258 Extract response and send it to UMAC
18259 -------------------------------------------------------------------------*/
18260 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018262
18263 /*Notify UMAC*/
18264 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18265
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018267}/*WDI_ProcessSetUapsdAcParamsRsp*/
18268
18269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018272
18273 @param pWDICtx: pointer to the WLAN DAL context
18274 pEventData: pointer to the event information structure
18275
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 @see
18277 @return Result of the function call
18278*/
18279WDI_Status
18280WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018281(
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 WDI_ControlBlockType* pWDICtx,
18283 WDI_EventInfoType* pEventData
18284)
18285{
18286 WDI_Status wdiStatus;
18287 eHalStatus halStatus;
18288 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18290
18291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 -------------------------------------------------------------------------*/
18294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18295 ( NULL == pEventData->pEventData))
18296 {
18297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 }
18302
18303 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18304
18305 /*-------------------------------------------------------------------------
18306 Extract response and send it to UMAC
18307 -------------------------------------------------------------------------*/
18308 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018310
18311 /*Notify UMAC*/
18312 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18313
Jeff Johnsone7245742012-09-05 17:12:55 -070018314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018315}/*WDI_ProcessUpdateUapsdParamsRsp*/
18316
18317/**
18318 @brief Process Configure RXP filter Rsp function (called when a
18319 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018320
18321 @param pWDICtx: pointer to the WLAN DAL context
18322 pEventData: pointer to the event information structure
18323
Jeff Johnson295189b2012-06-20 16:38:30 -070018324 @see
18325 @return Result of the function call
18326*/
18327WDI_Status
18328WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018329(
Jeff Johnson295189b2012-06-20 16:38:30 -070018330 WDI_ControlBlockType* pWDICtx,
18331 WDI_EventInfoType* pEventData
18332)
18333{
18334 WDI_Status wdiStatus;
18335 eHalStatus halStatus;
18336 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18338
18339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 -------------------------------------------------------------------------*/
18342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18343 ( NULL == pEventData->pEventData))
18344 {
18345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 }
18350
18351 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18352
18353 /*-------------------------------------------------------------------------
18354 Extract response and send it to UMAC
18355 -------------------------------------------------------------------------*/
18356 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018357 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018358
18359 /*Notify UMAC*/
18360 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18361
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018363}/*WDI_ProcessConfigureRxpFilterRsp*/
18364
18365/**
18366 @brief Process Set beacon filter Rsp function (called when a
18367 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
18369 @param pWDICtx: pointer to the WLAN DAL context
18370 pEventData: pointer to the event information structure
18371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 @see
18373 @return Result of the function call
18374*/
18375WDI_Status
18376WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018377(
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ControlBlockType* pWDICtx,
18379 WDI_EventInfoType* pEventData
18380)
18381{
18382 WDI_Status wdiStatus;
18383 eHalStatus halStatus;
18384 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18386
18387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 -------------------------------------------------------------------------*/
18390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18391 ( NULL == pEventData->pEventData))
18392 {
18393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 }
18398
18399 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18400
18401 /*-------------------------------------------------------------------------
18402 Extract response and send it to UMAC
18403 -------------------------------------------------------------------------*/
18404 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018405 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018406
18407 /*Notify UMAC*/
18408 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18409
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018411}/*WDI_ProcessSetBeaconFilterRsp*/
18412
18413/**
18414 @brief Process remove beacon filter Rsp function (called when a
18415 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018416
18417 @param pWDICtx: pointer to the WLAN DAL context
18418 pEventData: pointer to the event information structure
18419
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 @see
18421 @return Result of the function call
18422*/
18423WDI_Status
18424WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018425(
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 WDI_ControlBlockType* pWDICtx,
18427 WDI_EventInfoType* pEventData
18428)
18429{
18430 WDI_Status wdiStatus;
18431 eHalStatus halStatus;
18432 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18434
18435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 -------------------------------------------------------------------------*/
18438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18439 ( NULL == pEventData->pEventData))
18440 {
18441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 }
18446
18447 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18448
18449 /*-------------------------------------------------------------------------
18450 Extract response and send it to UMAC
18451 -------------------------------------------------------------------------*/
18452 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018453 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018454
18455 /*Notify UMAC*/
18456 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18457
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018459}/*WDI_ProcessRemBeaconFilterRsp*/
18460
18461/**
18462 @brief Process set RSSI thresholds Rsp function (called when a
18463 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018464
18465 @param pWDICtx: pointer to the WLAN DAL context
18466 pEventData: pointer to the event information structure
18467
Jeff Johnson295189b2012-06-20 16:38:30 -070018468 @see
18469 @return Result of the function call
18470*/
18471WDI_Status
18472WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018473(
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 WDI_ControlBlockType* pWDICtx,
18475 WDI_EventInfoType* pEventData
18476)
18477{
18478 WDI_Status wdiStatus;
18479 eHalStatus halStatus;
18480 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18482
18483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018485 -------------------------------------------------------------------------*/
18486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18487 ( NULL == pEventData->pEventData))
18488 {
18489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 }
18494
18495 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18496
18497 /*-------------------------------------------------------------------------
18498 Extract response and send it to UMAC
18499 -------------------------------------------------------------------------*/
18500 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018501 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018502
18503 /*Notify UMAC*/
18504 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18505
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018507}/*WDI_ProcessSetRSSIThresoldsRsp*/
18508
18509/**
18510 @brief Process host offload Rsp function (called when a
18511 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018512
18513 @param pWDICtx: pointer to the WLAN DAL context
18514 pEventData: pointer to the event information structure
18515
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 @see
18517 @return Result of the function call
18518*/
18519WDI_Status
18520WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018521(
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 WDI_ControlBlockType* pWDICtx,
18523 WDI_EventInfoType* pEventData
18524)
18525{
18526 WDI_Status wdiStatus;
18527 eHalStatus halStatus;
18528 WDI_HostOffloadCb wdiHostOffloadCb;
18529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18530
18531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018533 -------------------------------------------------------------------------*/
18534 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18535 ( NULL == pEventData->pEventData))
18536 {
18537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 }
18542
18543 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18544
18545 /*-------------------------------------------------------------------------
18546 Extract response and send it to UMAC
18547 -------------------------------------------------------------------------*/
18548 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018549 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018550
18551 /*Notify UMAC*/
18552 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18553
Jeff Johnsone7245742012-09-05 17:12:55 -070018554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018555}/*WDI_ProcessHostOffloadRsp*/
18556
18557/**
18558 @brief Process keep alive Rsp function (called when a
18559 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018560
18561 @param pWDICtx: pointer to the WLAN DAL context
18562 pEventData: pointer to the event information structure
18563
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 @see
18565 @return Result of the function call
18566*/
18567WDI_Status
18568WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018569(
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 WDI_ControlBlockType* pWDICtx,
18571 WDI_EventInfoType* pEventData
18572)
18573{
18574 WDI_Status wdiStatus;
18575 eHalStatus halStatus;
18576 WDI_KeepAliveCb wdiKeepAliveCb;
18577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18579 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18580
18581
18582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 -------------------------------------------------------------------------*/
18585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18586 ( NULL == pEventData->pEventData))
18587 {
18588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 }
18593
Jeff Johnsone7245742012-09-05 17:12:55 -070018594 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18595
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 /*-------------------------------------------------------------------------
18597 Extract response and send it to UMAC
18598 -------------------------------------------------------------------------*/
18599 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018601
18602 /*Notify UMAC*/
18603 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18604
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018606}/*WDI_ProcessKeepAliveRsp*/
18607
18608/**
18609 @brief Process wowl add ptrn Rsp function (called when a
18610 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018611
18612 @param pWDICtx: pointer to the WLAN DAL context
18613 pEventData: pointer to the event information structure
18614
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 @see
18616 @return Result of the function call
18617*/
18618WDI_Status
18619WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018620(
Jeff Johnson295189b2012-06-20 16:38:30 -070018621 WDI_ControlBlockType* pWDICtx,
18622 WDI_EventInfoType* pEventData
18623)
18624{
Jeff Johnson295189b2012-06-20 16:38:30 -070018625 eHalStatus halStatus;
18626 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018627 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18628 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18629
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18631
18632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 -------------------------------------------------------------------------*/
18635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18636 ( NULL == pEventData->pEventData))
18637 {
18638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 }
18643
18644 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18645
18646 /*-------------------------------------------------------------------------
18647 Extract response and send it to UMAC
18648 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018649 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18650 {
18651 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18652 pEventData->pEventData,
18653 sizeof(halAddWowlBcastPtrRsp));
18654
18655 wdiWowlAddBcPtrRsp.wdiStatus =
18656 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18657 }
18658 else
18659 {
18660 halStatus = *((eHalStatus*)pEventData->pEventData);
18661 wdiWowlAddBcPtrRsp.wdiStatus =
18662 WDI_HAL_2_WDI_STATUS(halStatus);
18663 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018664
18665 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018666 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018667
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018669}/*WDI_ProcessWowlAddBcPtrnRsp*/
18670
18671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018672 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018674
18675 @param pWDICtx: pointer to the WLAN DAL context
18676 pEventData: pointer to the event information structure
18677
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 @see
18679 @return Result of the function call
18680*/
18681WDI_Status
18682WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018683(
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 WDI_ControlBlockType* pWDICtx,
18685 WDI_EventInfoType* pEventData
18686)
18687{
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 eHalStatus halStatus;
18689 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018690 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18691 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18693
18694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 -------------------------------------------------------------------------*/
18697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18698 ( NULL == pEventData->pEventData))
18699 {
18700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 }
18705
18706 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18707
18708 /*-------------------------------------------------------------------------
18709 Extract response and send it to UMAC
18710 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018711 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18712 {
18713 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18714 pEventData->pEventData,
18715 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018716
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018717 wdiWowlDelBcstPtrRsp.wdiStatus =
18718 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18719 }
18720 else
18721 {
18722 halStatus = *((eHalStatus*)pEventData->pEventData);
18723 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18724 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018726 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018727
Jeff Johnsone7245742012-09-05 17:12:55 -070018728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018729}/*WDI_ProcessWowlDelBcPtrnRsp*/
18730
18731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018734
18735 @param pWDICtx: pointer to the WLAN DAL context
18736 pEventData: pointer to the event information structure
18737
Jeff Johnson295189b2012-06-20 16:38:30 -070018738 @see
18739 @return Result of the function call
18740*/
18741WDI_Status
18742WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018743(
Jeff Johnson295189b2012-06-20 16:38:30 -070018744 WDI_ControlBlockType* pWDICtx,
18745 WDI_EventInfoType* pEventData
18746)
18747{
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 eHalStatus halStatus;
18749 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018750 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18751 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18753
18754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 -------------------------------------------------------------------------*/
18757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18758 ( NULL == pEventData->pEventData))
18759 {
18760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 }
18765
18766 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18767
18768 /*-------------------------------------------------------------------------
18769 Extract response and send it to UMAC
18770 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018771 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18772 {
18773 wpalMemoryCopy( &halEnterWowlRspParams,
18774 (wpt_uint8*)pEventData->pEventData,
18775 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018776
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018777 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18778 wdiwowlEnterRsp.status =
18779 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18780 }
18781 else
18782 {
18783 halStatus = *((eHalStatus*)pEventData->pEventData);
18784 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18785 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018787 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018788
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018790}/*WDI_ProcessWowlEnterRsp*/
18791
18792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018793 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018795
18796 @param pWDICtx: pointer to the WLAN DAL context
18797 pEventData: pointer to the event information structure
18798
Jeff Johnson295189b2012-06-20 16:38:30 -070018799 @see
18800 @return Result of the function call
18801*/
18802WDI_Status
18803WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018804(
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 WDI_ControlBlockType* pWDICtx,
18806 WDI_EventInfoType* pEventData
18807)
18808{
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 eHalStatus halStatus;
18810 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018811 tHalExitWowlRspParams halExitWowlRspParams;
18812 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18813
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18815
18816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 -------------------------------------------------------------------------*/
18819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18820 ( NULL == pEventData->pEventData))
18821 {
18822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 }
18827
18828 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18829
18830 /*-------------------------------------------------------------------------
18831 Extract response and send it to UMAC
18832 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018833 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18834 {
18835 wpalMemoryCopy( &halExitWowlRspParams,
18836 pEventData->pEventData,
18837 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018838
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018839 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18840 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18841
18842 }
18843 else
18844 {
18845 halStatus = *((eHalStatus*)pEventData->pEventData);
18846 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18847 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018849 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018850
Jeff Johnsone7245742012-09-05 17:12:55 -070018851 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018852}/*WDI_ProcessWowlExitRsp*/
18853
18854/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 (called when a response is being received over the bus
18857 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018858
18859 @param pWDICtx: pointer to the WLAN DAL context
18860 pEventData: pointer to the event information structure
18861
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 @see
18863 @return Result of the function call
18864*/
18865WDI_Status
18866WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018867(
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 WDI_ControlBlockType* pWDICtx,
18869 WDI_EventInfoType* pEventData
18870)
18871{
18872 WDI_Status wdiStatus;
18873 eHalStatus halStatus;
18874 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18876
18877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 -------------------------------------------------------------------------*/
18880 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18881 ( NULL == pEventData->pEventData))
18882 {
18883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 }
18888
18889 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18890
18891 /*-------------------------------------------------------------------------
18892 Extract response and send it to UMAC
18893 -------------------------------------------------------------------------*/
18894 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018896
18897 /*Notify UMAC*/
18898 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18899
Jeff Johnsone7245742012-09-05 17:12:55 -070018900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018901}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18902
18903
18904/**
18905 @brief Process Nv download(called when a response
18906 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018907
18908 @param pWDICtx: pointer to the WLAN DAL context
18909 pEventData: pointer to the event information structure
18910
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 @see
18912 @return Result of the function call
18913*/
18914WDI_Status
18915WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018916(
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 WDI_ControlBlockType* pWDICtx,
18918 WDI_EventInfoType* pEventData
18919)
18920{
18921
18922 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18923 tHalNvImgDownloadRspParams halNvDownloadRsp;
18924 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18925
18926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 -------------------------------------------------------------------------*/
18929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18930 ( NULL == pEventData->pEventData))
18931 {
18932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 }
18937
18938 /*-------------------------------------------------------------------------
18939 Extract response and send it to UMAC
18940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 wpalMemoryCopy( &halNvDownloadRsp,
18942 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018943 sizeof(halNvDownloadRsp));
18944
18945 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18946
18947 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18949 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 {
18951 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018952 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 }
18954 else
18955 {
18956 /*Reset the Nv related global information in WDI context information */
18957 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18958 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18959 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18960 /*call WDA callback function for last fragment */
18961 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18962 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18963 }
18964
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018966}
18967#ifdef WLAN_FEATURE_VOWIFI_11R
18968/**
18969 @brief Process Add TSpec Rsp function (called when a response
18970 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018971
18972 @param pWDICtx: pointer to the WLAN DAL context
18973 pEventData: pointer to the event information structure
18974
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 @see
18976 @return Result of the function call
18977*/
18978WDI_Status
18979WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018980(
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 WDI_ControlBlockType* pWDICtx,
18982 WDI_EventInfoType* pEventData
18983)
18984{
18985 WDI_Status wdiStatus;
18986 tAggrAddTsRspParams aggrAddTsRsp;
18987 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18989
18990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 -------------------------------------------------------------------------*/
18993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18994 ( NULL == pEventData->pEventData))
18995 {
18996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019000 }
19001
19002 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19003
19004 /*-------------------------------------------------------------------------
19005 Extract response and send it to UMAC
19006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 wpalMemoryCopy( &aggrAddTsRsp,
19008 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 sizeof(aggrAddTsRsp));
19010
19011 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019012 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019013
19014 /*Notify UMAC*/
19015 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19016
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019018}/*WDI_ProcessAddTSpecRsp*/
19019#endif /* WLAN_FEATURE_VOWIFI_11R */
19020
19021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019022 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019024
19025 @param pWDICtx: pointer to the WLAN DAL context
19026 pEventData: pointer to the event information structure
19027
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 @see
19029 @return Result of the function call
19030*/
19031WDI_Status
19032WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019033(
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 WDI_ControlBlockType* pWDICtx,
19035 WDI_EventInfoType* pEventData
19036)
19037{
19038 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19039 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19040 tHalHostResumeRspParams hostResumeRspMsg;
19041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19042
19043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 -------------------------------------------------------------------------*/
19046 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19047 ( NULL == pEventData->pEventData))
19048 {
19049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 }
19054
19055 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19056
19057 /*-------------------------------------------------------------------------
19058 Extract response and send it to UMAC
19059 -------------------------------------------------------------------------*/
19060
Jeff Johnsone7245742012-09-05 17:12:55 -070019061 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 (wpt_uint8*)pEventData->pEventData,
19063 sizeof(hostResumeRspMsg));
19064
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 wdiResumeRspParams.wdiStatus =
19066 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019067
19068 /*Notify UMAC*/
19069 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19070
19071 return WDI_STATUS_SUCCESS;
19072}
19073
19074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019077
19078 @param pWDICtx: pointer to the WLAN DAL context
19079 pEventData: pointer to the event information structure
19080
Jeff Johnson295189b2012-06-20 16:38:30 -070019081 @see
19082 @return Result of the function call
19083*/
19084WDI_Status
19085WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019086(
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 WDI_ControlBlockType* pWDICtx,
19088 WDI_EventInfoType* pEventData
19089)
19090{
19091 WDI_Status wdiStatus;
19092 eHalStatus halStatus;
19093 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19095
19096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 -------------------------------------------------------------------------*/
19099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19100 ( NULL == pEventData->pEventData))
19101 {
19102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019107
19108 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019109
19110 /*-------------------------------------------------------------------------
19111 Extract response and send it to UMAC
19112 -------------------------------------------------------------------------*/
19113 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019114 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019115
19116 /*Notify UMAC*/
19117 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19118
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019120}/*WDI_ProcessSetTxPerTrackingRsp*/
19121
19122/*==========================================================================
19123 Indications from HAL
19124 ==========================================================================*/
19125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 indication of this kind is being received over the bus
19128 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019129
19130 @param pWDICtx: pointer to the WLAN DAL context
19131 pEventData: pointer to the event information structure
19132
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 @see
19134 @return Result of the function call
19135*/
19136WDI_Status
19137WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019138(
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 WDI_ControlBlockType* pWDICtx,
19140 WDI_EventInfoType* pEventData
19141)
19142{
19143 WDI_LowLevelIndType wdiInd;
19144 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19146
19147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 -------------------------------------------------------------------------*/
19150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19151 ( NULL == pEventData->pEventData))
19152 {
19153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 }
19158
19159 /*-------------------------------------------------------------------------
19160 Extract indication and send it to UMAC
19161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19163 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 sizeof(tHalRSSINotification));
19165
19166 /*Fill in the indication parameters*/
19167 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19168 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19169 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19170 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19171 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19172 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19173 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19174 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19175 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19176 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19177 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19178 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19179 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019180 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19181 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019182
ltimariu034f7d62013-01-24 18:54:33 -080019183 if ( pWDICtx->wdiLowLevelIndCB )
19184 {
19185 /*Notify UMAC of indication*/
19186 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19187 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019188
19189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019190}/*WDI_ProcessLowRSSIInd*/
19191
19192
19193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019194 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 an indication of this kind is being received over the
19196 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019197
19198 @param pWDICtx: pointer to the WLAN DAL context
19199 pEventData: pointer to the event information structure
19200
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 @see
19202 @return Result of the function call
19203*/
19204WDI_Status
19205WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019206(
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 WDI_ControlBlockType* pWDICtx,
19208 WDI_EventInfoType* pEventData
19209)
19210{
19211 WDI_Status wdiStatus;
19212 eHalStatus halStatus;
19213 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019214 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19216
19217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 -------------------------------------------------------------------------*/
19220 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19221 ( NULL == pEventData->pEventData))
19222 {
19223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019228 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019229 /*-------------------------------------------------------------------------
19230 Extract indication and send it to UMAC
19231 -------------------------------------------------------------------------*/
19232 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19233 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019235
19236 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019238 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19239 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019240 if ( pWDICtx->wdiLowLevelIndCB )
19241 {
19242 /*Notify UMAC*/
19243 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19244 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019245
19246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247}/*WDI_ProcessMissedBeaconInd*/
19248
19249
19250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019251 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 an indication of this kind is being received over the
19253 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019254
19255 @param pWDICtx: pointer to the WLAN DAL context
19256 pEventData: pointer to the event information structure
19257
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 @see
19259 @return Result of the function call
19260*/
19261WDI_Status
19262WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019263(
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_ControlBlockType* pWDICtx,
19265 WDI_EventInfoType* pEventData
19266)
19267{
19268 WDI_Status wdiStatus;
19269 eHalStatus halStatus;
19270 WDI_LowLevelIndType wdiInd;
19271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19272
19273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 -------------------------------------------------------------------------*/
19276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19277 ( NULL == pEventData->pEventData))
19278 {
19279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 }
19284
19285 /*-------------------------------------------------------------------------
19286 Extract indication and send it to UMAC
19287 -------------------------------------------------------------------------*/
19288 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19289 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019290 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019291
19292 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 /* ! TO DO - fill in from HAL struct:
19295 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19296
ltimariu034f7d62013-01-24 18:54:33 -080019297 if ( pWDICtx->wdiLowLevelIndCB )
19298 {
19299 /*Notify UMAC*/
19300 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19301 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019302
19303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019304}/*WDI_ProcessUnkAddrFrameInd*/
19305
19306
19307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019308 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 indication of this kind is being received over the bus
19310 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019311
19312 @param pWDICtx: pointer to the WLAN DAL context
19313 pEventData: pointer to the event information structure
19314
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 @see
19316 @return Result of the function call
19317*/
19318WDI_Status
19319WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019320(
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 WDI_ControlBlockType* pWDICtx,
19322 WDI_EventInfoType* pEventData
19323)
19324{
19325 WDI_LowLevelIndType wdiInd;
19326 tpSirMicFailureInd pHalMicFailureInd;
19327
19328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19329
19330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 -------------------------------------------------------------------------*/
19333 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19334 ( NULL == pEventData->pEventData))
19335 {
19336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019337 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019341
Jeff Johnson295189b2012-06-20 16:38:30 -070019342 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19343 /*-------------------------------------------------------------------------
19344 Extract indication and send it to UMAC
19345 -------------------------------------------------------------------------*/
19346
19347 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019348 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19350 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19351 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19352 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19353 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19354 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19355 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19356 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019357 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019361 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019362 pHalMicFailureInd->info.keyId;
19363 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19364 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19365 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19366 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019367
19368 if ( pWDICtx->wdiLowLevelIndCB )
19369 {
19370 /*Notify UMAC*/
19371 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19372 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019373
19374 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019375}/*WDI_ProcessMicFailureInd*/
19376
19377
19378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019379 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 an indication of this kind is being received over the
19381 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019382
19383 @param pWDICtx: pointer to the WLAN DAL context
19384 pEventData: pointer to the event information structure
19385
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 @see
19387 @return Result of the function call
19388*/
19389WDI_Status
19390WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019391(
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 WDI_ControlBlockType* pWDICtx,
19393 WDI_EventInfoType* pEventData
19394)
19395{
19396 WDI_Status wdiStatus;
19397 eHalStatus halStatus;
19398 WDI_LowLevelIndType wdiInd;
19399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19400
19401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019403 -------------------------------------------------------------------------*/
19404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19405 ( NULL == pEventData->pEventData))
19406 {
19407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 }
19412
19413 /*-------------------------------------------------------------------------
19414 Extract indication and send it to UMAC
19415 -------------------------------------------------------------------------*/
19416
19417 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19418 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019420
19421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19422 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019423
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19426 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019427
ltimariu034f7d62013-01-24 18:54:33 -080019428 if ( pWDICtx->wdiLowLevelIndCB )
19429 {
19430 /*Notify UMAC*/
19431 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19432 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019433
19434 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019435}/*WDI_ProcessFatalErrorInd*/
19436
19437/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019438 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 an indication of this kind is being received over the
19440 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019441
19442 @param pWDICtx: pointer to the WLAN DAL context
19443 pEventData: pointer to the event information structure
19444
Jeff Johnson295189b2012-06-20 16:38:30 -070019445 @see
19446 @return Result of the function call
19447*/
19448WDI_Status
19449WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019450(
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 WDI_ControlBlockType* pWDICtx,
19452 WDI_EventInfoType* pEventData
19453)
19454{
19455 tDeleteStaContextParams halDelSTACtx;
19456 WDI_LowLevelIndType wdiInd;
19457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19458
19459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 -------------------------------------------------------------------------*/
19462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19463 ( NULL == pEventData->pEventData))
19464 {
19465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 }
19470
19471 /*-------------------------------------------------------------------------
19472 Extract indication and send it to UMAC
19473 -------------------------------------------------------------------------*/
19474
19475 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 wpalMemoryCopy( &halDelSTACtx,
19477 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 sizeof(halDelSTACtx));
19479
19480 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019481 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019482
19483 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19484 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19485 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19486 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19487
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019492 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19493 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019494
ltimariu034f7d62013-01-24 18:54:33 -080019495 if ( pWDICtx->wdiLowLevelIndCB )
19496 {
19497 /*Notify UMAC*/
19498 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19499 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019500
19501 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019502}/*WDI_ProcessDelSTAInd*/
19503
19504/**
19505*@brief Process Coex Indication function (called when
19506 an indication of this kind is being received over the
19507 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019508
19509 @param pWDICtx: pointer to the WLAN DAL context
19510 pEventData: pointer to the event information structure
19511
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 @see
19513 @return Result of the function call
19514*/
19515WDI_Status
19516WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019517(
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 WDI_ControlBlockType* pWDICtx,
19519 WDI_EventInfoType* pEventData
19520)
19521{
19522 WDI_LowLevelIndType wdiInd;
19523 tCoexIndMsg halCoexIndMsg;
19524 wpt_uint32 index;
19525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19526
19527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 -------------------------------------------------------------------------*/
19530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19531 ( NULL == pEventData->pEventData ))
19532 {
19533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 }
19538
19539 /*-------------------------------------------------------------------------
19540 Extract indication and send it to UMAC
19541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019542 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19543 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 sizeof(halCoexIndMsg.coexIndParams) );
19545
19546 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 wdiInd.wdiIndicationType = WDI_COEX_IND;
19548 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19550 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 }
19553
19554 // DEBUG
19555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19556 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019557 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19558 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19559 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19560 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19561 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019562
ltimariu034f7d62013-01-24 18:54:33 -080019563 if ( pWDICtx->wdiLowLevelIndCB )
19564 {
19565 /*Notify UMAC*/
19566 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19567 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019568
19569 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019570}/*WDI_ProcessCoexInd*/
19571
19572/**
19573*@brief Process Tx Complete Indication function (called when
19574 an indication of this kind is being received over the
19575 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019576
19577 @param pWDICtx: pointer to the WLAN DAL context
19578 pEventData: pointer to the event information structure
19579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 @see
19581 @return Result of the function call
19582*/
19583WDI_Status
19584WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019585(
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 WDI_ControlBlockType* pWDICtx,
19587 WDI_EventInfoType* pEventData
19588)
19589{
19590 WDI_LowLevelIndType wdiInd;
19591 tTxComplIndMsg halTxComplIndMsg;
19592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19593
19594 /*-------------------------------------------------------------------------
19595 Sanity check
19596 -------------------------------------------------------------------------*/
19597 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19598 ( NULL == pEventData->pEventData ))
19599 {
19600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019602 WDI_ASSERT( 0 );
19603 return WDI_STATUS_E_FAILURE;
19604 }
19605
19606 /*-------------------------------------------------------------------------
19607 Extract indication and send it to UMAC
19608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019609 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19610 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 sizeof(halTxComplIndMsg.txComplParams) );
19612
19613 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019614 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19615 wdiInd.wdiIndicationData.tx_complete_status
19616 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019617
ltimariu034f7d62013-01-24 18:54:33 -080019618 if ( pWDICtx->wdiLowLevelIndCB )
19619 {
19620 /*Notify UMAC*/
19621 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19622 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019623
19624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019625}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019626#ifdef FEATURE_WLAN_TDLS
19627/**
19628*@brief Process TDLS Indication function (called when
19629 an indication of this kind is being received over the
19630 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019631
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019632 @param pWDICtx: pointer to the WLAN DAL context
19633 pEventData: pointer to the event information structure
19634
19635 @see
19636 @return Result of the function call
19637*/
19638WDI_Status
19639WDI_ProcessTdlsInd
19640(
19641 WDI_ControlBlockType* pWDICtx,
19642 WDI_EventInfoType* pEventData
19643)
19644{
19645 WDI_LowLevelIndType wdiInd;
19646 tTdlsIndMsg halTdlsIndMsg;
19647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19648
19649 /*-------------------------------------------------------------------------
19650 Sanity check
19651 -------------------------------------------------------------------------*/
19652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19653 ( NULL == pEventData->pEventData ))
19654 {
19655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19656 "%s: Invalid parameters", __func__);
19657 WDI_ASSERT( 0 );
19658 return WDI_STATUS_E_FAILURE;
19659 }
19660
19661 /*-------------------------------------------------------------------------
19662 Extract indication and send it to UMAC
19663 -------------------------------------------------------------------------*/
19664 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19665 pEventData->pEventData,
19666 sizeof(halTdlsIndMsg.tdlsIndParams) );
19667
19668 /*Fill in the indication parameters*/
19669 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19670
19671 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19672 = halTdlsIndMsg.tdlsIndParams.status;
19673
19674 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19675 = halTdlsIndMsg.tdlsIndParams.staIdx;
19676
19677 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19678 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19679
19680 /*Notify UMAC*/
19681 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19682
19683 return WDI_STATUS_SUCCESS;
19684}/*WDI_ProcessTdlsInd*/
19685#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019686/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019687*@brief Process Noa Start Indication function (called when
19688 an indication of this kind is being received over the
19689 bus from HAL)
19690
19691 @param pWDICtx: pointer to the WLAN DAL context
19692 pEventData: pointer to the event information structure
19693
19694 @see
19695 @return Result of the function call
19696*/
19697WDI_Status
19698WDI_ProcessP2pNoaStartInd
19699(
19700 WDI_ControlBlockType* pWDICtx,
19701 WDI_EventInfoType* pEventData
19702)
19703{
19704 WDI_LowLevelIndType wdiInd;
19705 tNoaStartIndMsg halNoaStartIndMsg;
19706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19707
19708 /*-------------------------------------------------------------------------
19709 Sanity check
19710 -------------------------------------------------------------------------*/
19711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19712 ( NULL == pEventData->pEventData ))
19713 {
19714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19715 "%s: Invalid parameters", __func__);
19716 WDI_ASSERT( 0 );
19717 return WDI_STATUS_E_FAILURE;
19718 }
19719
19720 /*-------------------------------------------------------------------------
19721 Extract indication and send it to UMAC
19722 -------------------------------------------------------------------------*/
19723 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19724 pEventData->pEventData,
19725 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19726
19727 /*Fill in the indication parameters*/
19728 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19729
19730 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19731 = halNoaStartIndMsg.noaStartIndParams.status;
19732
19733 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19734 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19735
19736 /*Notify UMAC*/
19737 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19738
19739 return WDI_STATUS_SUCCESS;
19740}/*WDI_ProcessNoaAttrInd*/
19741
19742/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019743*@brief Process Noa Attr Indication function (called when
19744 an indication of this kind is being received over the
19745 bus from HAL)
19746
19747 @param pWDICtx: pointer to the WLAN DAL context
19748 pEventData: pointer to the event information structure
19749
19750 @see
19751 @return Result of the function call
19752*/
19753WDI_Status
19754WDI_ProcessP2pNoaAttrInd
19755(
19756 WDI_ControlBlockType* pWDICtx,
19757 WDI_EventInfoType* pEventData
19758)
19759{
19760 WDI_LowLevelIndType wdiInd;
19761 tNoaAttrIndMsg halNoaAttrIndMsg;
19762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19763
19764 /*-------------------------------------------------------------------------
19765 Sanity check
19766 -------------------------------------------------------------------------*/
19767 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19768 ( NULL == pEventData->pEventData ))
19769 {
19770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 WDI_ASSERT( 0 );
19773 return WDI_STATUS_E_FAILURE;
19774 }
19775
19776 /*-------------------------------------------------------------------------
19777 Extract indication and send it to UMAC
19778 -------------------------------------------------------------------------*/
19779 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19780 pEventData->pEventData,
19781 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19782
19783 /*Fill in the indication parameters*/
19784 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019785
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19787 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019788
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19790 = halNoaAttrIndMsg.noaAttrIndParams.index;
19791 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19792 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19793 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19794 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019795
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19797 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19798 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19799 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19800 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19801 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19802 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19803 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019804
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19806 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19807 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19808 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19809 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19810 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19811 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19812 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19813
ltimariu034f7d62013-01-24 18:54:33 -080019814 if ( pWDICtx->wdiLowLevelIndCB )
19815 {
19816 /*Notify UMAC*/
19817 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19818 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019819
19820 return WDI_STATUS_SUCCESS;
19821}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019822
19823/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019824 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019825 an indication of this kind is being received over the
19826 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019827
19828 @param pWDICtx: pointer to the WLAN DAL context
19829 pEventData: pointer to the event information structure
19830
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 @see
19832 @return Result of the function call
19833*/
19834WDI_Status
19835WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019836(
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 WDI_ControlBlockType* pWDICtx,
19838 WDI_EventInfoType* pEventData
19839)
19840{
19841 WDI_LowLevelIndType wdiInd;
19842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019843
Jeff Johnson295189b2012-06-20 16:38:30 -070019844 /*-------------------------------------------------------------------------
19845 Extract indication and send it to UMAC
19846 -------------------------------------------------------------------------*/
19847 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019848 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19849
ltimariu034f7d62013-01-24 18:54:33 -080019850 if ( pWDICtx->wdiLowLevelIndCB )
19851 {
19852 /*Notify UMAC*/
19853 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19854 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019855
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019857}/*WDI_ProcessTxPerHitInd*/
19858
Jeff Johnson295189b2012-06-20 16:38:30 -070019859/**
19860 @brief WDI_ProcessFTMCommandReq
19861 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019862
19863 @param pWDICtx: pointer to the WLAN DAL context
19864 pEventData: pointer to the event information structure
19865
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 @see
19867 @return Result of the function call
19868*/
19869WDI_Status
19870WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019871(
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 WDI_ControlBlockType* pWDICtx,
19873 WDI_EventInfoType* pEventData
19874)
19875{
19876 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19877 wpt_uint8 *ftmCommandBuffer = NULL;
19878 wpt_uint16 dataOffset;
19879 wpt_uint16 bufferSize;
19880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019881 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 -------------------------------------------------------------------------*/
19883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19884 ( NULL == pEventData->pEventData))
19885
19886 {
19887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019891 }
19892
19893 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19894
19895 /* Get MSG Buffer */
19896 WDI_GetMessageBuffer(pWDICtx,
19897 WDI_FTM_CMD_REQ,
19898 ftmCommandReq->bodyLength,
19899 &ftmCommandBuffer,
19900 &dataOffset,
19901 &bufferSize);
19902
19903 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19904 ftmCommandReq->FTMCommandBody,
19905 ftmCommandReq->bodyLength);
19906
19907 /* Send MSG */
19908 return WDI_SendMsg(pWDICtx,
19909 ftmCommandBuffer,
19910 bufferSize,
19911 pEventData->pCBfnc,
19912 pEventData->pUserData,
19913 WDI_FTM_CMD_RESP);
19914}
19915
19916/**
19917 @brief WDI_ProcessFTMCommandRsp
19918 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019919
19920 @param pWDICtx: pointer to the WLAN DAL context
19921 pEventData: pointer to the event information structure
19922
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 @see
19924 @return Result of the function call
19925*/
19926WDI_Status
19927WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019928(
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 WDI_ControlBlockType* pWDICtx,
19930 WDI_EventInfoType* pEventData
19931)
19932{
19933 WDI_FTMCommandRspCb ftmCMDRspCb;
19934 tProcessPttRspParams *ftmCMDRspData = NULL;
19935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19936
19937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 -------------------------------------------------------------------------*/
19940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19941 ( NULL == pEventData->pEventData))
19942 {
19943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 }
19948
19949 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19950
19951 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19952
Jeff Johnsone7245742012-09-05 17:12:55 -070019953 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19954 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19956
19957 /*Notify UMAC*/
19958 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19959
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019961}
Jeff Johnson295189b2012-06-20 16:38:30 -070019962/**
19963 @brief WDI_ProcessHalDumpCmdReq
19964 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019965
19966 @param pWDICtx: pointer to the WLAN DAL context
19967 pEventData: pointer to the event information structure
19968
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 @see
19970 @return Result of the function call
19971*/
19972WDI_Status
19973WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019974(
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 WDI_ControlBlockType* pWDICtx,
19976 WDI_EventInfoType* pEventData
19977)
19978{
19979 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19980 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19981 wpt_uint16 usDataOffset = 0;
19982 wpt_uint16 usSendSize = 0;
19983 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019984 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019985
19986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 -------------------------------------------------------------------------*/
19989 if (( NULL == pEventData ) ||
19990 ( NULL == pEventData->pEventData) ||
19991 ( NULL == pEventData->pCBfnc ))
19992 {
19993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 }
19998
19999 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20000 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20001
20002 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020003 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020005 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020009 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020013
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 /*-----------------------------------------------------------------------
20015 Get message buffer
20016 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20019 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020020 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20022 {
20023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20024 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20025 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 }
20029
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 wpalMemoryCopy( pSendBuffer+usDataOffset,
20031 &halDumpCmdReqMsg.dumpCmdReqParams,
20032 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020033
20034 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020036
20037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020040 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20041 wdiHALDumpCmdRspCb, pEventData->pUserData,
20042 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020043}
20044
20045/**
20046 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020047 Process hal Dump Command Response from HAL, simply route to HDD
20048
20049 @param pWDICtx: pointer to the WLAN DAL context
20050 pEventData: pointer to the event information structure
20051
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 @see
20053 @return Result of the function call
20054*/
20055WDI_Status
20056WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020057(
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 WDI_ControlBlockType* pWDICtx,
20059 WDI_EventInfoType* pEventData
20060)
20061{
20062 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020063 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20065
20066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 -------------------------------------------------------------------------*/
20069 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20070 ( NULL == pEventData->pEventData))
20071 {
20072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 }
20077
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020079
20080 /*Initialize the WDI Response structure */
20081 wdiHALDumpCmdRsp.usBufferLen = 0;
20082 wdiHALDumpCmdRsp.pBuffer = NULL;
20083
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020084 wpalMemoryCopy( &halDumpCmdRspParams,
20085 pEventData->pEventData,
20086 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020087
20088 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020089 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020090
20091 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020092 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 {
20094 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020095 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20096 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20097
20098 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20099 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020100 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020102
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 /*Notify UMAC*/
20104 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20105
20106 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20107 {
20108 /* Free the allocated buffer */
20109 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20110 }
20111 return WDI_STATUS_SUCCESS;
20112}
20113
20114/*==========================================================================
20115 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020116
Jeff Johnson295189b2012-06-20 16:38:30 -070020117 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020119==========================================================================*/
20120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020121 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 when it wishes to send up a notification like the ones
20123 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020124
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020126
20127 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020128 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 wctsNotifyCBData: the callback data of the user
20130
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020132
20133 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020134*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020135void
Jeff Johnson295189b2012-06-20 16:38:30 -070020136WDI_NotifyMsgCTSCB
20137(
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 WCTS_NotifyEventType wctsEvent,
20140 void* wctsNotifyCBData
20141)
20142{
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20145
20146 if (NULL == pWDICtx )
20147 {
20148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 }
20153
20154 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20155 {
20156 /* callback presumably occurred after close */
20157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020158 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020159 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 }
20161
20162 if ( WCTS_EVENT_OPEN == wctsEvent )
20163 {
20164 /*Flag must be set atomically as it is checked from incoming request
20165 functions*/
20166 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020168
20169 /*Nothing to do - so try to dequeue any pending request that may have
20170 occurred while we were trying to establish this*/
20171 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 {
20176 /*Flag must be set atomically as it is checked from incoming request
20177 functions*/
20178 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020180
20181 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 wpalMutexRelease(&pWDICtx->wptMutex);
20184
20185 /*Notify that the Control Channel is closed */
20186 wpalEventSet(&pWDICtx->wctsActionEvent);
20187 }
20188
20189}/*WDI_NotifyMsgCTSCB*/
20190
20191
20192/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020193 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 when it wishes to send up a packet received over the
20195 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020196
Jeff Johnson295189b2012-06-20 16:38:30 -070020197 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020198
20199 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020200 pMsg: the packet
20201 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 wctsRxMsgCBData: the callback data of the user
20203
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020205
20206 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020207*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020208void
20209WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020210(
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 void* pMsg,
20213 wpt_uint32 uLen,
20214 void* wctsRxMsgCBData
20215)
20216{
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 tHalMsgHeader *pHalMsgHeader;
20218 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20221
20222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020224 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 ( uLen < sizeof(tHalMsgHeader)))
20227 {
20228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 }
20233
20234 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20235 {
20236 /* callback presumably occurred after close */
20237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020238 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 context - so no serialization is necessary here
20244 ! - revisit this assumption */
20245
20246 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20247
20248 if ( uLen != pHalMsgHeader->msgLen )
20249 {
20250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20251 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20253 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 }
20255
20256 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20257
20258 /*The message itself starts after the header*/
20259 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20260 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20261 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20262 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20263
20264
20265 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20266 {
20267 /*Stop the timer as the response was received */
20268 /*!UT - check for potential race conditions between stop and response */
20269 wpalTimerStop(&pWDICtx->wptResponseTimer);
20270 }
20271 /* Check if we receive a response message which is not expected */
20272 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20273 {
20274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20275 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20276 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020277 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020278 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20279 pWDICtx->wdiExpectedResponse);
20280 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20281 return;
20282 }
20283
20284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20285 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20286
20287 /*Post response event to the state machine*/
20288 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20289
20290}/*WDI_RXMsgCTSCB*/
20291
20292
20293/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020295========================================================================*/
20296
20297/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020298 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020300
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 @param pWDICtx - pointer to the control block
20302
20303 @return Result of the function call
20304*/
20305WPT_INLINE WDI_Status
20306WDI_CleanCB
20307(
20308 WDI_ControlBlockType* pWDICtx
20309)
20310{
20311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20312
20313 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020314 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020315
Jeff Johnsone7245742012-09-05 17:12:55 -070020316 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20318 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20319
20320 WDI_ResetAssocSessions( pWDICtx );
20321
20322 return WDI_STATUS_SUCCESS;
20323}/*WDI_CleanCB*/
20324
20325
20326/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020328
Jeff Johnsone7245742012-09-05 17:12:55 -070020329
20330 @param pWDICtx: pointer to the WLAN DAL context
20331 pEventData: pointer to the event information structure
20332
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 @see
20334 @return Result of the function call
20335*/
20336WPT_INLINE WDI_Status
20337WDI_ProcessRequest
20338(
20339 WDI_ControlBlockType* pWDICtx,
20340 WDI_EventInfoType* pEventData
20341)
20342{
20343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20344
Jeff Johnsone7245742012-09-05 17:12:55 -070020345 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020346 already checked these pointers*/
20347
20348 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20349 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20352 "Calling request processing function for req %s (%d) %x",
20353 WDI_getReqMsgString(pEventData->wdiRequest),
20354 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20355 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20356 }
20357 else
20358 {
20359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 pEventData->wdiRequest);
20362 return WDI_STATUS_E_NOT_IMPLEMENT;
20363 }
20364}/*WDI_ProcessRequest*/
20365
20366
20367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 prefixes it with a send message header
20371
20372 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020373 wdiReqType: type of the request being sent
20374 uBufferLen: message buffer len
20375 pMsgBuffer: resulting allocated buffer
20376 pusDataOffset: offset in the buffer where the caller
20377 can start copying its message data
20378 puBufferSize: the resulting buffer size (offset+buff
20379 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020380
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 @see
20382 @return Result of the function call
20383*/
20384WDI_Status
20385WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020386(
20387 WDI_ControlBlockType* pWDICtx,
20388 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020390 wpt_uint8** pMsgBuffer,
20391 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 wpt_uint16* pusBufferSize
20393)
20394{
20395 tHalMsgHeader halMsgHeader;
20396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20397
Jeff Johnsone7245742012-09-05 17:12:55 -070020398 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 again*/
20400
20401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20406 if ( NULL == *pMsgBuffer )
20407 {
20408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20409 "Unable to allocate message buffer for req %s (%d)",
20410 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020411 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020414 }
20415
20416 /*-------------------------------------------------------------------------
20417 Fill in the message header
20418 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20420 /* Fill msgVersion */
20421#ifdef WLAN_FEATURE_11AC
20422 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020423 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020424 else
20425#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020426 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020427
Jeff Johnsone7245742012-09-05 17:12:55 -070020428 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20429 *pusDataOffset = sizeof(halMsgHeader);
20430 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20431
20432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020433}/*WDI_GetMessageBuffer*/
20434
20435
20436/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 the CB
20440
20441 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020443
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 usSendSize size of the buffer to be sent
20445 pRspCb: response callback - save in the WDI
20446 CB
20447 pUserData: user data associated with the
20448 callback
20449 wdiExpectedResponse: the code of the response that is
20450 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020451
Jeff Johnson295189b2012-06-20 16:38:30 -070020452 @see
20453 @return Result of the function call
20454*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020455WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020456WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020457(
20458 WDI_ControlBlockType* pWDICtx,
20459 wpt_uint8* pSendBuffer,
20460 wpt_uint32 usSendSize,
20461 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 void* pUserData,
20463 WDI_ResponseEnumType wdiExpectedResponse
20464)
20465{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020466 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020467 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20469
20470 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020471 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 ------------------------------------------------------------------------*/
20473 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020474 pWDICtx->pfncRspCB = pRspCb;
20475 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020476
20477 /*-----------------------------------------------------------------------
20478 Call the CTS to send this message over - free message afterwards
20479 - notify transport failure
20480 Note: CTS is reponsible for freeing the message buffer.
20481 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020482 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20483 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20484 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020487 "Failed to send message over the bus - catastrophic failure");
20488
Jeff Johnsond13512a2012-07-17 11:42:19 -070020489 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020491 else
20492 {
20493 /* even when message was placed in CTS deferred Q, we will treat it
20494 success but log this info
20495 */
20496 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20497 {
20498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20499 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20500 "response %s (%d)",
20501 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20502 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020503 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020504 }
20505 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020506
Jeff Johnsond13512a2012-07-17 11:42:19 -070020507 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 if ( NULL != pWDICtx->wdiReqStatusCB )
20509 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020510 /*Inform originator whether request went through or not*/
20511 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20512 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 pWDICtx->wdiReqStatusCB = NULL;
20514 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020515 callback(wdiStatus, callbackContext);
20516
20517 /*For WDI requests which have registered a request callback,
20518 inform the WDA caller of the same via setting the return value
20519 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20520 end up repeating the functonality in the req callback for the
20521 WDI_STATUS_E_FAILURE case*/
20522 if (wdiStatus == WDI_STATUS_E_FAILURE)
20523 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 }
20525
Jeff Johnsond13512a2012-07-17 11:42:19 -070020526 if ( wdiStatus == WDI_STATUS_SUCCESS )
20527 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 /*Start timer for the expected response */
20529 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020530
20531 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020532 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020533 }
20534 else
20535 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020536 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020537 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20538 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020539
Jeff Johnsond13512a2012-07-17 11:42:19 -070020540 return wdiStatus;
20541
Jeff Johnson295189b2012-06-20 16:38:30 -070020542}/*WDI_SendMsg*/
20543
20544
20545
20546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020548 the bus using the control transport and saves some info
20549 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020550
20551 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 pSendBuffer: buffer to be sent
20553 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020554
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 @see
20556 @return Result of the function call
20557*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020559WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020560(
20561 WDI_ControlBlockType* pWDICtx,
20562 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 wpt_uint32 usSendSize
20564)
20565{
20566 wpt_uint32 uStatus ;
20567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20568
20569 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 Note: CTS is reponsible for freeing the message buffer.
20572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 (void*)pSendBuffer, usSendSize );
20575
20576 /*Inform Upper MAC about the outcome of the request*/
20577 if ( NULL != pWDICtx->wdiReqStatusCB )
20578 {
20579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20580 "Send indication status : %d", uStatus);
20581
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020582 /* even if CTS placed indication into its deferred Q, we treat it
20583 * as success and let CTS drain its queue as per smd interrupt to CTS
20584 */
20585 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 -070020586 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 }
20588
20589 /*If sending of the message failed - it is considered catastrophic and
20590 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020591 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20592 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20593
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 {
20595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020596 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020597
20598 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20599 return WDI_STATUS_E_FAILURE;
20600 }
20601
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020603}/*WDI_SendIndication*/
20604
20605
20606/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 @brief WDI_DetectedDeviceError - called internally by DAL when
20608 it has detected a failure in the device
20609
20610 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 usErrorCode: error code detected by WDI or received
20612 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020613
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020616*/
20617void
20618WDI_DetectedDeviceError
20619(
20620 WDI_ControlBlockType* pWDICtx,
20621 wpt_uint16 usErrorCode
20622)
20623{
20624 WDI_LowLevelIndType wdiInd;
20625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20626
20627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20628 "Device Error detected code: %d - transitioning to stopped state",
20629 usErrorCode);
20630
20631 wpalMutexAcquire(&pWDICtx->wptMutex);
20632
20633 WDI_STATableStop(pWDICtx);
20634
20635 WDI_ResetAssocSessions(pWDICtx);
20636
20637 /*Set the expected state transition to stopped - because the device
20638 experienced a failure*/
20639 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20640
20641 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020643
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020645
20646 /*TO DO: - there should be an attempt to reset the device here*/
20647
20648 wpalMutexRelease(&pWDICtx->wptMutex);
20649
20650 /*------------------------------------------------------------------------
20651 Notify UMAC if a handler is registered
20652 ------------------------------------------------------------------------*/
20653 if (pWDICtx->wdiLowLevelIndCB)
20654 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20656 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020657
20658 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20659 }
20660}/*WDI_DetectedDeviceError*/
20661
20662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020663 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 we started on send message has expire - this should
20665 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020666 reply - trigger catastrophic failure
20667 @param
20668
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020670
20671 @see
20672 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020673*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020674void
Jeff Johnson295189b2012-06-20 16:38:30 -070020675WDI_ResponseTimerCB
20676(
20677 void *pUserData
20678)
20679{
20680 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20682
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020683 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 }
20690
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020691 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020692 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020693
20694 /* If response timer is running at this time that means this timer
20695 * event is not for the last request but rather last-to-last request and
20696 * this timer event has come after we recevied respone for last-to-last
20697 * message
20698 */
20699 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20700 {
20701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20702 "WDI_ResponseTimerCB: timer in running state on timer event, "
20703 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20704 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20705 return;
20706 }
20707
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020708 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 {
20710
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020713 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020715 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20716 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020717
20718 /* WDI timeout means Riva is not responding or SMD communication to Riva
20719 * is not happening. The only possible way to recover from this error
20720 * is to initiate SSR from APPS.
20721 * There is also an option to re-enable wifi, which will eventually
20722 * trigger SSR
20723 */
20724 if (gWDICb.bEnableSSR == false)
20725 {
20726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20727 "SSR is not enabled on WDI timeout");
20728 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20729 return;
20730 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020731#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020732 wpalWcnssResetIntr();
20733 /* if this timer fires, it means Riva did not receive the FIQ */
20734 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020735#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020736 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20737 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020738#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020739 }
20740 else
20741 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020743 "Timeout occurred but not waiting for any response %d "
20744 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20745 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20746 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 }
20748
20749 return;
20750
20751}/*WDI_ResponseTimerCB*/
20752
20753
20754/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020756
Jeff Johnsone7245742012-09-05 17:12:55 -070020757
20758 @param pWDICtx: pointer to the WLAN DAL context
20759 pEventData: pointer to the event information structure
20760
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 @see
20762 @return Result of the function call
20763*/
20764WPT_INLINE WDI_Status
20765WDI_ProcessResponse
20766(
20767 WDI_ControlBlockType* pWDICtx,
20768 WDI_EventInfoType* pEventData
20769)
20770{
20771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20772
Jeff Johnsone7245742012-09-05 17:12:55 -070020773 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 already checked these pointers
20775 ! - revisit this assumption */
20776 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20777 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 WDI_getRespMsgString(pEventData->wdiResponse),
20782 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20783 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20784 }
20785 else
20786 {
20787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 pEventData->wdiResponse);
20790 return WDI_STATUS_E_NOT_IMPLEMENT;
20791 }
20792}/*WDI_ProcessResponse*/
20793
20794
20795/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020797=========================================================================*/
20798
20799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 @brief Utility function used by the DAL Core to help queue a
20801 request that cannot be processed right away.
20802 @param
20803
Jeff Johnson295189b2012-06-20 16:38:30 -070020804 pWDICtx: - pointer to the WDI control block
20805 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 queued
20807
20808 @see
20809 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020810*/
20811WDI_Status
20812WDI_QueuePendingReq
20813(
20814 WDI_ControlBlockType* pWDICtx,
20815 WDI_EventInfoType* pEventData
20816)
20817{
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20822
20823 if ( NULL == pEventDataQueue )
20824 {
20825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020826 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 WDI_ASSERT(0);
20828 return WDI_STATUS_MEM_FAILURE;
20829 }
20830
20831 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20832 pEventDataQueue->pUserData = pEventData->pUserData;
20833 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20834 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020835 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020836
20837 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20838 {
20839 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020840
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 if ( NULL == pEventInfo )
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 event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 WDI_ASSERT(0);
20846 wpalMemoryFree(pEventDataQueue);
20847 return WDI_STATUS_MEM_FAILURE;
20848 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020849
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20851
20852 }
20853 pEventDataQueue->pEventData = pEventInfo;
20854
20855 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020856 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020857
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020859
20860 return WDI_STATUS_SUCCESS;
20861}/*WDI_QueuePendingReq*/
20862
20863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020866 @param
20867
20868 pMsg - pointer to the message
20869
20870 @see
20871 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020872*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020873void
Jeff Johnson295189b2012-06-20 16:38:30 -070020874WDI_PALCtrlMsgCB
20875(
20876 wpt_msg *pMsg
20877)
20878{
20879 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 WDI_ControlBlockType* pWDICtx = NULL;
20881 WDI_Status wdiStatus;
20882 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 void* pUserData;
20884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20885
20886 if (( NULL == pMsg )||
20887 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20888 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20889 {
20890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 }
20895
20896 /*Transition back to the state that we had before serialization
20897 - serialization transitions us to BUSY to stop any incomming requests
20898 ! TO DO L: possible race condition here if a request comes in between the
20899 state transition and the post function*/
20900
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020902
20903 /*-----------------------------------------------------------------------
20904 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 -----------------------------------------------------------------------*/
20907 switch ( pEventData->wdiRequest )
20908 {
20909
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20912 break;
20913
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 case WDI_NV_DOWNLOAD_REQ:
20915 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20916 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20917 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20918 {
20919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020920 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20922 }
20923 else
20924 {
20925 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20926 }
20927
20928 break;
20929
20930 default:
20931 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20932 break;
20933 }/*switch ( pEventData->wdiRequest )*/
20934
20935 if ( WDI_STATUS_SUCCESS != wdiStatus )
20936 {
20937 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20938
20939 if ( NULL != pfnReqStatusCB )
20940 {
20941 /*Fail the request*/
20942 pfnReqStatusCB( wdiStatus, pUserData);
20943 }
20944 }
20945
20946 /* Free data - that was allocated when queueing*/
20947 if( pEventData != NULL )
20948 {
20949 if( pEventData->pEventData != NULL )
20950 {
20951 wpalMemoryFree(pEventData->pEventData);
20952 }
20953 wpalMemoryFree(pEventData);
20954 }
20955
20956 if( pMsg != NULL )
20957 {
20958 wpalMemoryFree(pMsg);
20959 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020960
Jeff Johnson295189b2012-06-20 16:38:30 -070020961}/*WDI_PALCtrlMsgCB*/
20962
20963/**
20964 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 and schedule for execution a pending request
20966 @param
20967
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 pWDICtx: - pointer to the WDI control block
20969 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020970 queued
20971
20972 @see
20973 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020974*/
20975WDI_Status
20976WDI_DequeuePendingReq
20977(
20978 WDI_ControlBlockType* pWDICtx
20979)
20980{
Jeff Johnsone7245742012-09-05 17:12:55 -070020981 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20985
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020987
20988 if ( NULL == pNode )
20989 {
20990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 return WDI_STATUS_SUCCESS;
20993 }
20994
20995 /*The node actually points to the 1st element inside the Event Data struct -
20996 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020998
20999 /*Serialize processing in the control thread
21000 !TO DO: - check to see if these are all the messages params that need
21001 to be filled in*/
21002 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21003
21004 if ( NULL == palMsg )
21005 {
21006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 palMsg->callback = WDI_PALCtrlMsgCB;
21013 palMsg->ptr = pEventData;
21014
21015 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021016 palMsg->val = pWDICtx->uGlobalState;
21017
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 /*Transition back to BUSY as we need to handle a queued request*/
21019 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021020
Jeff Johnson295189b2012-06-20 16:38:30 -070021021 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21022
21023 return WDI_STATUS_PENDING;
21024}/*WDI_DequeuePendingReq*/
21025
21026
21027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 away.- The assoc requests will be queued by BSSID
21031 @param
21032
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 pWDICtx: - pointer to the WDI control block
21034 pEventData: pointer to the evnt info that needs to be queued
21035 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021036
21037 @see
21038 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021039*/
21040WDI_Status
21041WDI_QueueNewAssocRequest
21042(
21043 WDI_ControlBlockType* pWDICtx,
21044 WDI_EventInfoType* pEventData,
21045 wpt_macAddr macBSSID
21046)
21047{
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 wpt_uint8 i;
21049 WDI_BSSSessionType* pSession = NULL;
21050 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 void* pEventInfo;
21053 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021055
Jeff Johnsone7245742012-09-05 17:12:55 -070021056
21057 /*------------------------------------------------------------------------
21058 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 ------------------------------------------------------------------------*/
21060 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21061 {
21062 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21063 {
21064 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 pSession = &pWDICtx->aBSSSessions[i];
21066 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 }
21068 }
21069
21070 if ( i >= WDI_MAX_BSS_SESSIONS )
21071 {
21072 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021074 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021075
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 /*------------------------------------------------------------------------
21077 Fill in the BSSID for this session and set the usage flag
21078 ------------------------------------------------------------------------*/
21079 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021081
21082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021083 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 ------------------------------------------------------------------------*/
21085 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21086 if ( NULL == pEventDataQueue )
21087 {
21088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021089 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 WDI_ASSERT(0);
21091 return WDI_STATUS_MEM_FAILURE;
21092 }
21093
21094 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21095 if ( NULL == pSessionIdElement )
21096 {
21097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021098 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 WDI_ASSERT(0);
21100 wpalMemoryFree(pEventDataQueue);
21101 return WDI_STATUS_MEM_FAILURE;
21102 }
21103
21104 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21105 if ( NULL == pEventInfo )
21106 {
21107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021108 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 WDI_ASSERT(0);
21110 wpalMemoryFree(pSessionIdElement);
21111 wpalMemoryFree(pEventDataQueue);
21112 return WDI_STATUS_MEM_FAILURE;
21113 }
21114
21115 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21116 pEventDataQueue->pUserData = pEventData->pUserData;
21117 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21118 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021120
21121 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21122 pEventDataQueue->pEventData = pEventInfo;
21123
21124 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126
21127 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021129
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021131
21132 /*We need to maintain a separate list that keeps track of the order in which
21133 the new assoc requests are being queued such that we can start processing
21134 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 pSessionIdElement->ucIndex = i;
21136 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137
21138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21139 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021140 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021141
21142 /*Return pending as this is what the status of the request is since it has
21143 been queued*/
21144 return WDI_STATUS_PENDING;
21145}/*WDI_QueueNewAssocRequest*/
21146
21147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 away.- The assoc requests will be queued by BSSID
21151 @param
21152
Jeff Johnson295189b2012-06-20 16:38:30 -070021153 pWDICtx: - pointer to the WDI control block
21154 pSession: - session in which to queue
21155 pEventData: pointer to the event info that needs to be
21156 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021157
21158 @see
21159 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021160*/
21161WDI_Status
21162WDI_QueueAssocRequest
21163(
21164 WDI_ControlBlockType* pWDICtx,
21165 WDI_BSSSessionType* pSession,
21166 WDI_EventInfoType* pEventData
21167)
21168{
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021173
21174 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 Sanity check
21176 ------------------------------------------------------------------------*/
21177 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21178 {
21179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021181
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 }
21184
21185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021186 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021187 ------------------------------------------------------------------------*/
21188 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21189 if ( NULL == pEventDataQueue )
21190 {
21191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021192 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 WDI_ASSERT(0);
21194 return WDI_STATUS_MEM_FAILURE;
21195 }
21196
21197 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21198 if ( NULL == pEventInfo )
21199 {
21200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21201 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021202 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 WDI_ASSERT(0);
21204 wpalMemoryFree(pEventDataQueue);
21205 return WDI_STATUS_MEM_FAILURE;
21206 }
21207
21208 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21209 pEventDataQueue->pUserData = pEventData->pUserData;
21210 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21211 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 pEventDataQueue->pEventData = pEventInfo;
21214
21215 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21216
21217 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021219
21220 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021222
Jeff Johnsone7245742012-09-05 17:12:55 -070021223 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021224
21225 /*The result of this operation is pending because the request has been
21226 queued and it will be processed at a later moment in time */
21227 return WDI_STATUS_PENDING;
21228}/*WDI_QueueAssocRequest*/
21229
21230/**
21231 @brief Utility function used by the DAL Core to help dequeue
21232 an association request that was pending
21233 The request will be queued up in front of the main
21234 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 @param
21236
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021238
21239
21240 @see
21241 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021242*/
21243WDI_Status
21244WDI_DequeueAssocRequest
21245(
21246 WDI_ControlBlockType* pWDICtx
21247)
21248{
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 wpt_list_node* pNode = NULL;
21250 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 WDI_BSSSessionType* pSession;
21252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021253
21254 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 Sanity check
21256 ------------------------------------------------------------------------*/
21257 if ( NULL == pWDICtx )
21258 {
21259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021261
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 }
21264
21265 /*------------------------------------------------------------------------
21266 An association has been completed => a new association can occur
21267 Check to see if there are any pending associations ->
21268 If so , transfer all the pending requests into the busy queue for
21269 processing
21270 These requests have arrived prior to the requests in the busy queue
21271 (bc they needed to be processed in order to be placed in this queue)
21272 => they will be placed at the front of the busy queue
21273 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021275
21276 if ( NULL == pNode )
21277 {
21278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021279 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 return WDI_STATUS_SUCCESS;
21281 }
21282
21283 /*The node actually points to the 1st element inside the Session Id struct -
21284 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021285 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021286
21287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21288 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21289
21290 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21291 {
21292 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021293
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 the front of the main waiting queue for subsequent execution*/
21296 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 while ( NULL != pNode )
21298 {
21299 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21301 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 }
21305 else
21306 {
21307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021308 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 WPAL_ASSERT(0);
21310 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021313
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21315 wpalMemoryFree(pSessionIdElement);
21316 return WDI_STATUS_SUCCESS;
21317}/*WDI_DequeueAssocRequest*/
21318
21319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021320 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 pending requests - all req cb will be called with
21322 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 @param
21324
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021326
21327 @see
21328 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021329*/
21330WDI_Status
21331WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021332(
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 WDI_ControlBlockType* pWDICtx
21334)
21335{
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 void* pUserData;
21340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21341
Jeff Johnsone7245742012-09-05 17:12:55 -070021342 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021343
21344 /*------------------------------------------------------------------------
21345 Go through all the requests and fail them - this will only be called
21346 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021348 ------------------------------------------------------------------------*/
21349 while( pNode )
21350 {
21351 /*The node actually points to the 1st element inside the Event Data struct -
21352 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 pEventDataQueue = (WDI_EventInfoType*)pNode;
21354
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21356 if ( NULL != pfnReqStatusCB )
21357 {
21358 /*Fail the request*/
21359 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21360 }
21361 /* Free data - that was allocated when queueing */
21362 if ( pEventDataQueue->pEventData != NULL )
21363 {
21364 wpalMemoryFree(pEventDataQueue->pEventData);
21365 }
21366 wpalMemoryFree(pEventDataQueue);
21367
21368 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21369 {
21370 break;
21371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 }
21373
Jeff Johnson295189b2012-06-20 16:38:30 -070021374 return WDI_STATUS_SUCCESS;
21375}/*WDI_ClearPendingRequests*/
21376
21377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021378 @brief Helper routine used to init the BSS Sessions in the WDI control block
21379
21380
21381 @param pWDICtx: pointer to the WLAN DAL context
21382
Jeff Johnson295189b2012-06-20 16:38:30 -070021383 @see
21384*/
21385void
21386WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021387(
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 WDI_ControlBlockType* pWDICtx
21389)
21390{
Jeff Johnsone7245742012-09-05 17:12:55 -070021391 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21393
21394 /*-------------------------------------------------------------------------
21395 No Sanity check
21396 -------------------------------------------------------------------------*/
21397 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21398 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21401 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21402 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21403 }
21404}/*WDI_ResetAssocSessions*/
21405
21406/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021407 @brief Helper routine used to find a session based on the BSSID
21408
21409
21410 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021411 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021412 pSession: pointer to the session (if found)
21413
Jeff Johnson295189b2012-06-20 16:38:30 -070021414 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021415 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021416*/
21417wpt_uint8
21418WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021419(
Jeff Johnson295189b2012-06-20 16:38:30 -070021420 WDI_ControlBlockType* pWDICtx,
21421 wpt_macAddr macBSSID,
21422 WDI_BSSSessionType** ppSession
21423)
21424{
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21427
21428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 -------------------------------------------------------------------------*/
21431 if ( NULL == ppSession )
21432 {
21433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021434 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 }
21437
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021439
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 /*------------------------------------------------------------------------
21441 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 ------------------------------------------------------------------------*/
21443 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21444 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021445 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21446 (eWLAN_PAL_TRUE ==
21447 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21448 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 {
21450 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 return i;
21453 }
21454 }
21455
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021457}/*WDI_FindAssocSession*/
21458
21459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 @brief Helper routine used to find a session based on the BSSID
21461
21462
21463 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 ucBSSIdx: BSS Index of the session
21465 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021466
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021469*/
21470wpt_uint8
21471WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021472(
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 WDI_ControlBlockType* pWDICtx,
21474 wpt_uint16 ucBSSIdx,
21475 WDI_BSSSessionType** ppSession
21476)
21477{
Jeff Johnsone7245742012-09-05 17:12:55 -070021478 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21480
21481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 -------------------------------------------------------------------------*/
21484 if ( NULL == ppSession )
21485 {
21486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021487 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 }
21490
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 /*------------------------------------------------------------------------
21494 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 ------------------------------------------------------------------------*/
21496 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21497 {
21498 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21499 {
21500 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 return i;
21503 }
21504 }
21505
Jeff Johnsone7245742012-09-05 17:12:55 -070021506 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021507}/*WDI_FindAssocSessionByBSSIdx*/
21508
21509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 @brief Helper routine used to find a session based on the BSSID
21511
21512
21513 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 ucBSSIdx: BSS Index of the session
21515 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021516
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021519*/
21520wpt_uint8
21521WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021522(
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 WDI_ControlBlockType* pWDICtx,
21524 wpt_uint16 usIdx,
21525 WDI_BSSSessionType** ppSession
21526)
21527{
21528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21529
21530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 -------------------------------------------------------------------------*/
21533 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21534 {
21535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021536 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021537 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 }
21539
21540 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021541 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021542
21543 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021544
Jeff Johnson295189b2012-06-20 16:38:30 -070021545}/*WDI_FindAssocSessionByBSSIdx*/
21546
21547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021550
21551
21552 @param pWDICtx: pointer to the WLAN DAL context
21553 pSession: pointer to the session (if found)
21554
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021557*/
21558wpt_uint8
21559WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021560(
Jeff Johnson295189b2012-06-20 16:38:30 -070021561 WDI_ControlBlockType* pWDICtx,
21562 WDI_BSSSessionType** ppSession
21563)
21564{
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 -------------------------------------------------------------------------*/
21570 if ( NULL == ppSession )
21571 {
21572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021573 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 }
21576
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021578
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 /*------------------------------------------------------------------------
21580 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 ------------------------------------------------------------------------*/
21582 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21583 {
21584 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21585 {
21586 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021587 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 return i;
21589 }
21590 }
21591
Jeff Johnsone7245742012-09-05 17:12:55 -070021592 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021593}/*WDI_FindEmptySession*/
21594
21595
21596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021599
21600
21601 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021602 macBSSID: pointer to BSSID. If NULL, get all the session.
21603 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21604 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21605 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 @see
21607 @return Number of sessions in use
21608*/
21609wpt_uint8
21610WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021611(
Hoonki Lee26599972013-04-24 01:21:58 -070021612 WDI_ControlBlockType* pWDICtx,
21613 wpt_macAddr macBSSID,
21614 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021615)
21616{
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021619
21620 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 Count all sessions in use
21622 ------------------------------------------------------------------------*/
21623 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21624 {
Hoonki Lee26599972013-04-24 01:21:58 -070021625 if ( macBSSID && skipBSSID &&
21626 (eWLAN_PAL_TRUE ==
21627 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21628 WDI_MAC_ADDR_LEN)))
21629 {
21630 continue;
21631 }
21632 else if ( pWDICtx->aBSSSessions[i].bInUse )
21633 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021634 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021635 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 }
21637
Jeff Johnsone7245742012-09-05 17:12:55 -070021638 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021639}/*WDI_GetActiveSessionsCount*/
21640
21641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021642 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021644
21645
21646 @param pWDICtx: pointer to the WLAN DAL context
21647 pSession: pointer to the session (if found)
21648
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021651*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021652void
Jeff Johnson295189b2012-06-20 16:38:30 -070021653WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021654(
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 WDI_ControlBlockType* pWDICtx,
21656 WDI_BSSSessionType* ppSession
21657)
21658{
21659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 -------------------------------------------------------------------------*/
21662 if ( NULL == ppSession )
21663 {
21664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021665 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 }
21668
Jeff Johnsone7245742012-09-05 17:12:55 -070021669 /*------------------------------------------------------------------------
21670 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 ------------------------------------------------------------------------*/
21672 wpal_list_destroy(&ppSession->wptPendingQueue);
21673 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21675 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21677 wpal_list_init(&ppSession->wptPendingQueue);
21678
21679}/*WDI_DeleteSession*/
21680
21681/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 @param
21685
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 WDI_AddStaParams: - pointer to the WDI Add STA params
21687 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021688
21689 @see
21690 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021691*/
21692void
21693WDI_AddBcastSTAtoSTATable
21694(
21695 WDI_ControlBlockType* pWDICtx,
21696 WDI_AddStaParams * staParams,
21697 wpt_uint16 usBcastStaIdx
21698)
21699{
21700 WDI_AddStaParams wdiAddSTAParam = {0};
21701 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21703
21704 /*---------------------------------------------------------------------
21705 Sanity check
21706 ---------------------------------------------------------------------*/
21707 if ( NULL == staParams )
21708 {
21709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021711
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 }
21714
21715 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21716 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21717 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21718 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21719 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21720 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21721 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21722 WDI_MAC_ADDR_LEN );
21723 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21724 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21725 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21726 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21727 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21728 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21729 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021730
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21732}
21733
21734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 @brief NV blob will be divided into fragments of size 4kb and
21736 Sent to HAL
21737
21738 @param pWDICtx: pointer to the WLAN DAL context
21739 pEventData: pointer to the event information structure
21740
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 @see
21742 @return Result of the function call
21743 */
21744
21745WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021746(
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 WDI_ControlBlockType* pWDICtx,
21748 WDI_EventInfoType* pEventData
21749)
21750{
21751
21752 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21753 wpt_uint8* pSendBuffer = NULL;
21754 wpt_uint16 usDataOffset = 0;
21755 wpt_uint16 usSendSize = 0;
21756 wpt_uint16 usCurrentFragmentSize =0;
21757 wpt_uint8* pSrcBuffer = NULL;
21758 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21759 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21760
21761 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21762 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21763 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21764
Jeff Johnsone7245742012-09-05 17:12:55 -070021765 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21767
21768 /* Update the current Fragment Number */
21769 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21770
21771 /*Update the HAL REQ structure */
21772 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21773 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21774 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21775
21776 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021777 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 image will be sent to HAL*/
21779
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021784 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21786 usCurrentFragmentSize = FRAGMENT_SIZE;
21787
21788 /*Update the HAL REQ structure */
21789 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21790 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21791
21792 }
21793 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021794 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021795 usCurrentFragmentSize = FRAGMENT_SIZE;
21796
21797 /*Update the HAL REQ structure */
21798 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21799 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21800 }
21801
21802 /*-----------------------------------------------------------------------
21803 Get message buffer
21804 -----------------------------------------------------------------------*/
21805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21806 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21807 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021808 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21810 {
21811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21812 "Unable to get send buffer in NV Download req %x %x ",
21813 pEventData, pwdiNvDownloadReqParams);
21814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 }
21817
21818 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021819 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021820 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21821
21822 /* Appending the NV image fragment */
21823 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21824 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21825 usCurrentFragmentSize);
21826
21827 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829
Jeff Johnsone7245742012-09-05 17:12:55 -070021830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21831 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 WDI_NV_DOWNLOAD_RESP);
21833
21834}
Jeff Johnsone7245742012-09-05 17:12:55 -070021835/*============================================================================
21836 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021837 ============================================================================*/
21838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 @brief Helper routine used to find a session based on the BSSID
21840 @param pContext: pointer to the WLAN DAL context
21841 @param pDPContext: pointer to the Datapath context
21842
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021845*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021846WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021847WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21848{
21849 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21850
21851 pCB->pDPContext = pDPContext;
21852 return;
21853}
21854
21855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 @brief Helper routine used to find a session based on the BSSID
21857
21858
21859 @param pContext: pointer to the WLAN DAL context
21860
Jeff Johnson295189b2012-06-20 16:38:30 -070021861 @see
21862 @return pointer to Datapath context
21863*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021864WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021865WDI_DS_GetDatapathContext (void *pContext)
21866{
21867 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21868 return pCB->pDPContext;
21869}
21870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 @brief Helper routine used to find a session based on the BSSID
21872
21873
21874 @param pContext: pointer to the WLAN DAL context
21875 @param pDTDriverContext: pointer to the Transport Driver context
21876
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 @see
21878 @return void
21879*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021880WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021881WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21882{
21883 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21884
21885 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021887}
21888
21889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 @brief Helper routine used to find a session based on the BSSID
21891
21892
21893 @param pWDICtx: pointer to the WLAN DAL context
21894
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021897*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021898WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021899WDT_GetTransportDriverContext (void *pContext)
21900{
21901 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021903}
21904
Jeff Johnsone7245742012-09-05 17:12:55 -070021905/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 Helper inline converters
21907 ============================================================================*/
21908/*Convert WDI driver type into HAL driver type*/
21909WPT_STATIC WPT_INLINE WDI_Status
21910WDI_HAL_2_WDI_STATUS
21911(
21912 eHalStatus halStatus
21913)
21914{
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 the chances of getting inlined*/
21917 switch( halStatus )
21918 {
21919 case eHAL_STATUS_SUCCESS:
21920 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21921 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21922 return WDI_STATUS_SUCCESS;
21923 case eHAL_STATUS_FAILURE:
21924 return WDI_STATUS_E_FAILURE;
21925 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 return WDI_STATUS_MEM_FAILURE;
21927 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 default:
21930 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21931 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021932
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021934}/*WDI_HAL_2_WDI_STATUS*/
21935
21936/*Convert WDI request type into HAL request type*/
21937WPT_STATIC WPT_INLINE tHalHostMsgType
21938WDI_2_HAL_REQ_TYPE
21939(
21940 WDI_RequestEnumType wdiReqType
21941)
21942{
Jeff Johnsone7245742012-09-05 17:12:55 -070021943 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021944 the chances of getting inlined*/
21945 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021950 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 return WLAN_HAL_RMV_STAKEY_REQ;
21982 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021983 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 case WDI_DEL_BA_REQ:
21991 return WLAN_HAL_DEL_BA_REQ;
21992#ifdef FEATURE_WLAN_CCX
21993 case WDI_TSM_STATS_REQ:
21994 return WLAN_HAL_TSM_STATS_REQ;
21995#endif
21996 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022000 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 case WDI_ADD_BA_SESSION_REQ:
22007 return WLAN_HAL_ADD_BA_SESSION_REQ;
22008 case WDI_TRIGGER_BA_REQ:
22009 return WLAN_HAL_TRIGGER_BA_REQ;
22010 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22015 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22016 case WDI_SET_MAX_TX_POWER_REQ:
22017 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022018 case WDI_SET_TX_POWER_REQ:
22019 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22021 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022022#ifdef FEATURE_WLAN_TDLS
22023 case WDI_TDLS_LINK_ESTABLISH_REQ:
22024 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22025#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022039 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022041 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022042 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022043 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022044 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 case WDI_REM_BEACON_FILTER_REQ:
22047 return WLAN_HAL_REM_BCN_FILTER_REQ;
22048 case WDI_SET_RSSI_THRESHOLDS_REQ:
22049 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22050 case WDI_HOST_OFFLOAD_REQ:
22051 return WLAN_HAL_HOST_OFFLOAD_REQ;
22052 case WDI_WOWL_ADD_BC_PTRN_REQ:
22053 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22054 case WDI_WOWL_DEL_BC_PTRN_REQ:
22055 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22056 case WDI_WOWL_ENTER_REQ:
22057 return WLAN_HAL_ENTER_WOWL_REQ;
22058 case WDI_WOWL_EXIT_REQ:
22059 return WLAN_HAL_EXIT_WOWL_REQ;
22060 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22061 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22062 case WDI_NV_DOWNLOAD_REQ:
22063 return WLAN_HAL_DOWNLOAD_NV_REQ;
22064 case WDI_FLUSH_AC_REQ:
22065 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22066 case WDI_BTAMP_EVENT_REQ:
22067 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22068#ifdef WLAN_FEATURE_VOWIFI_11R
22069 case WDI_AGGR_ADD_TS_REQ:
22070 return WLAN_HAL_AGGR_ADD_TS_REQ;
22071#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022072 case WDI_FTM_CMD_REQ:
22073 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 case WDI_ADD_STA_SELF_REQ:
22075 return WLAN_HAL_ADD_STA_SELF_REQ;
22076 case WDI_DEL_STA_SELF_REQ:
22077 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022078#ifdef FEATURE_OEM_DATA_SUPPORT
22079 case WDI_START_OEM_DATA_REQ:
22080 return WLAN_HAL_START_OEM_DATA_REQ;
22081#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 case WDI_HOST_RESUME_REQ:
22083 return WLAN_HAL_HOST_RESUME_REQ;
22084 case WDI_HOST_SUSPEND_IND:
22085 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022086 case WDI_TRAFFIC_STATS_IND:
22087 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022088#ifdef WLAN_FEATURE_11W
22089 case WDI_EXCLUDE_UNENCRYPTED_IND:
22090 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22091#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 case WDI_KEEP_ALIVE_REQ:
22093 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022094#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022095 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22096 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022097#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022098#ifdef FEATURE_WLAN_SCAN_PNO
22099 case WDI_SET_PREF_NETWORK_REQ:
22100 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22101 case WDI_SET_RSSI_FILTER_REQ:
22102 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22103 case WDI_UPDATE_SCAN_PARAMS_REQ:
22104 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22105#endif // FEATURE_WLAN_SCAN_PNO
22106 case WDI_SET_TX_PER_TRACKING_REQ:
22107 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22108#ifdef WLAN_FEATURE_PACKET_FILTERING
22109 case WDI_8023_MULTICAST_LIST_REQ:
22110 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22111 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22114 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22115 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22116 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22117#endif // WLAN_FEATURE_PACKET_FILTERING
22118 case WDI_HAL_DUMP_CMD_REQ:
22119 return WLAN_HAL_DUMP_COMMAND_REQ;
22120#ifdef WLAN_FEATURE_GTK_OFFLOAD
22121 case WDI_GTK_OFFLOAD_REQ:
22122 return WLAN_HAL_GTK_OFFLOAD_REQ;
22123 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22124 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22125#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22126
22127 case WDI_INIT_SCAN_CON_REQ:
22128 return WLAN_HAL_INIT_SCAN_CON_REQ;
22129 case WDI_SET_POWER_PARAMS_REQ:
22130 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22131 case WDI_SET_TM_LEVEL_REQ:
22132 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22133 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22134 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022135#ifdef WLAN_FEATURE_11AC
22136 case WDI_UPDATE_VHT_OP_MODE_REQ:
22137 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22138#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022139 case WDI_GET_ROAM_RSSI_REQ:
22140 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022144
Jeff Johnson295189b2012-06-20 16:38:30 -070022145}/*WDI_2_HAL_REQ_TYPE*/
22146
22147/*Convert WDI response type into HAL response type*/
22148WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22149HAL_2_WDI_RSP_TYPE
22150(
22151 tHalHostMsgType halMsg
22152)
22153{
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 the chances of getting inlined*/
22156 switch( halMsg )
22157 {
22158 case WLAN_HAL_START_RSP:
22159 return WDI_START_RESP;
22160 case WLAN_HAL_STOP_RSP:
22161 return WDI_STOP_RESP;
22162 case WLAN_HAL_INIT_SCAN_RSP:
22163 return WDI_INIT_SCAN_RESP;
22164 case WLAN_HAL_START_SCAN_RSP:
22165 return WDI_START_SCAN_RESP;
22166 case WLAN_HAL_END_SCAN_RSP:
22167 return WDI_END_SCAN_RESP;
22168 case WLAN_HAL_FINISH_SCAN_RSP:
22169 return WDI_FINISH_SCAN_RESP;
22170 case WLAN_HAL_CONFIG_STA_RSP:
22171 return WDI_CONFIG_STA_RESP;
22172 case WLAN_HAL_DELETE_STA_RSP:
22173 return WDI_DEL_STA_RESP;
22174 case WLAN_HAL_CONFIG_BSS_RSP:
22175 return WDI_CONFIG_BSS_RESP;
22176 case WLAN_HAL_DELETE_BSS_RSP:
22177 return WDI_DEL_BSS_RESP;
22178 case WLAN_HAL_JOIN_RSP:
22179 return WDI_JOIN_RESP;
22180 case WLAN_HAL_POST_ASSOC_RSP:
22181 return WDI_POST_ASSOC_RESP;
22182 case WLAN_HAL_SET_BSSKEY_RSP:
22183 return WDI_SET_BSS_KEY_RESP;
22184 case WLAN_HAL_SET_STAKEY_RSP:
22185 return WDI_SET_STA_KEY_RESP;
22186 case WLAN_HAL_RMV_BSSKEY_RSP:
22187 return WDI_RMV_BSS_KEY_RESP;
22188 case WLAN_HAL_RMV_STAKEY_RSP:
22189 return WDI_RMV_STA_KEY_RESP;
22190 case WLAN_HAL_SET_BCASTKEY_RSP:
22191 return WDI_SET_STA_BCAST_KEY_RESP;
22192 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22193 // return WDI_RMV_STA_BCAST_KEY_RESP;
22194 case WLAN_HAL_ADD_TS_RSP:
22195 return WDI_ADD_TS_RESP;
22196 case WLAN_HAL_DEL_TS_RSP:
22197 return WDI_DEL_TS_RESP;
22198 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22199 return WDI_UPD_EDCA_PRMS_RESP;
22200 case WLAN_HAL_ADD_BA_RSP:
22201 return WDI_ADD_BA_RESP;
22202 case WLAN_HAL_DEL_BA_RSP:
22203 return WDI_DEL_BA_RESP;
22204#ifdef FEATURE_WLAN_CCX
22205 case WLAN_HAL_TSM_STATS_RSP:
22206 return WDI_TSM_STATS_RESP;
22207#endif
22208 case WLAN_HAL_CH_SWITCH_RSP:
22209 return WDI_CH_SWITCH_RESP;
22210 case WLAN_HAL_SET_LINK_ST_RSP:
22211 return WDI_SET_LINK_ST_RESP;
22212 case WLAN_HAL_GET_STATS_RSP:
22213 return WDI_GET_STATS_RESP;
22214 case WLAN_HAL_UPDATE_CFG_RSP:
22215 return WDI_UPDATE_CFG_RESP;
22216 case WLAN_HAL_ADD_BA_SESSION_RSP:
22217 return WDI_ADD_BA_SESSION_RESP;
22218 case WLAN_HAL_TRIGGER_BA_RSP:
22219 return WDI_TRIGGER_BA_RESP;
22220 case WLAN_HAL_UPDATE_BEACON_RSP:
22221 return WDI_UPD_BCON_PRMS_RESP;
22222 case WLAN_HAL_SEND_BEACON_RSP:
22223 return WDI_SND_BCON_RESP;
22224 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22225 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22226 /*Indications*/
22227 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22228 return WDI_HAL_RSSI_NOTIFICATION_IND;
22229 case WLAN_HAL_MISSED_BEACON_IND:
22230 return WDI_HAL_MISSED_BEACON_IND;
22231 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22232 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22233 case WLAN_HAL_MIC_FAILURE_IND:
22234 return WDI_HAL_MIC_FAILURE_IND;
22235 case WLAN_HAL_FATAL_ERROR_IND:
22236 return WDI_HAL_FATAL_ERROR_IND;
22237 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22238 return WDI_HAL_DEL_STA_IND;
22239 case WLAN_HAL_COEX_IND:
22240 return WDI_HAL_COEX_IND;
22241 case WLAN_HAL_OTA_TX_COMPL_IND:
22242 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 case WLAN_HAL_P2P_NOA_ATTR_IND:
22244 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022245 case WLAN_HAL_P2P_NOA_START_IND:
22246 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 case WLAN_HAL_TX_PER_HIT_IND:
22248 return WDI_HAL_TX_PER_HIT_IND;
22249 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22250 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022251 case WLAN_HAL_SET_TX_POWER_RSP:
22252 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 case WLAN_HAL_SET_P2P_GONOA_RSP:
22254 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022255#ifdef FEATURE_WLAN_TDLS
22256 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22257 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22258 case WLAN_HAL_TDLS_IND:
22259 return WDI_HAL_TDLS_IND;
22260#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022262 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022268 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22280 return WDI_SET_BEACON_FILTER_RESP;
22281 case WLAN_HAL_REM_BCN_FILTER_RSP:
22282 return WDI_REM_BEACON_FILTER_RESP;
22283 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22284 return WDI_SET_RSSI_THRESHOLDS_RESP;
22285 case WLAN_HAL_HOST_OFFLOAD_RSP:
22286 return WDI_HOST_OFFLOAD_RESP;
22287 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22288 return WDI_WOWL_ADD_BC_PTRN_RESP;
22289 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22290 return WDI_WOWL_DEL_BC_PTRN_RESP;
22291 case WLAN_HAL_ENTER_WOWL_RSP:
22292 return WDI_WOWL_ENTER_RESP;
22293 case WLAN_HAL_EXIT_WOWL_RSP:
22294 return WDI_WOWL_EXIT_RESP;
22295 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22296 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22297 case WLAN_HAL_DOWNLOAD_NV_RSP:
22298 return WDI_NV_DOWNLOAD_RESP;
22299 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22300 return WDI_FLUSH_AC_RESP;
22301 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22302 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 case WLAN_HAL_PROCESS_PTT_RSP:
22304 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 case WLAN_HAL_ADD_STA_SELF_RSP:
22306 return WDI_ADD_STA_SELF_RESP;
22307case WLAN_HAL_DEL_STA_SELF_RSP:
22308 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022309#ifdef FEATURE_OEM_DATA_SUPPORT
22310 case WLAN_HAL_START_OEM_DATA_RSP:
22311 return WDI_START_OEM_DATA_RESP;
22312#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 case WLAN_HAL_HOST_RESUME_RSP:
22314 return WDI_HOST_RESUME_RESP;
22315 case WLAN_HAL_KEEP_ALIVE_RSP:
22316 return WDI_KEEP_ALIVE_RESP;
22317#ifdef FEATURE_WLAN_SCAN_PNO
22318 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22319 return WDI_SET_PREF_NETWORK_RESP;
22320 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022321 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22323 return WDI_UPDATE_SCAN_PARAMS_RESP;
22324 case WLAN_HAL_PREF_NETW_FOUND_IND:
22325 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22326#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022327#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022328 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22329 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022330#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22332 return WDI_SET_TX_PER_TRACKING_RESP;
22333#ifdef WLAN_FEATURE_PACKET_FILTERING
22334 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22335 return WDI_8023_MULTICAST_LIST_RESP;
22336 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22337 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22338 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22339 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22340 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22341 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22342#endif // WLAN_FEATURE_PACKET_FILTERING
22343
22344 case WLAN_HAL_DUMP_COMMAND_RSP:
22345 return WDI_HAL_DUMP_CMD_RESP;
22346 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22347 return WDI_SET_POWER_PARAMS_RESP;
22348#ifdef WLAN_FEATURE_VOWIFI_11R
22349 case WLAN_HAL_AGGR_ADD_TS_RSP:
22350 return WDI_AGGR_ADD_TS_RESP;
22351#endif
22352
22353#ifdef WLAN_FEATURE_GTK_OFFLOAD
22354 case WLAN_HAL_GTK_OFFLOAD_RSP:
22355 return WDI_GTK_OFFLOAD_RESP;
22356 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22357 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22358#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22359#ifdef WLAN_WAKEUP_EVENTS
22360 case WLAN_HAL_WAKE_REASON_IND:
22361 return WDI_HAL_WAKE_REASON_IND;
22362#endif // WLAN_WAKEUP_EVENTS
22363
22364 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22365 return WDI_SET_TM_LEVEL_RESP;
22366 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22367 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022368#ifdef WLAN_FEATURE_11AC
22369 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22370 return WDI_UPDATE_VHT_OP_MODE_RESP;
22371#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022372#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22373 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22374 return WDI_GET_ROAM_RSSI_RESP;
22375#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 }
22379
22380}/*HAL_2_WDI_RSP_TYPE*/
22381
22382
22383/*Convert WDI driver type into HAL driver type*/
22384WPT_STATIC WPT_INLINE tDriverType
22385WDI_2_HAL_DRV_TYPE
22386(
22387 WDI_DriverType wdiDriverType
22388)
22389{
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 the chances of getting inlined*/
22392 switch( wdiDriverType )
22393 {
22394 case WDI_DRIVER_TYPE_PRODUCTION:
22395 return eDRIVER_TYPE_PRODUCTION;
22396 case WDI_DRIVER_TYPE_MFG:
22397 return eDRIVER_TYPE_MFG;
22398 case WDI_DRIVER_TYPE_DVT:
22399 return eDRIVER_TYPE_DVT;
22400 }
22401
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022403}/*WDI_2_HAL_DRV_TYPE*/
22404
22405
22406/*Convert WDI stop reason into HAL stop reason*/
22407WPT_STATIC WPT_INLINE tHalStopType
22408WDI_2_HAL_STOP_REASON
22409(
22410 WDI_StopType wdiDriverType
22411)
22412{
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 the chances of getting inlined*/
22415 switch( wdiDriverType )
22416 {
22417 case WDI_STOP_TYPE_SYS_RESET:
22418 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022419 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22420 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 case WDI_STOP_TYPE_RF_KILL:
22422 return HAL_STOP_TYPE_RF_KILL;
22423 }
22424
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022426}/*WDI_2_HAL_STOP_REASON*/
22427
22428
22429/*Convert WDI scan mode type into HAL scan mode type*/
22430WPT_STATIC WPT_INLINE eHalSysMode
22431WDI_2_HAL_SCAN_MODE
22432(
22433 WDI_ScanMode wdiScanMode
22434)
22435{
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 the chances of getting inlined*/
22438 switch( wdiScanMode )
22439 {
22440 case WDI_SCAN_MODE_NORMAL:
22441 return eHAL_SYS_MODE_NORMAL;
22442 case WDI_SCAN_MODE_LEARN:
22443 return eHAL_SYS_MODE_LEARN;
22444 case WDI_SCAN_MODE_SCAN:
22445 return eHAL_SYS_MODE_SCAN;
22446 case WDI_SCAN_MODE_PROMISC:
22447 return eHAL_SYS_MODE_PROMISC;
22448 case WDI_SCAN_MODE_SUSPEND_LINK:
22449 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022450 case WDI_SCAN_MODE_ROAM_SCAN:
22451 return eHAL_SYS_MODE_ROAM_SCAN;
22452 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22453 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 }
22455
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022457}/*WDI_2_HAL_SCAN_MODE*/
22458
22459/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022460WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022461WDI_2_HAL_SEC_CH_OFFSET
22462(
22463 WDI_HTSecondaryChannelOffset wdiSecChOffset
22464)
22465{
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 the chances of getting inlined*/
22468 switch( wdiSecChOffset )
22469 {
22470 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22476#ifdef WLAN_FEATURE_11AC
22477 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22478 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22479 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22480 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22481 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22482 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22483 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22484 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22485 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22486 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22487 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22488 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22489 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22490 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22491#endif
22492 default:
22493 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 }
22495
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022497}/*WDI_2_HAL_SEC_CH_OFFSET*/
22498
22499/*Convert WDI BSS type into HAL BSS type*/
22500WPT_STATIC WPT_INLINE tSirBssType
22501WDI_2_HAL_BSS_TYPE
22502(
22503 WDI_BssType wdiBSSType
22504)
22505{
Jeff Johnsone7245742012-09-05 17:12:55 -070022506 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 the chances of getting inlined*/
22508 switch( wdiBSSType )
22509 {
22510 case WDI_INFRASTRUCTURE_MODE:
22511 return eSIR_INFRASTRUCTURE_MODE;
22512 case WDI_INFRA_AP_MODE:
22513 return eSIR_INFRA_AP_MODE;
22514 case WDI_IBSS_MODE:
22515 return eSIR_IBSS_MODE;
22516 case WDI_BTAMP_STA_MODE:
22517 return eSIR_BTAMP_STA_MODE;
22518 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 case WDI_BSS_AUTO_MODE:
22521 return eSIR_AUTO_MODE;
22522 }
22523
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022525}/*WDI_2_HAL_BSS_TYPE*/
22526
22527/*Convert WDI NW type into HAL NW type*/
22528WPT_STATIC WPT_INLINE tSirNwType
22529WDI_2_HAL_NW_TYPE
22530(
22531 WDI_NwType wdiNWType
22532)
22533{
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 the chances of getting inlined*/
22536 switch( wdiNWType )
22537 {
22538 case WDI_11A_NW_TYPE:
22539 return eSIR_11A_NW_TYPE;
22540 case WDI_11B_NW_TYPE:
22541 return eSIR_11B_NW_TYPE;
22542 case WDI_11G_NW_TYPE:
22543 return eSIR_11G_NW_TYPE;
22544 case WDI_11N_NW_TYPE:
22545 return eSIR_11N_NW_TYPE;
22546 }
22547
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549}/*WDI_2_HAL_NW_TYPE*/
22550
22551/*Convert WDI chanel bonding type into HAL cb type*/
22552WPT_STATIC WPT_INLINE ePhyChanBondState
22553WDI_2_HAL_CB_STATE
22554(
22555 WDI_PhyChanBondState wdiCbState
22556)
22557{
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 the chances of getting inlined*/
22560 switch ( wdiCbState )
22561 {
22562 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22563 return PHY_SINGLE_CHANNEL_CENTERED;
22564 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22565 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22566 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22567 return PHY_DOUBLE_CHANNEL_CENTERED;
22568 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22569 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022570#ifdef WLAN_FEATURE_11AC
22571 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22572 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22573 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22574 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22575 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22576 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22577 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22578 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22579 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22580 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22581 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22582 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22583 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22584 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22585#endif
22586 case WDI_MAX_CB_STATE:
22587 default:
22588 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022590
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 return PHY_CHANNEL_BONDING_STATE_MAX;
22592}/*WDI_2_HAL_CB_STATE*/
22593
22594/*Convert WDI chanel bonding type into HAL cb type*/
22595WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22596WDI_2_HAL_HT_OPER_MODE
22597(
22598 WDI_HTOperatingMode wdiHTOperMode
22599)
22600{
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 the chances of getting inlined*/
22603 switch ( wdiHTOperMode )
22604 {
22605 case WDI_HT_OP_MODE_PURE:
22606 return eSIR_HT_OP_MODE_PURE;
22607 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22608 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22609 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22610 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22611 case WDI_HT_OP_MODE_MIXED:
22612 return eSIR_HT_OP_MODE_MIXED;
22613 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022614
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 return eSIR_HT_OP_MODE_MAX;
22616}/*WDI_2_HAL_HT_OPER_MODE*/
22617
22618/*Convert WDI mimo PS type into HAL mimo PS type*/
22619WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22620WDI_2_HAL_MIMO_PS
22621(
22622 WDI_HTMIMOPowerSaveState wdiHTOperMode
22623)
22624{
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 the chances of getting inlined*/
22627 switch ( wdiHTOperMode )
22628 {
22629 case WDI_HT_MIMO_PS_STATIC:
22630 return eSIR_HT_MIMO_PS_STATIC;
22631 case WDI_HT_MIMO_PS_DYNAMIC:
22632 return eSIR_HT_MIMO_PS_DYNAMIC;
22633 case WDI_HT_MIMO_PS_NA:
22634 return eSIR_HT_MIMO_PS_NA;
22635 case WDI_HT_MIMO_PS_NO_LIMIT:
22636 return eSIR_HT_MIMO_PS_NO_LIMIT;
22637 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022638
Jeff Johnson295189b2012-06-20 16:38:30 -070022639 return eSIR_HT_MIMO_PS_MAX;
22640}/*WDI_2_HAL_MIMO_PS*/
22641
22642/*Convert WDI ENC type into HAL ENC type*/
22643WPT_STATIC WPT_INLINE tAniEdType
22644WDI_2_HAL_ENC_TYPE
22645(
22646 WDI_EncryptType wdiEncType
22647)
22648{
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 the chances of getting inlined*/
22651 switch ( wdiEncType )
22652 {
22653 case WDI_ENCR_NONE:
22654 return eSIR_ED_NONE;
22655
22656 case WDI_ENCR_WEP40:
22657 return eSIR_ED_WEP40;
22658
22659 case WDI_ENCR_WEP104:
22660 return eSIR_ED_WEP104;
22661
22662 case WDI_ENCR_TKIP:
22663 return eSIR_ED_TKIP;
22664
22665 case WDI_ENCR_CCMP:
22666 return eSIR_ED_CCMP;
22667
22668 case WDI_ENCR_AES_128_CMAC:
22669 return eSIR_ED_AES_128_CMAC;
22670#if defined(FEATURE_WLAN_WAPI)
22671 case WDI_ENCR_WPI:
22672 return eSIR_ED_WPI;
22673#endif
22674 default:
22675 return eSIR_ED_NOT_IMPLEMENTED;
22676 }
22677
22678}/*WDI_2_HAL_ENC_TYPE*/
22679
22680/*Convert WDI WEP type into HAL WEP type*/
22681WPT_STATIC WPT_INLINE tAniWepType
22682WDI_2_HAL_WEP_TYPE
22683(
22684 WDI_WepType wdiWEPType
22685)
22686{
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022688 the chances of getting inlined*/
22689 switch ( wdiWEPType )
22690 {
22691 case WDI_WEP_STATIC:
22692 return eSIR_WEP_STATIC;
22693
22694 case WDI_WEP_DYNAMIC:
22695 return eSIR_WEP_DYNAMIC;
22696 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022697
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 return eSIR_WEP_MAX;
22699}/*WDI_2_HAL_WEP_TYPE*/
22700
22701WPT_STATIC WPT_INLINE tSirLinkState
22702WDI_2_HAL_LINK_STATE
22703(
22704 WDI_LinkStateType wdiLinkState
22705)
22706{
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022708 the chances of getting inlined*/
22709 switch ( wdiLinkState )
22710 {
22711 case WDI_LINK_IDLE_STATE:
22712 return eSIR_LINK_IDLE_STATE;
22713
22714 case WDI_LINK_PREASSOC_STATE:
22715 return eSIR_LINK_PREASSOC_STATE;
22716
22717 case WDI_LINK_POSTASSOC_STATE:
22718 return eSIR_LINK_POSTASSOC_STATE;
22719
22720 case WDI_LINK_AP_STATE:
22721 return eSIR_LINK_AP_STATE;
22722
22723 case WDI_LINK_IBSS_STATE:
22724 return eSIR_LINK_IBSS_STATE;
22725
22726 case WDI_LINK_BTAMP_PREASSOC_STATE:
22727 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22728
22729 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22730 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22731
22732 case WDI_LINK_BTAMP_AP_STATE:
22733 return eSIR_LINK_BTAMP_AP_STATE;
22734
22735 case WDI_LINK_BTAMP_STA_STATE:
22736 return eSIR_LINK_BTAMP_STA_STATE;
22737
22738 case WDI_LINK_LEARN_STATE:
22739 return eSIR_LINK_LEARN_STATE;
22740
22741 case WDI_LINK_SCAN_STATE:
22742 return eSIR_LINK_SCAN_STATE;
22743
22744 case WDI_LINK_FINISH_SCAN_STATE:
22745 return eSIR_LINK_FINISH_SCAN_STATE;
22746
22747 case WDI_LINK_INIT_CAL_STATE:
22748 return eSIR_LINK_INIT_CAL_STATE;
22749
22750 case WDI_LINK_FINISH_CAL_STATE:
22751 return eSIR_LINK_FINISH_CAL_STATE;
22752
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 case WDI_LINK_LISTEN_STATE:
22754 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022756 case WDI_LINK_SEND_ACTION_STATE:
22757 return eSIR_LINK_SEND_ACTION_STATE;
22758
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 default:
22760 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022762}
22763
Jeff Johnsone7245742012-09-05 17:12:55 -070022764/*Translate a STA Context from WDI into HAL*/
22765WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022766void
22767WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022768(
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 tConfigStaParams* phalConfigSta,
22770 WDI_ConfigStaReqInfoType* pwdiConfigSta
22771)
22772{
22773 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022774#ifdef WLAN_FEATURE_11AC
22775 /* Get the Version 1 Handler */
22776 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22777 if (WDI_getFwWlanFeatCaps(DOT11AC))
22778 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022779 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 }
22781#endif
22782 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 the chances of getting inlined*/
22784
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 wpalMemoryCopy(phalConfigSta->bssId,
22786 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22787
22788 wpalMemoryCopy(phalConfigSta->staMac,
22789 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022790
22791 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22792 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22793 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22794 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22795 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22796 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22797 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22798 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22799 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22800 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22801 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22802 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22803 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22804 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22805 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22806 phalConfigSta->action = pwdiConfigSta->wdiAction;
22807 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22808 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22809 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22810 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22811 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22812 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22813 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022814
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22816
Jeff Johnsone7245742012-09-05 17:12:55 -070022817 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 pwdiConfigSta->wdiSupportedRates.opRateMode;
22819 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22820 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22823 }
22824 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22825 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22828 }
22829 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22830 {
22831 phalConfigSta->supportedRates.aniLegacyRates[i] =
22832 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22833 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22836 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22837 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22840 }
22841 phalConfigSta->supportedRates.rxHighestDataRate =
22842 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22843
Jeff Johnsone7245742012-09-05 17:12:55 -070022844#ifdef WLAN_FEATURE_11AC
22845 if(phalConfigSta_V1 != NULL)
22846 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022847 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22848 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22849 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22850 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 }
22852#endif
22853
Jeff Johnson295189b2012-06-20 16:38:30 -070022854 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022855
Jeff Johnsone7245742012-09-05 17:12:55 -070022856#ifdef WLAN_FEATURE_11AC
22857 if(phalConfigSta_V1 != NULL)
22858 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022859 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22860 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022861 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022862 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22863 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22864
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 }
22866#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022867}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022868
22869/*Translate a Rate set info from WDI into HAL*/
22870WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022871WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022872(
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 tSirMacRateSet* pHalRateSet,
22874 WDI_RateSet* pwdiRateSet
22875)
22876{
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22879
22880 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22881 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22882
22883 for ( i = 0; i < pHalRateSet->numRates; i++ )
22884 {
22885 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22886 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022887
Jeff Johnson295189b2012-06-20 16:38:30 -070022888}/*WDI_CopyWDIRateSetToHALRateSet*/
22889
22890
22891/*Translate an EDCA Parameter Record from WDI into HAL*/
22892WPT_STATIC WPT_INLINE void
22893WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022894(
Jeff Johnson295189b2012-06-20 16:38:30 -070022895 tSirMacEdcaParamRecord* phalEdcaParam,
22896 WDI_EdcaParamRecord* pWDIEdcaParam
22897)
22898{
Jeff Johnsone7245742012-09-05 17:12:55 -070022899 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 the chances of getting inlined*/
22901
22902 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22903 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22904 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22905 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22906
22907 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22908 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22909 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22910}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22911
22912
22913/*Copy a management frame header from WDI fmt into HAL fmt*/
22914WPT_STATIC WPT_INLINE void
22915WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22916(
22917 tSirMacMgmtHdr* pmacMgmtHdr,
22918 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22919)
22920{
22921 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22922 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22923 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22924 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22925 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22926 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22927 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22928 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22929 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22930 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22931 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22932
22933 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22934 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22935
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022938 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022939 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022940 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 pwdiMacMgmtHdr->bssId, 6);
22942
22943 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22944 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22945 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22946
22947}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22948
22949
22950/*Copy config bss parameters from WDI fmt into HAL fmt*/
22951WPT_STATIC WPT_INLINE void
22952WDI_CopyWDIConfigBSSToHALConfigBSS
22953(
22954 tConfigBssParams* phalConfigBSS,
22955 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22956)
22957{
22958
22959 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022960#ifdef WLAN_FEATURE_11AC
22961 /* Get the Version 1 Handler */
22962 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22963 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022964 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022965#endif
22966
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 wpalMemoryCopy( phalConfigBSS->bssId,
22968 pwdiConfigBSS->macBSSID,
22969 WDI_MAC_ADDR_LEN);
22970
22971#ifdef HAL_SELF_STA_PER_BSS
22972 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22973 pwdiConfigBSS->macSelfAddr,
22974 WDI_MAC_ADDR_LEN);
22975#endif
22976
22977 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22978
22979 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22980 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22981
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 pwdiConfigBSS->ucShortSlotTimeSupported;
22984 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22985 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22986 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22987 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22988 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22991 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22992 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22993 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22994 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22995 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22996 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22997 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22998 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22999 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23000 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23001
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 phalConfigBSS->htOperMode =
23003 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023004
23005 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23006 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23007 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23008 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23009
23010#ifdef WLAN_FEATURE_VOWIFI
23011 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23012#endif
23013
23014 /*! Used 32 as magic number because that is how the ssid is declared inside the
23015 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23018 pwdiConfigBSS->wdiSSID.ucLength : 32;
23019 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 pwdiConfigBSS->wdiSSID.sSSID,
23021 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023022
23023 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23024 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023025
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23027 &pwdiConfigBSS->wdiRateSet);
23028
23029 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23030
23031 if(phalConfigBSS->edcaParamsValid)
23032 {
23033 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23034 &pwdiConfigBSS->wdiBEEDCAParams);
23035 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23036 &pwdiConfigBSS->wdiBKEDCAParams);
23037 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23038 &pwdiConfigBSS->wdiVIEDCAParams);
23039 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23040 &pwdiConfigBSS->wdiVOEDCAParams);
23041 }
23042
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023044
23045 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23046
23047#ifdef WLAN_FEATURE_VOWIFI_11R
23048
Jeff Johnsone7245742012-09-05 17:12:55 -070023049 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023051
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 if( phalConfigBSS->extSetStaKeyParamValid )
23053 {
23054 /*-----------------------------------------------------------------------
23055 Copy the STA Key parameters into the HAL message
23056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023057 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23059
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23062
23063 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23064
23065 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23066
23067 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23068
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23070 keyIndex++)
23071 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23074 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23075 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23076 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23077 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23078 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23085 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 WDI_MAX_KEY_LENGTH);
23088 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 }
23090 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23091 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 sizeof(phalConfigBSS->extSetStaKeyParam) );
23094 }
23095
23096#endif /*WLAN_FEATURE_VOWIFI_11R*/
23097
Jeff Johnsone7245742012-09-05 17:12:55 -070023098#ifdef WLAN_FEATURE_11AC
23099 if(phalConfigBSS_V1 != NULL)
23100 {
23101 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23102 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23103 }
23104#endif
23105
Jeff Johnson295189b2012-06-20 16:38:30 -070023106}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23107
23108
Jeff Johnsone7245742012-09-05 17:12:55 -070023109/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 pointed to by user data */
23111WPT_STATIC WPT_INLINE void
23112WDI_ExtractRequestCBFromEvent
23113(
23114 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 void** ppUserData
23117)
23118{
23119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23120 switch ( pEvent->wdiRequest )
23121 {
23122 case WDI_START_REQ:
23123 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23124 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23125 break;
23126 case WDI_STOP_REQ:
23127 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23128 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23129 break;
23130 case WDI_INIT_SCAN_REQ:
23131 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23132 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23133 break;
23134 case WDI_START_SCAN_REQ:
23135 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23136 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23137 break;
23138 case WDI_END_SCAN_REQ:
23139 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23140 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23141 break;
23142 case WDI_FINISH_SCAN_REQ:
23143 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23144 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23145 break;
23146 case WDI_JOIN_REQ:
23147 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23148 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23149 break;
23150 case WDI_CONFIG_BSS_REQ:
23151 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23152 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23153 break;
23154 case WDI_DEL_BSS_REQ:
23155 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23156 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23157 break;
23158 case WDI_POST_ASSOC_REQ:
23159 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23160 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23161 break;
23162 case WDI_DEL_STA_REQ:
23163 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23164 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23165 break;
23166 case WDI_DEL_STA_SELF_REQ:
23167 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23168 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23169 break;
23170
23171 case WDI_SET_BSS_KEY_REQ:
23172 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23173 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23174 break;
23175 case WDI_RMV_BSS_KEY_REQ:
23176 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23177 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23178 break;
23179 case WDI_SET_STA_KEY_REQ:
23180 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23181 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23182 break;
23183 case WDI_RMV_STA_KEY_REQ:
23184 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23185 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23186 break;
23187 case WDI_ADD_TS_REQ:
23188 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23189 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23190 break;
23191 case WDI_DEL_TS_REQ:
23192 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23193 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23194 break;
23195 case WDI_UPD_EDCA_PRMS_REQ:
23196 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23197 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23198 break;
23199 case WDI_ADD_BA_SESSION_REQ:
23200 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23201 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23202 break;
23203 case WDI_DEL_BA_REQ:
23204 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23205 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23206 break;
23207#ifdef FEATURE_WLAN_CCX
23208 case WDI_TSM_STATS_REQ:
23209 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23210 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23211 break;
23212#endif
23213 case WDI_CH_SWITCH_REQ:
23214 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23215 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23216 break;
23217 case WDI_CONFIG_STA_REQ:
23218 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23219 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23220 break;
23221 case WDI_SET_LINK_ST_REQ:
23222 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23223 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23224 break;
23225 case WDI_GET_STATS_REQ:
23226 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23227 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23228 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023229#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23230 case WDI_GET_ROAM_RSSI_REQ:
23231 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23232 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23233 break;
23234#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 case WDI_UPDATE_CFG_REQ:
23236 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23237 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23238 break;
23239 case WDI_ADD_BA_REQ:
23240 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23241 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23242 break;
23243 case WDI_TRIGGER_BA_REQ:
23244 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23245 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23246 break;
23247 case WDI_UPD_BCON_PRMS_REQ:
23248 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23249 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23250 break;
23251 case WDI_SND_BCON_REQ:
23252 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23253 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23254 break;
23255 case WDI_ENTER_BMPS_REQ:
23256 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23257 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23258 break;
23259 case WDI_EXIT_BMPS_REQ:
23260 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23261 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23262 break;
23263 case WDI_ENTER_UAPSD_REQ:
23264 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23265 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23266 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023267 case WDI_EXIT_UAPSD_REQ:
23268 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23269 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23270 break;
23271 case WDI_SET_UAPSD_PARAM_REQ:
23272 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23273 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23274 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 case WDI_UPDATE_UAPSD_PARAM_REQ:
23276 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23277 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23278 break;
23279 case WDI_CONFIGURE_RXP_FILTER_REQ:
23280 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23281 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23282 break;
23283 case WDI_SET_BEACON_FILTER_REQ:
23284 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23285 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23286 break;
23287 case WDI_REM_BEACON_FILTER_REQ:
23288 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23289 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 case WDI_SET_RSSI_THRESHOLDS_REQ:
23292 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23293 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23294 break;
23295 case WDI_HOST_OFFLOAD_REQ:
23296 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23297 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23298 break;
23299 case WDI_WOWL_ADD_BC_PTRN_REQ:
23300 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23301 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23302 break;
23303 case WDI_WOWL_DEL_BC_PTRN_REQ:
23304 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23305 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23306 break;
23307 case WDI_WOWL_ENTER_REQ:
23308 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23309 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23310 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023311 case WDI_WOWL_EXIT_REQ:
23312 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23313 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23314 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23316 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23317 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23318 break;
23319 case WDI_FLUSH_AC_REQ:
23320 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23321 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23322 break;
23323 case WDI_BTAMP_EVENT_REQ:
23324 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23325 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23326 break;
23327 case WDI_KEEP_ALIVE_REQ:
23328 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23329 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23330 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023331#if defined FEATURE_WLAN_SCAN_PNO
23332 case WDI_SET_PREF_NETWORK_REQ:
23333 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23334 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23335 break;
23336 case WDI_SET_RSSI_FILTER_REQ:
23337 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23338 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23339 break;
23340 case WDI_UPDATE_SCAN_PARAMS_REQ:
23341 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23342 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23343 break;
23344#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 case WDI_SET_TX_PER_TRACKING_REQ:
23346 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23347 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023348 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023349#if defined WLAN_FEATURE_PACKET_FILTERING
23350 case WDI_8023_MULTICAST_LIST_REQ:
23351 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23352 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23353 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023354 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23355 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23356 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23357 break;
23358 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23359 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23360 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23361 break;
23362 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23363 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23364 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23365 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023366#endif
23367 case WDI_SET_POWER_PARAMS_REQ:
23368 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23369 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23370 break;
23371#if defined WLAN_FEATURE_GTK_OFFLOAD
23372 case WDI_GTK_OFFLOAD_REQ:
23373 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23374 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23375 break;
23376 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23377 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23378 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23379 break;
23380#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023381
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 default:
23383 *ppfnReqCB = NULL;
23384 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 }
23387}/*WDI_ExtractRequestCBFromEvent*/
23388
23389
23390/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 frame xtl is enabled for a particular STA.
23393
23394 WDI_PostAssocReq must have been called.
23395
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 @param uSTAIdx: STA index
23397
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 @see WDI_PostAssocReq
23399 @return Result of the function call
23400*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023401wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023402WDI_IsHwFrameTxTranslationCapable
23403(
23404 wpt_uint8 uSTAIdx
23405)
23406{
Jeff Johnsone7245742012-09-05 17:12:55 -070023407 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 uma value*/
23409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 ------------------------------------------------------------------------*/
23412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23413 {
23414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23415 "WDI API call before module is initialized - Fail request");
23416
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 }
23419
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023420#ifdef WLAN_SOFTAP_VSTA_FEATURE
23421 if (IS_VSTA_IDX(uSTAIdx))
23422 {
23423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23424 "STA %d is a Virtual STA, "
23425 "HW frame translation disabled", uSTAIdx);
23426 return eWLAN_PAL_FALSE;
23427 }
23428#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023429
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 return gWDICb.bFrameTransEnabled;
23431}/*WDI_IsHwFrameTxTranslationCapable*/
23432
23433#ifdef FEATURE_WLAN_SCAN_PNO
23434/**
23435 @brief WDI_SetPreferredNetworkList
23436
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023439
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 wdiPNOScanCb: callback for passing back the response
23441 of the Set PNO operation received from the
23442 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023443
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 callback
23446
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 @return Result of the function call
23448*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023449WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023450WDI_SetPreferredNetworkReq
23451(
23452 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23453 WDI_PNOScanCb wdiPNOScanCb,
23454 void* pUserData
23455)
23456{
23457 WDI_EventInfoType wdiEventData = {{0}};
23458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23459
23460 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 ------------------------------------------------------------------------*/
23463 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23464 {
23465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23466 "WDI API call before module is initialized - Fail request");
23467
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 }
23470
23471 /*------------------------------------------------------------------------
23472 Fill in Event data and post to the Main FSM
23473 ------------------------------------------------------------------------*/
23474 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 wdiEventData.pUserData = pUserData;
23479
23480 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23481}
23482
23483
23484/**
23485 @brief WDI_SetRssiFilterReq
23486
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023489
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 wdiRssiFilterCb: callback for passing back the response
23491 of the Set RSSI Filter operation received from the
23492 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023493
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 callback
23496
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 @return Result of the function call
23498*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023500WDI_SetRssiFilterReq
23501(
23502 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23503 WDI_RssiFilterCb wdiRssiFilterCb,
23504 void* pUserData
23505)
23506{
23507 WDI_EventInfoType wdiEventData = {{0}};
23508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23509
23510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 ------------------------------------------------------------------------*/
23513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23514 {
23515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23516 "WDI API call before module is initialized - Fail request");
23517
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 }
23520
23521 /*------------------------------------------------------------------------
23522 Fill in Event data and post to the Main FSM
23523 ------------------------------------------------------------------------*/
23524 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023527 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 wdiEventData.pUserData = pUserData;
23529
23530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23531}/*WDI_SetRssiFilterReq*/
23532
23533/**
23534 @brief WDI_UpdateScanParamsReq
23535
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023538
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 wdiUpdateScanParamsCb: callback for passing back the response
23540 of the Set PNO operation received from the
23541 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023542
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 callback
23545
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 @return Result of the function call
23547*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023549WDI_UpdateScanParamsReq
23550(
23551 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23552 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23553 void* pUserData
23554)
23555{
23556 WDI_EventInfoType wdiEventData = {{0}};
23557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23558
23559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 ------------------------------------------------------------------------*/
23562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23563 {
23564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23565 "WDI API call before module is initialized - Fail request");
23566
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 }
23569
23570 /*------------------------------------------------------------------------
23571 Fill in Event data and post to the Main FSM
23572 ------------------------------------------------------------------------*/
23573 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 wdiEventData.pUserData = pUserData;
23578
23579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23580}
23581
23582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023585
23586 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 pwdiPNOScanReqParams: pointer to the info received
23588 from upper layers
23589 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 and its size
23591
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 @return Result of the function call
23593*/
23594
23595WDI_Status
23596WDI_PackPreferredNetworkList
23597(
23598 WDI_ControlBlockType* pWDICtx,
23599 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23600 wpt_uint8** ppSendBuffer,
23601 wpt_uint16* pSize
23602)
23603{
Jeff Johnsone7245742012-09-05 17:12:55 -070023604 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023605 wpt_uint16 usDataOffset = 0;
23606 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023607 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 /*-----------------------------------------------------------------------
23610 Get message buffer
23611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023613 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023615 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 {
23617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23618 "Unable to get send buffer in Set PNO req %x ",
23619 pwdiPNOScanReqParams);
23620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023622 }
23623
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023624 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23625
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 /*-------------------------------------------------------------------------
23627 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23628 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023629 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023631 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23633
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023634 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023637 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23639
23640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23643 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23644 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23645
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023646 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 {
23648 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023649 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23651
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023652 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023654 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023655
23656 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023657 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659
23660 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023661 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023663
Jeff Johnsone7245742012-09-05 17:12:55 -070023664 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023666 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023667 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23668 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23669 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23670 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023671
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023672 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023674 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023675
23676 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023677 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23679
23680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023682 pPrefNetwListParams->aNetworks[i].ssId.length,
23683 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 }
23685
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023686 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023687 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023688 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23689 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23690 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23691
23692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023694 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23696 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23697
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023698 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023700 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023702 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23704 }
23705
23706 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023707 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23709 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23710 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023712
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023713 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023715 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023716
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023717 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23719 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23720 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023722
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023723 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023725 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023726
23727 /*Set the output values*/
23728 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023730
23731 return WDI_STATUS_SUCCESS;
23732}/*WDI_PackPreferredNetworkList*/
23733
23734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023737
23738 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 pwdiPNOScanReqParams: pointer to the info received
23740 from upper layers
23741 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 and its size
23743
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 @return Result of the function call
23745*/
23746
23747WDI_Status
23748WDI_PackPreferredNetworkListNew
23749(
23750 WDI_ControlBlockType* pWDICtx,
23751 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23752 wpt_uint8** ppSendBuffer,
23753 wpt_uint16* pSize
23754)
23755{
Jeff Johnsone7245742012-09-05 17:12:55 -070023756 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 wpt_uint16 usDataOffset = 0;
23758 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023759 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023761
23762 /*-----------------------------------------------------------------------
23763 Get message buffer
23764 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023766 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023767 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023768 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 {
23770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23771 "Unable to get send buffer in Set PNO req %x ",
23772 pwdiPNOScanReqParams);
23773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 }
23776
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023777 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23778
Jeff Johnson295189b2012-06-20 16:38:30 -070023779 /*-------------------------------------------------------------------------
23780 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23781 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023782 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023783 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023784 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023785 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23786
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023787 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023788 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023790 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23792
23793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23796 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23797 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23798
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023799 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 {
23801 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023802 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23804
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023805 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023807 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023808
23809 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023810 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023812
23813 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023814 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023816
23817 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023818 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023823 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23825
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023826 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023827 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023828 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023829
23830 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023831 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23833
23834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023835 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023836 pPrefNetwListParams->aNetworks[i].ssId.length,
23837 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 }
23839
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023840 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23843 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23844 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23845
23846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023848 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23850 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23851
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023852 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023854 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023856 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023857 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23858 }
23859
23860 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023861 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23863 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23864 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023866
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023867 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023869 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023870
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023871 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23873 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23874 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023876
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023877 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023879 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023880
Jeff Johnson295189b2012-06-20 16:38:30 -070023881
23882 /*Set the output values*/
23883 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023885
23886 return WDI_STATUS_SUCCESS;
23887}/*WDI_PackPreferredNetworkListNew*/
23888
23889/**
23890 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023891
23892 @param pWDICtx: pointer to the WLAN DAL context
23893 pEventData: pointer to the event information structure
23894
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 @return Result of the function call
23896*/
23897WDI_Status
23898WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023899(
Jeff Johnson295189b2012-06-20 16:38:30 -070023900 WDI_ControlBlockType* pWDICtx,
23901 WDI_EventInfoType* pEventData
23902)
23903{
23904 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23905 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023909
23910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023912 -------------------------------------------------------------------------*/
23913 if (( NULL == pEventData ) ||
23914 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23915 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23916 {
23917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023921 }
23922
23923 /*-------------------------------------------------------------------------
23924 Pack the PNO request structure based on version
23925 -------------------------------------------------------------------------*/
23926 if ( pWDICtx->wdiPNOVersion > 0 )
23927 {
23928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023929 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 pWDICtx->wdiPNOVersion);
23931
23932 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23933 &pSendBuffer, &usSendSize);
23934 }
23935 else
23936 {
23937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023938 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 pWDICtx->wdiPNOVersion);
23940
23941 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23942 &pSendBuffer, &usSendSize);
23943 }
23944
23945 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23946 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23947 {
23948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023949 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 }
23953
23954 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956
23957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023958 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23961 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023962}
23963
23964/**
23965 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023966
23967 @param pWDICtx: pointer to the WLAN DAL context
23968 pEventData: pointer to the event information structure
23969
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 @see
23971 @return Result of the function call
23972*/
23973WDI_Status
23974WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023975(
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 WDI_ControlBlockType* pWDICtx,
23977 WDI_EventInfoType* pEventData
23978)
23979{
23980 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23981 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 wpt_uint16 usDataOffset = 0;
23984 wpt_uint16 usSendSize = 0;
23985 wpt_uint8 ucRssiThreshold;
23986
23987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 -------------------------------------------------------------------------*/
23990 if (( NULL == pEventData ) ||
23991 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23992 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23993 {
23994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 }
23999
24000 /*-----------------------------------------------------------------------
24001 Get message buffer
24002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 sizeof(ucRssiThreshold),
24005 &pSendBuffer, &usDataOffset, &usSendSize))||
24006 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24007 {
24008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24009 "Unable to get send buffer in Set PNO req %x %x %x",
24010 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 }
24014
24015 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24016
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 wpalMemoryCopy( pSendBuffer+usDataOffset,
24018 &ucRssiThreshold,
24019 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024020
24021 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023
24024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024027 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24028 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024029}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024030#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24031/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024032 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024033
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024034 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024035 by the Device Interface
24036
24037 wdiRoamOffloadScancb: callback for passing back the response
24038 of the Roam Candidate Lookup Req operation received from the
24039 device
24040
24041 pUserData: user data will be passed back with the
24042 callback
24043 @return Result of the function call
24044*/
24045WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024046WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024047(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024048 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024049 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24050 void* pUserData
24051)
24052{
24053 WDI_EventInfoType wdiEventData = {{0}};
24054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24055
24056 /*------------------------------------------------------------------------
24057 Sanity Check
24058 ------------------------------------------------------------------------*/
24059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24060 {
24061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24062 "WDI API call before module is initialized - Fail request");
24063
24064 return WDI_STATUS_E_NOT_ALLOWED;
24065 }
24066
24067 /*------------------------------------------------------------------------
24068 Fill in Event data and post to the Main FSM
24069 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024070 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24071 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24072 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024073 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24074 wdiEventData.pUserData = pUserData;
24075
24076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24077}
24078
24079void
24080WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24081{
24082 switch (wdiEdType)
24083 {
24084 case WDI_ED_NONE:
24085 *EdType = eED_NONE;
24086 break;
24087 case WDI_ED_WEP40:
24088 case WDI_ED_WEP104:
24089 *EdType = eED_WEP;
24090 break;
24091 case WDI_ED_TKIP:
24092 *EdType = eED_TKIP;
24093 break;
24094 case WDI_ED_CCMP:
24095#ifdef WLAN_FEATURE_11W
24096 case WDI_ED_AES_128_CMAC:
24097#endif
24098 *EdType = eED_CCMP;
24099 break;
24100#ifdef FEATURE_WLAN_WAPI
24101 case WDI_ED_WPI:
24102 *EdType = eED_WPI;
24103 break;
24104#endif
24105 case WDI_ED_ANY:
24106 *EdType = eED_ANY;
24107 break;
24108
24109 default:
24110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24111 "%s: Unknown Encryption Type", __func__);
24112 break;
24113 }
24114}
24115
24116/**
24117 @brief Helper function to pack Start Roam Candidate Lookup
24118 Request parameters
24119
24120 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024121 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024122 from upper layers
24123 ppSendBuffer, pSize - out pointers of the packed buffer
24124 and its size
24125
24126 @return Result of the function call
24127*/
24128
24129WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024130WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024131(
24132 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024133 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024134 wpt_uint8** ppSendBuffer,
24135 wpt_uint16* pSize
24136)
24137{
24138 wpt_uint8* pSendBuffer = NULL;
24139 wpt_uint16 usDataOffset = 0;
24140 wpt_uint16 usSendSize = 0;
24141 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24142 wpt_uint8 i;
24143 /*-----------------------------------------------------------------------
24144 Get message buffer
24145 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024147 sizeof(tRoamCandidateListParams),
24148 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024149 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024150 {
24151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24152 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024153 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024154 WDI_ASSERT(0);
24155 return WDI_STATUS_E_FAILURE;
24156 }
24157 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024158 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024159 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024160 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024161 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024162 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024163 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024164 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024165 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024166 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024167 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024168
24169 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024170 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024171 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024172 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024173 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24174 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024175 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24176 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24177 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24178 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24179 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24180 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24181 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24182 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24183 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24184 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24185 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24186 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24187 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24188 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024189 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024190 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24191 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24192 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024193
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24195 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24196 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24197 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24198 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24199 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24200 "HomeAwayTime=%d\n",
24201 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24202 pRoamCandidateListParams->RoamScanOffloadEnabled,
24203 pRoamCandidateListParams->Command,
24204 pRoamCandidateListParams->StartScanReason,
24205 pRoamCandidateListParams->NeighborScanTimerPeriod,
24206 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24207 pRoamCandidateListParams->NeighborScanChannelMinTime,
24208 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24209 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24210 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24211 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24212 pRoamCandidateListParams->ConnectedNetwork.authentication,
24213 pRoamCandidateListParams->ConnectedNetwork.encryption,
24214 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24215 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24216 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024217 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024218 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024219 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024220 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024221 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24222 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024223 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024224 pRoamCandidateListParams->us24GProbeSize);
24225 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024226 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024227 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024228 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024229 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24230 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024231 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024232 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024233 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24234 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24235 pRoamCandidateListParams->nProbes =
24236 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24237 pRoamCandidateListParams->HomeAwayTime =
24238 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024240 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24241 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024243 }
24244
24245
24246 /*Set the output values*/
24247 *ppSendBuffer = pSendBuffer;
24248 *pSize = usSendSize;
24249 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024250}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024251
24252/**
24253 @brief Process Start Roam Candidate Lookup Request function
24254
24255 @param pWDICtx: pointer to the WLAN DAL context
24256 pEventData: pointer to the event information structure
24257
24258 @return Result of the function call
24259*/
24260WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024261WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024262(
24263 WDI_ControlBlockType* pWDICtx,
24264 WDI_EventInfoType* pEventData
24265)
24266{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024267 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024268 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24269 wpt_uint8* pSendBuffer = NULL;
24270 wpt_uint16 usSendSize = 0;
24271 WDI_Status wdiStatus;
24272 /*-------------------------------------------------------------------------
24273 Sanity check
24274 -------------------------------------------------------------------------*/
24275 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024276 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024277 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24278 {
24279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24280 "%s: Invalid parameters", __func__);
24281 WDI_ASSERT(0);
24282 return WDI_STATUS_E_FAILURE;
24283 }
24284
24285 /*-------------------------------------------------------------------------
24286 Pack the Start Roam Candidate Lookup request structure based on version
24287 -------------------------------------------------------------------------*/
24288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24289 "%s: Packing Roam Candidate Lookup request ", __func__);
24290
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024291 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024292 &pSendBuffer, &usSendSize);
24293
24294 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24295 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24296 {
24297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24298 "%s: failed to pack request parameters", __func__);
24299 WDI_ASSERT(0);
24300 return wdiStatus;
24301 }
24302
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024303 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24304 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024305
24306 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024307 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024308 -------------------------------------------------------------------------*/
24309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024310 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024311}
24312
24313/**
24314 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24315 response is being received over the bus from HAL)
24316
24317 @param pWDICtx: pointer to the WLAN DAL context
24318 pEventData: pointer to the event information structure
24319
24320 @see
24321 @return Result of the function call
24322*/
24323WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024324WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024325(
24326 WDI_ControlBlockType* pWDICtx,
24327 WDI_EventInfoType* pEventData
24328)
24329{
24330 WDI_Status wdiStatus;
24331 eHalStatus halStatus;
24332 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24333
24334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24335
24336 /*-------------------------------------------------------------------------
24337 Sanity check
24338 -------------------------------------------------------------------------*/
24339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24340 ( NULL == pEventData->pEventData ))
24341 {
24342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24343 "%s: Invalid parameters", __func__);
24344 WDI_ASSERT(0);
24345 return WDI_STATUS_E_FAILURE;
24346 }
24347
24348 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24349
24350 /*-------------------------------------------------------------------------
24351 Extract response and send it to UMAC
24352 -------------------------------------------------------------------------*/
24353 halStatus = *((eHalStatus*)pEventData->pEventData);
24354 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24355
24356 /*Notify UMAC*/
24357 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24358
24359 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024360}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024361#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024362
24363/**
24364 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024365
24366 @param pWDICtx: pointer to the WLAN DAL context
24367 pEventData: pointer to the event information structure
24368
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 @see
24370 @return Result of the function call
24371*/
24372WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024373WDI_PackUpdateScanParamsReq
24374(
24375 WDI_ControlBlockType* pWDICtx,
24376 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24377 wpt_uint8** ppSendBuffer,
24378 wpt_uint16* pSize
24379)
24380{
24381 wpt_uint8* pSendBuffer = NULL;
24382 wpt_uint16 usDataOffset = 0;
24383 wpt_uint16 usSendSize = 0;
24384 tUpdateScanParams updateScanParams = {0};
24385
24386
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024388 "Begin WDI Update Scan Parameters Old Style Params");
24389 /*-----------------------------------------------------------------------
24390 Get message buffer
24391 -----------------------------------------------------------------------*/
24392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24393 sizeof(updateScanParams),
24394 &pSendBuffer, &usDataOffset, &usSendSize))||
24395 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24396 {
24397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24398 "Unable to get send buffer in Update Scan Params req %x",
24399 pwdiUpdateScanParams);
24400 WDI_ASSERT(0);
24401 return WDI_STATUS_E_FAILURE;
24402 }
24403
24404 //
24405 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24406 //
24407
24408 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24409 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24410
24411 updateScanParams.ucChannelCount =
24412 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24413 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24414 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24415 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24416
24417 wpalMemoryCopy( updateScanParams.aChannels,
24418 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24419 updateScanParams.ucChannelCount);
24420
24421
24422 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24423 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24424 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24425 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24426 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24427
24428 wpalMemoryCopy( pSendBuffer+usDataOffset,
24429 &updateScanParams,
24430 sizeof(updateScanParams));
24431
24432 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24433 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24434
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024436 "End Update Scan Parameters Old Style");
24437
24438 /*Set the output values*/
24439 *ppSendBuffer = pSendBuffer;
24440 *pSize = usSendSize;
24441
24442 return WDI_STATUS_SUCCESS;
24443}
24444
24445/**
24446 @brief Process Update Scan Params function
24447
24448 @param pWDICtx: pointer to the WLAN DAL context
24449 pEventData: pointer to the event information structure
24450
24451 @see
24452 @return Result of the function call
24453*/
24454WDI_Status
24455WDI_PackUpdateScanParamsReqEx
24456(
24457 WDI_ControlBlockType* pWDICtx,
24458 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24459 wpt_uint8** ppSendBuffer,
24460 wpt_uint16* pSize
24461)
24462{
24463 wpt_uint8* pSendBuffer = NULL;
24464 wpt_uint16 usDataOffset = 0;
24465 wpt_uint16 usSendSize = 0;
24466 tUpdateScanParamsEx updateScanParams = {0};
24467
24468
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024469 /*-----------------------------------------------------------------------
24470 Get message buffer
24471 -----------------------------------------------------------------------*/
24472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24473 sizeof(updateScanParams),
24474 &pSendBuffer, &usDataOffset, &usSendSize))||
24475 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24476 {
24477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24478 "Unable to get send buffer in Update Scan Params Ex req %x",
24479 pwdiUpdateScanParams);
24480 WDI_ASSERT(0);
24481 return WDI_STATUS_E_FAILURE;
24482 }
24483
24484 //
24485 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24486 //
24487
24488 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24489 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24490
24491 updateScanParams.ucChannelCount =
24492 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24493 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24494 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24495 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24496
24497 wpalMemoryCopy( updateScanParams.aChannels,
24498 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24499 updateScanParams.ucChannelCount);
24500
24501
24502 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24503 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24504 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24505 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24506 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24507
24508 wpalMemoryCopy( pSendBuffer+usDataOffset,
24509 &updateScanParams,
24510 sizeof(updateScanParams));
24511
24512 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24513 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24514
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024515 /*Set the output values*/
24516 *ppSendBuffer = pSendBuffer;
24517 *pSize = usSendSize;
24518
24519 return WDI_STATUS_SUCCESS;
24520}
24521
24522/**
24523 @brief Process Update Scan Params function
24524
24525 @param pWDICtx: pointer to the WLAN DAL context
24526 pEventData: pointer to the event information structure
24527
24528 @see
24529 @return Result of the function call
24530*/
24531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024532WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024533(
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 WDI_ControlBlockType* pWDICtx,
24535 WDI_EventInfoType* pEventData
24536)
24537{
24538 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24539 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024542 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543
24544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 -------------------------------------------------------------------------*/
24547 if (( NULL == pEventData ) ||
24548 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24549 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24550 {
24551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 }
24556
24557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24558 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024559
24560 //
24561 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24562 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024563 if ( pWDICtx->wlanVersion.revision < 1 )
24564 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024565 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024566 &pSendBuffer, &usSendSize);
24567 }
24568 else
24569 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024570 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24571 &pSendBuffer, &usSendSize);
24572 }
24573
24574 if(WDI_STATUS_SUCCESS != wdiStatus)
24575 {
24576 //memory allocation failed
24577 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024578 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024579
Jeff Johnson295189b2012-06-20 16:38:30 -070024580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024583 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024584 wdiUpdateScanParamsCb, pEventData->pUserData,
24585 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024586}
24587
24588/**
24589 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024590
24591 @param pWDICtx: pointer to the WLAN DAL context
24592 pEventData: pointer to the event information structure
24593
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 @see
24595 @return Result of the function call
24596*/
24597WDI_Status
24598WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024599(
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 WDI_ControlBlockType* pWDICtx,
24601 WDI_EventInfoType* pEventData
24602)
24603{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024604 WDI_LowLevelIndType wdiInd;
24605 tpPrefNetwFoundParams pNetwFoundParams;
24606 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024607
24608
24609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 -------------------------------------------------------------------------*/
24612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24613 ( NULL == pEventData->pEventData ))
24614 {
24615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024617 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 }
24620
24621 /*-------------------------------------------------------------------------
24622 Extract indication and send it to UMAC
24623 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024624 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24625
24626 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24627 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24628 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24629
24630 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24631 {
24632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24633 "%s: fail to allocate memory", __func__);
24634 return WDI_STATUS_MEM_FAILURE;
24635 }
24636
24637 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24638 (pNetwFoundParams->ssId.length < 32 )?
24639 pNetwFoundParams->ssId.length : 32;
24640 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24641 pNetwFoundParams->ssId.ssId,
24642 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24643 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24644 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24645 pNetwFoundParams->frameLength;
24646 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24647 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24648 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024649
24650 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024651 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024652
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 // DEBUG
24654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24655 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24656 wdiInd.wdiIndicationType,
24657 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24658 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24659
ltimariu034f7d62013-01-24 18:54:33 -080024660 if ( pWDICtx->wdiLowLevelIndCB )
24661 {
24662 /*Notify UMAC*/
24663 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24664 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024665
24666 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024667}
24668
24669/**
24670 @brief Process PNO Rsp function (called when a
24671 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024672
24673 @param pWDICtx: pointer to the WLAN DAL context
24674 pEventData: pointer to the event information structure
24675
Jeff Johnson295189b2012-06-20 16:38:30 -070024676 @see
24677 @return Result of the function call
24678*/
24679WDI_Status
24680WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024681(
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 WDI_ControlBlockType* pWDICtx,
24683 WDI_EventInfoType* pEventData
24684)
24685{
24686 WDI_Status wdiStatus;
24687 eHalStatus halStatus;
24688 WDI_PNOScanCb wdiPNOScanCb = NULL;
24689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24690
24691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024693 -------------------------------------------------------------------------*/
24694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24695 ( NULL == pEventData->pEventData ))
24696 {
24697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 }
24702
24703
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024705
24706 /*-------------------------------------------------------------------------
24707 Extract response and send it to UMAC
24708 -------------------------------------------------------------------------*/
24709 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024710 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024711
24712 /*Notify UMAC*/
24713 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24714
Jeff Johnsone7245742012-09-05 17:12:55 -070024715 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024716}/*WDI_ProcessSetPreferredNetworkRsp*/
24717
24718/**
24719 @brief Process RSSI Filter Rsp function (called when a
24720 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024721
24722 @param pWDICtx: pointer to the WLAN DAL context
24723 pEventData: pointer to the event information structure
24724
Jeff Johnson295189b2012-06-20 16:38:30 -070024725 @see
24726 @return Result of the function call
24727*/
24728WDI_Status
24729WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024730(
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 WDI_ControlBlockType* pWDICtx,
24732 WDI_EventInfoType* pEventData
24733)
24734{
24735 WDI_Status wdiStatus;
24736 eHalStatus halStatus;
24737 WDI_RssiFilterCb wdiRssiFilterCb;
24738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24739
24740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024742 -------------------------------------------------------------------------*/
24743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24744 ( NULL == pEventData->pEventData ))
24745 {
24746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 }
24751
Jeff Johnsone7245742012-09-05 17:12:55 -070024752 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024753
24754 /*-------------------------------------------------------------------------
24755 Extract response and send it to UMAC
24756 -------------------------------------------------------------------------*/
24757 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024758 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024759
24760 /*Notify UMAC*/
24761 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24762
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024764}/*WDI_ProcessSetRssiFilterRsp*/
24765
24766/**
24767 @brief Process Update Scan Params Rsp function (called when a
24768 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024769
24770 @param pWDICtx: pointer to the WLAN DAL context
24771 pEventData: pointer to the event information structure
24772
Jeff Johnson295189b2012-06-20 16:38:30 -070024773 @see
24774 @return Result of the function call
24775*/
24776WDI_Status
24777WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024778(
Jeff Johnson295189b2012-06-20 16:38:30 -070024779 WDI_ControlBlockType* pWDICtx,
24780 WDI_EventInfoType* pEventData
24781)
24782{
24783 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024784 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24788
24789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024791 -------------------------------------------------------------------------*/
24792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24793 ( NULL == pEventData->pEventData ))
24794 {
24795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024799 }
24800
24801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024802 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024803
Jeff Johnsone7245742012-09-05 17:12:55 -070024804 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024805
24806 /*-------------------------------------------------------------------------
24807 Extract response and send it to UMAC
24808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024809 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24810 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024811 sizeof(halUpdScanParams.status));
24812
24813 uStatus = halUpdScanParams.status;
24814
24815 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024816 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024817
24818 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024819 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024820
Jeff Johnsone7245742012-09-05 17:12:55 -070024821 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024822
24823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024824 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 halUpdScanParams.status);
24826
24827 /*Notify UMAC*/
24828 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24829
Jeff Johnsone7245742012-09-05 17:12:55 -070024830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024831}
24832#endif // FEATURE_WLAN_SCAN_PNO
24833
24834#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024835WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024836WDI_8023MulticastListReq
24837(
24838 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24839 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24840 void* pUserData
24841)
24842{
24843 WDI_EventInfoType wdiEventData;
24844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24845
24846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024847 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024848
24849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024850 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 ------------------------------------------------------------------------*/
24852 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24853 {
24854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24855 "WDI API call before module is initialized - Fail request");
24856
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024858 }
24859
24860 /*------------------------------------------------------------------------
24861 Fill in Event data and post to the Main FSM
24862 ------------------------------------------------------------------------*/
24863 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024864 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024866 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 wdiEventData.pUserData = pUserData;
24868
24869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24870}
24871
Jeff Johnsone7245742012-09-05 17:12:55 -070024872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024873WDI_ReceiveFilterSetFilterReq
24874(
24875 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24876 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24877 void* pUserData
24878)
24879{
24880 WDI_EventInfoType wdiEventData;
24881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24882
24883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024884 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024885
24886 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024887 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 ------------------------------------------------------------------------*/
24889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24890 {
24891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24892 "WDI API call before module is initialized - Fail request");
24893
Jeff Johnsone7245742012-09-05 17:12:55 -070024894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024895 }
24896
24897 /*------------------------------------------------------------------------
24898 Fill in Event data and post to the Main FSM
24899 ------------------------------------------------------------------------*/
24900 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024901 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24902 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024903 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24904 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024905 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024906 wdiEventData.pUserData = pUserData;
24907
24908
24909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24910}
24911
Jeff Johnsone7245742012-09-05 17:12:55 -070024912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024913WDI_FilterMatchCountReq
24914(
24915 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24916 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24917 void* pUserData
24918)
24919{
24920 WDI_EventInfoType wdiEventData;
24921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24922
24923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024924 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024925
24926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024927 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 ------------------------------------------------------------------------*/
24929 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24930 {
24931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24932 "WDI API call before module is initialized - Fail request");
24933
Jeff Johnsone7245742012-09-05 17:12:55 -070024934 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024935 }
24936
24937 /*------------------------------------------------------------------------
24938 Fill in Event data and post to the Main FSM
24939 ------------------------------------------------------------------------*/
24940 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024942 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 wdiEventData.pUserData = pUserData;
24945
24946
24947 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24948}
24949
Jeff Johnsone7245742012-09-05 17:12:55 -070024950WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024951WDI_ReceiveFilterClearFilterReq
24952(
24953 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24954 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24955 void* pUserData
24956)
24957{
24958 WDI_EventInfoType wdiEventData;
24959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24960
24961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024962 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024963
24964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 ------------------------------------------------------------------------*/
24967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24968 {
24969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24970 "WDI API call before module is initialized - Fail request");
24971
Jeff Johnsone7245742012-09-05 17:12:55 -070024972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 }
24974
24975 /*------------------------------------------------------------------------
24976 Fill in Event data and post to the Main FSM
24977 ------------------------------------------------------------------------*/
24978 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024979 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 wdiEventData.pUserData = pUserData;
24983
24984
24985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24986}
24987
24988/**
24989 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024990
24991 @param pWDICtx: pointer to the WLAN DAL context
24992 pEventData: pointer to the event information structure
24993
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 @see
24995 @return Result of the function call
24996*/
24997WDI_Status
24998WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024999(
Jeff Johnson295189b2012-06-20 16:38:30 -070025000 WDI_ControlBlockType* pWDICtx,
25001 WDI_EventInfoType* pEventData
25002)
25003{
25004 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25005 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025006 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 wpt_uint16 usDataOffset = 0;
25008 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025009 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025010 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025011 wpt_uint8 ucCurrentBSSSesIdx = 0;
25012 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025013
25014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025015 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025016
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025017 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25018 if( NULL == pRcvFltMcAddrListType )
25019 {
25020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25021 "Failed to alloc in WDI_Process8023MulticastListReq");
25022 return WDI_STATUS_E_FAILURE;
25023 }
25024
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025027 -------------------------------------------------------------------------*/
25028 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025029 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025031 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025032 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25033 {
25034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025035 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025036 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025038 return WDI_STATUS_E_FAILURE;
25039 }
25040
25041 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25042 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25043 &pBSSSes);
25044 if ( NULL == pBSSSes )
25045 {
25046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025047 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025048 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 }
25051
25052 /*-----------------------------------------------------------------------
25053 Get message buffer
25054 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25056 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025057 sizeof(tHalRcvFltMcAddrListType),
25058 &pSendBuffer, &usDataOffset, &usSendSize))||
25059 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25060 {
25061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25062 "Unable to get send buffer in "
25063 "WDI_Process8023MulticastListReq() %x %x %x",
25064 pEventData, pwdiFltPktSetMcListReqParamsType,
25065 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025066 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 }
25070
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025071 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025072 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025073 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025074 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025075 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025076 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25077 sizeof(tSirMacAddr));
25078 }
25079
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025080 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025081 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025082 pRcvFltMcAddrListType,
25083 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025084
25085 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025087
25088
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025089 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025095 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025096}
25097
25098/**
25099 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025100
25101 @param pWDICtx: pointer to the WLAN DAL context
25102 pEventData: pointer to the event information structure
25103
Jeff Johnson295189b2012-06-20 16:38:30 -070025104 @see
25105 @return Result of the function call
25106*/
25107WDI_Status
25108WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025109(
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 WDI_ControlBlockType* pWDICtx,
25111 WDI_EventInfoType* pEventData
25112)
25113{
25114 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25115 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025116 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 wpt_uint16 usDataOffset = 0;
25118 wpt_uint16 usSendSize = 0;
25119 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025120 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025121 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025122 wpt_uint8 ucCurrentBSSSesIdx = 0;
25123 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025124 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25125 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025126
25127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025128 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025129
25130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025132 -------------------------------------------------------------------------*/
25133 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025134 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025135 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025136 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25138 {
25139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 return WDI_STATUS_E_FAILURE;
25143 }
25144
25145 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25146 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25147 &pBSSSes);
25148 if ( NULL == pBSSSes )
25149 {
25150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025151 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 }
25154
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025155 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25156 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025157
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025158 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25159 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25160 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25161
25162 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25163 usSessRcvPktFilterCfgSize);
25164
25165 if(NULL == pSessRcvPktFilterCfg)
25166 {
25167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25168 "%s: Failed to allocate memory for "
25169 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025170 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025171 WDI_ASSERT(0);
25172 return WDI_STATUS_E_FAILURE;
25173 }
25174
25175 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25176
25177 /*-----------------------------------------------------------------------
25178 Get message buffer
25179 -----------------------------------------------------------------------*/
25180
25181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25182 usSessRcvPktFilterCfgSize,
25183 &pSendBuffer, &usDataOffset, &usSendSize))||
25184 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25185 {
25186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25187 "Unable to get send buffer in "
25188 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25189 pEventData, pwdiSetRcvPktFilterReqInfo,
25190 wdiReceiveFilterSetFilterCb);
25191 WDI_ASSERT(0);
25192 wpalMemoryFree(pSessRcvPktFilterCfg);
25193 return WDI_STATUS_E_FAILURE;
25194 }
25195
25196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25197 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25198 usSendSize,pSessRcvPktFilterCfg);
25199
25200 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25201 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25202 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25203 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25204
25205 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25206
25207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25208 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25209 pSessRcvPktFilterCfg->filterType);
25210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25211 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25212 pSessRcvPktFilterCfg->coleasceTime);
25213
25214 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25215 {
25216 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25217 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25218 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25219 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25220 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25221 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25222 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25223 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25224
25225 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25226 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25227 8);
25228 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25229 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25230 8);
25231
25232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25233 "Out:Proto %d Comp Flag %d \n",
25234 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25235 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25236
25237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25238 "Data Offset %d Data Len %d\n",
25239 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25240 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25241
25242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25243 "CData: %d:%d:%d:%d:%d:%d\n",
25244 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25245 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25246 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25247 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25248 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25249 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25250
25251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25252 "MData: %d:%d:%d:%d:%d:%d\n",
25253 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25254 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25255 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25256 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25257 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25258 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25259 }
25260
25261 wpalMemoryCopy( pSendBuffer+usDataOffset,
25262 pSessRcvPktFilterCfg,
25263 usSessRcvPktFilterCfgSize);
25264
25265
25266 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25267 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25268
25269 wpalMemoryFree(pSessRcvPktFilterCfg);
25270
25271 }
25272 /*If SLM_SESSIONIZATION is not supported then do this */
25273 else
25274 {
25275 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25276 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25277 * sizeof(tHalRcvPktFilterParams));
25278
25279 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 usRcvPktFilterCfgSize);
25281
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025282 if(NULL == pRcvPktFilterCfg)
25283 {
25284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25285 "%s: Failed to allocate memory for "
25286 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025287 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025288 WDI_ASSERT(0);
25289 return WDI_STATUS_E_FAILURE;
25290 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025291
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025292 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025293
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025294 /*-----------------------------------------------------------------------
25295 Get message buffer
25296 -----------------------------------------------------------------------*/
25297 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 usRcvPktFilterCfgSize,
25299 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025300 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25301 {
25302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025303 "Unable to get send buffer in "
25304 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25305 pEventData, pwdiSetRcvPktFilterReqInfo,
25306 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025307 WDI_ASSERT(0);
25308 wpalMemoryFree(pRcvPktFilterCfg);
25309 return WDI_STATUS_E_FAILURE;
25310 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025313 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025314 usSendSize,usRcvPktFilterCfgSize);
25315
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025316 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25317 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25318 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25319 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025320
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025322 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025326 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025327
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025328 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25329 {
25330 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25331 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25332 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25333 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25334 pRcvPktFilterCfg->paramsData[i].dataOffset =
25335 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25336 pRcvPktFilterCfg->paramsData[i].dataLength =
25337 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025339 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25341 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025342 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025343 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25344 8);
25345
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025348 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025349 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25350
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25352 "Data Offset %d Data Len %d\n",
25353 pRcvPktFilterCfg->paramsData[i].dataOffset,
25354 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025355
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25357 "CData: %d:%d:%d:%d:%d:%d\n",
25358 pRcvPktFilterCfg->paramsData[i].compareData[0],
25359 pRcvPktFilterCfg->paramsData[i].compareData[1],
25360 pRcvPktFilterCfg->paramsData[i].compareData[2],
25361 pRcvPktFilterCfg->paramsData[i].compareData[3],
25362 pRcvPktFilterCfg->paramsData[i].compareData[4],
25363 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025364
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25366 "MData: %d:%d:%d:%d:%d:%d\n",
25367 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25368 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25369 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25370 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25371 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25372 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25373 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025374
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025375 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025376 pRcvPktFilterCfg,
25377 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025378
25379
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025380 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25381 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
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_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025384 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025385 wpalMemoryFree(pRcvPktFilterCfg);
25386 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025388 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025392 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025393}
25394
25395/**
25396 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025397
25398 @param pWDICtx: pointer to the WLAN DAL context
25399 pEventData: pointer to the event information structure
25400
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 @see
25402 @return Result of the function call
25403*/
25404WDI_Status
25405WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025406(
Jeff Johnson295189b2012-06-20 16:38:30 -070025407 WDI_ControlBlockType* pWDICtx,
25408 WDI_EventInfoType* pEventData
25409)
25410{
25411 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25412 NULL;
25413 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25414 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025415 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025416 wpt_uint16 usDataOffset = 0;
25417 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025418 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25419 wpt_uint8 ucCurrentBSSSesIdx = 0;
25420 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025421
25422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025423 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025424
25425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 -------------------------------------------------------------------------*/
25428 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025429 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025431 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025432 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25433 {
25434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 }
25439
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025440 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25441 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25442 &pBSSSes);
25443 if ( NULL == pBSSSes )
25444 {
25445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025446 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025447 return WDI_STATUS_E_FAILURE;
25448 }
25449
Jeff Johnson295189b2012-06-20 16:38:30 -070025450 /*-----------------------------------------------------------------------
25451 Get message buffer
25452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25454 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025455 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025457 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025458 {
25459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25460 "Unable to get send buffer in "
25461 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25462 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25463 wdiFilterMatchCountCb);
25464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025466 }
25467
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025468 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25469 wpalMemoryCopy( pSendBuffer+usDataOffset,
25470 &rcvFltPktMatchCntReqParam,
25471 sizeof(rcvFltPktMatchCntReqParam));
25472
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 //
25474 // Don't need to fill send buffer other than header
25475 //
25476 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025477 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025478
25479
25480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025481 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025482 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25484 wdiFilterMatchCountCb,
25485 pEventData->pUserData,
25486 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025487}
25488
25489/**
25490 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025491
25492 @param pWDICtx: pointer to the WLAN DAL context
25493 pEventData: pointer to the event information structure
25494
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 @see
25496 @return Result of the function call
25497*/
25498WDI_Status
25499WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025500(
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 WDI_ControlBlockType* pWDICtx,
25502 WDI_EventInfoType* pEventData
25503)
Jeff Johnsone7245742012-09-05 17:12:55 -070025504{
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25506 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 wpt_uint16 usDataOffset = 0;
25509 wpt_uint16 usSendSize = 0;
25510 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025511 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025512 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025513
25514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025515 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025516
25517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025519 -------------------------------------------------------------------------*/
25520 if (( NULL == pEventData ) ||
25521 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25522 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025523 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025524 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25525 {
25526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 return WDI_STATUS_E_FAILURE;
25530 }
25531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025532 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25534 &pBSSSes);
25535 if ( NULL == pBSSSes )
25536 {
25537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025538 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 }
25541
25542 /*-----------------------------------------------------------------------
25543 Get message buffer
25544 -----------------------------------------------------------------------*/
25545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025546 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 sizeof(tHalRcvFltPktClearParam),
25548 &pSendBuffer, &usDataOffset, &usSendSize))||
25549 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25550 {
25551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25552 "Unable to get send buffer in "
25553 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25554 pEventData, pwdiRcvFltPktClearReqParamsType,
25555 wdiRcvFltPktClearFilterCb);
25556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 }
25559
25560
25561 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25567 wpalMemoryCopy( pSendBuffer+usDataOffset,
25568 &rcvFltPktClearParam,
25569 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025570
25571 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573
25574
25575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025576 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025578 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025581}
25582
25583/**
25584 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025585
25586 @param pWDICtx: pointer to the WLAN DAL context
25587 pEventData: pointer to the event information structure
25588
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 @see
25590 @return Result of the function call
25591*/
25592WDI_Status
25593WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025594(
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 WDI_ControlBlockType* pWDICtx,
25596 WDI_EventInfoType* pEventData
25597)
25598{
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 eHalStatus halStatus;
25600 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025601 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25602 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25604
25605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025606 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025607
25608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 -------------------------------------------------------------------------*/
25611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25612 ( NULL == pEventData->pEventData ))
25613 {
25614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 }
25619
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025621
25622 /*-------------------------------------------------------------------------
25623 Extract response and send it to UMAC
25624 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025625 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25626 {
25627 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25628 pEventData->pEventData,
25629 sizeof(halRcvFltPktSetMcListRsp));
25630
25631 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25632 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25633 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25634 halRcvFltPktSetMcListRsp.bssIdx;
25635 }
25636 else
25637 {
25638 halStatus = *((eHalStatus*)pEventData->pEventData);
25639 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25640 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025641
25642 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025643 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025644
Jeff Johnsone7245742012-09-05 17:12:55 -070025645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025646}
25647
25648/**
25649 @brief Process Set Rsp function (called when a
25650 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025651
25652 @param pWDICtx: pointer to the WLAN DAL context
25653 pEventData: pointer to the event information structure
25654
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 @see
25656 @return Result of the function call
25657*/
25658WDI_Status
25659WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025660(
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 WDI_ControlBlockType* pWDICtx,
25662 WDI_EventInfoType* pEventData
25663)
25664{
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 eHalStatus halStatus;
25666 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025667 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25668 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25670
25671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025672 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025673
25674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 -------------------------------------------------------------------------*/
25677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25678 ( NULL == pEventData->pEventData ))
25679 {
25680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 }
25685
25686 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025688
25689 /*-------------------------------------------------------------------------
25690 Extract response and send it to UMAC
25691 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025692 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25693 {
25694 wpalMemoryCopy( &halSetPktFilterRspParams,
25695 pEventData->pEventData,
25696 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025697
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025698 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25699 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25700 }
25701 else
25702 {
25703 halStatus = *((eHalStatus*)pEventData->pEventData);
25704 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25705 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025706 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025707 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025708
Jeff Johnsone7245742012-09-05 17:12:55 -070025709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025710}
25711
25712/**
25713 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025714
25715 @param pWDICtx: pointer to the WLAN DAL context
25716 pEventData: pointer to the event information structure
25717
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 @see
25719 @return Result of the function call
25720*/
25721WDI_Status
25722WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025723(
Jeff Johnson295189b2012-06-20 16:38:30 -070025724 WDI_ControlBlockType* pWDICtx,
25725 WDI_EventInfoType* pEventData
25726)
25727{
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025730 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25731 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025732
25733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25734
25735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025736 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025737
25738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 -------------------------------------------------------------------------*/
25741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25742 ( NULL == pEventData->pEventData ))
25743 {
25744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025748 }
25749
Jeff Johnsone7245742012-09-05 17:12:55 -070025750 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025751
25752 /*-------------------------------------------------------------------------
25753 Extract response and send it to UMAC
25754 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025755 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25756 {
25757 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25758 pEventData->pEventData,
25759 sizeof(halRcvFltrPktMatachRsp));
25760
25761 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25762 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25763 }
25764 else
25765 {
25766 halStatus = *((eHalStatus*)pEventData->pEventData);
25767 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25768 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025769
25770 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025771 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025772
Jeff Johnsone7245742012-09-05 17:12:55 -070025773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025774}
25775
25776/**
25777 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025778
25779 @param pWDICtx: pointer to the WLAN DAL context
25780 pEventData: pointer to the event information structure
25781
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 @see
25783 @return Result of the function call
25784*/
25785WDI_Status
25786WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025787(
Jeff Johnson295189b2012-06-20 16:38:30 -070025788 WDI_ControlBlockType* pWDICtx,
25789 WDI_EventInfoType* pEventData
25790)
25791{
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 eHalStatus halStatus;
25793 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025794 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25795 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25797
25798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025799 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025800
25801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 -------------------------------------------------------------------------*/
25804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25805 ( NULL == pEventData->pEventData ))
25806 {
25807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025811 }
25812
25813 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025814 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025815
25816 /*-------------------------------------------------------------------------
25817 Extract response and send it to UMAC
25818 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025819 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25820 {
25821 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25822 pEventData->pEventData,
25823 sizeof(halRcvFltPktClearRspMsg));
25824
25825 wdiRcvFltPktClearRspParamsType.wdiStatus =
25826 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25827 wdiRcvFltPktClearRspParamsType.bssIdx =
25828 halRcvFltPktClearRspMsg.bssIdx;
25829 }
25830 else
25831 {
25832 halStatus = *((eHalStatus*)pEventData->pEventData);
25833 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25834 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025835
25836 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025837 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025838
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025840}
25841#endif // WLAN_FEATURE_PACKET_FILTERING
25842
25843/**
25844 @brief Process Shutdown Rsp function
25845 There is no shutdown response comming from HAL
25846 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025847
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025849 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025850
25851 @see
25852 @return Result of the function call
25853*/
25854WDI_Status
25855WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025856(
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 WDI_ControlBlockType* pWDICtx,
25858 WDI_EventInfoType* pEventData
25859)
25860{
25861 /*There is no shutdown response comming from HAL - function just kept for
25862 simmetry */
25863 WDI_ASSERT(0);
25864 return WDI_STATUS_SUCCESS;
25865}/*WDI_ProcessShutdownRsp*/
25866
25867/**
25868 @brief WDI_SetPowerParamsReq
25869
Jeff Johnsone7245742012-09-05 17:12:55 -070025870 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025872
Jeff Johnson295189b2012-06-20 16:38:30 -070025873 wdiPowerParamsCb: callback for passing back the response
25874 of the Set Power Params operation received from the
25875 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025876
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 callback
25879
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 @return Result of the function call
25881*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025882WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025883WDI_SetPowerParamsReq
25884(
25885 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25886 WDI_SetPowerParamsCb wdiPowerParamsCb,
25887 void* pUserData
25888)
25889{
25890 WDI_EventInfoType wdiEventData;
25891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25892
25893 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025894 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 ------------------------------------------------------------------------*/
25896 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25897 {
25898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25899 "WDI API call before module is initialized - Fail request");
25900
Jeff Johnsone7245742012-09-05 17:12:55 -070025901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025902 }
25903
25904 /*------------------------------------------------------------------------
25905 Fill in Event data and post to the Main FSM
25906 ------------------------------------------------------------------------*/
25907 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025908 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025910 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 wdiEventData.pUserData = pUserData;
25912
25913 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25914}/*WDI_SetPowerParamsReq*/
25915
25916/**
25917 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025918
25919 @param pWDICtx: pointer to the WLAN DAL context
25920 pEventData: pointer to the event information structure
25921
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 @see
25923 @return Result of the function call
25924*/
25925WDI_Status
25926WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025927(
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 WDI_ControlBlockType* pWDICtx,
25929 WDI_EventInfoType* pEventData
25930)
25931{
25932 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25933 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025934 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025935 wpt_uint16 usDataOffset = 0;
25936 wpt_uint16 usSendSize = 0;
25937 tSetPowerParamsType powerParams;
25938
25939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025941 -------------------------------------------------------------------------*/
25942 if (( NULL == pEventData ) ||
25943 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25944 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25945 {
25946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 }
25951
25952 /*-----------------------------------------------------------------------
25953 Get message buffer
25954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 sizeof(powerParams),
25957 &pSendBuffer, &usDataOffset, &usSendSize))||
25958 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25959 {
25960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25961 "Unable to get send buffer in Set PNO req %x %x %x",
25962 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 }
25966
25967 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025968 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25970
25971 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25974
25975 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025976 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25978
25979 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25982
25983 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25986
25987 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 powerParams.uBETInterval =
25989 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025990
Yue Ma0da19492013-05-13 17:01:29 -070025991 /* MAX LI for modulated DTIM */
25992 powerParams.uMaxLIModulatedDTIM =
25993 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070025994
25995 wpalMemoryCopy( pSendBuffer+usDataOffset,
25996 &powerParams,
25997 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025998
25999 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001
26002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26006 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026007}
26008
26009/**
26010 @brief Process Power Params Rsp function (called when a
26011 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026012
26013 @param pWDICtx: pointer to the WLAN DAL context
26014 pEventData: pointer to the event information structure
26015
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 @see
26017 @return Result of the function call
26018*/
26019WDI_Status
26020WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026021(
Jeff Johnson295189b2012-06-20 16:38:30 -070026022 WDI_ControlBlockType* pWDICtx,
26023 WDI_EventInfoType* pEventData
26024)
26025{
26026 WDI_Status wdiStatus;
26027 eHalStatus halStatus;
26028 WDI_SetPowerParamsCb wdiPowerParamsCb;
26029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26030
26031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026033 -------------------------------------------------------------------------*/
26034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26035 ( NULL == pEventData->pEventData ))
26036 {
26037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 }
26042
Jeff Johnsone7245742012-09-05 17:12:55 -070026043 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026044
26045 /*-------------------------------------------------------------------------
26046 Extract response and send it to UMAC
26047 -------------------------------------------------------------------------*/
26048 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026049 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026050
26051 /*Notify UMAC*/
26052 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26053
Jeff Johnsone7245742012-09-05 17:12:55 -070026054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026055}/*WDI_ProcessSetPowerParamsRsp*/
26056
26057#ifdef WLAN_FEATURE_GTK_OFFLOAD
26058/**
26059 @brief WDI_GTKOffloadReq will be called when the upper MAC
26060 wants to set GTK Rekey Counter while in power save. Upon
26061 the call of this API the WLAN DAL will pack and send a
26062 HAL GTK offload request message to the lower RIVA
26063 sub-system if DAL is in state STARTED.
26064
26065 In state BUSY this request will be queued. Request won't
26066 be allowed in any other state.
26067
26068 WDI_PostAssocReq must have been called.
26069
26070 @param pwdiGtkOffloadParams: the GTK offload as specified
26071 by the Device Interface
26072
26073 wdiGtkOffloadCb: callback for passing back the response
26074 of the GTK offload operation received from the device
26075
26076 pUserData: user data will be passed back with the
26077 callback
26078
26079 @see WDI_PostAssocReq
26080 @return Result of the function call
26081*/
26082WDI_Status
26083WDI_GTKOffloadReq
26084(
26085 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26086 WDI_GtkOffloadCb wdiGtkOffloadCb,
26087 void* pUserData
26088)
26089{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026090 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26092
26093 /*------------------------------------------------------------------------
26094 Sanity Check
26095 ------------------------------------------------------------------------*/
26096 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26097 {
26098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26099 "WDI API call before module is initialized - Fail request");
26100
26101 return WDI_STATUS_E_NOT_ALLOWED;
26102 }
26103
26104 /*------------------------------------------------------------------------
26105 Fill in Event data and post to the Main FSM
26106 ------------------------------------------------------------------------*/
26107 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26108 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026109 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026110 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26111 wdiEventData.pUserData = pUserData;
26112
26113 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26114}
26115
26116
26117/**
26118 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26119 MAC wants to get GTK Rekey Counter while in power save.
26120 Upon the call of this API the WLAN DAL will pack and
26121 send a HAL GTK offload request message to the lower RIVA
26122 sub-system if DAL is in state STARTED.
26123
26124 In state BUSY this request will be queued. Request won't
26125 be allowed in any other state.
26126
26127 WDI_PostAssocReq must have been called.
26128
26129 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26130 Information Message as specified by the
26131 Device Interface
26132
26133 wdiGtkOffloadGetInfoCb: callback for passing back the
26134 response of the GTK offload operation received from the
26135 device
26136
26137 pUserData: user data will be passed back with the
26138 callback
26139
26140 @see WDI_PostAssocReq
26141 @return Result of the function call
26142*/
26143WDI_Status
26144WDI_GTKOffloadGetInfoReq
26145(
26146 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26147 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26148 void* pUserData
26149)
26150{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026151 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26153
26154 /*------------------------------------------------------------------------
26155 Sanity Check
26156 ------------------------------------------------------------------------*/
26157 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26158 {
26159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26160 "WDI API call before module is initialized - Fail request");
26161
26162 return WDI_STATUS_E_NOT_ALLOWED;
26163 }
26164
26165 /*------------------------------------------------------------------------
26166 Fill in Event data and post to the Main FSM
26167 ------------------------------------------------------------------------*/
26168 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26169 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26170 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26171 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26172 wdiEventData.pUserData = pUserData;
26173
26174 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26175}
26176
26177
26178/**
26179 @brief Process set GTK Offload Request function
26180
26181 @param pWDICtx: pointer to the WLAN DAL context
26182 pEventData: pointer to the event information structure
26183
26184 @see
26185 @return Result of the function call
26186*/
26187WDI_Status
26188WDI_ProcessGTKOffloadReq
26189(
26190 WDI_ControlBlockType* pWDICtx,
26191 WDI_EventInfoType* pEventData
26192)
26193{
26194 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26195 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26196 wpt_uint8* pSendBuffer = NULL;
26197 wpt_uint16 usDataOffset = 0;
26198 wpt_uint16 usSendSize = 0;
26199 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026200 wpt_uint8 ucCurrentSessionId = 0;
26201 WDI_BSSSessionType* pBSSSes = NULL;
26202
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26204
26205 /*-------------------------------------------------------------------------
26206 Sanity check
26207 -------------------------------------------------------------------------*/
26208 if (( NULL == pEventData ) ||
26209 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26210 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26211 {
26212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026215 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 }
26217
26218 /*-----------------------------------------------------------------------
26219 Get message buffer
26220 -----------------------------------------------------------------------*/
26221 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26222 sizeof(gtkOffloadReqParams),
26223 &pSendBuffer, &usDataOffset, &usSendSize))||
26224 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26225 {
26226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26227 "Unable to get send buffer in GTK offload req %x %x %x",
26228 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26229 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026230 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 }
26232
26233 //
26234 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26235 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026236 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26237 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26238 &pBSSSes);
26239 if ( NULL == pBSSSes )
26240 {
26241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026242 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026243 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026244 }
26245
26246 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26247
Jeff Johnson295189b2012-06-20 16:38:30 -070026248 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26249 // Copy KCK
26250 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26251 // Copy KEK
26252 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26253 // Copy KeyReplayCounter
26254 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26255
26256 wpalMemoryCopy( pSendBuffer+usDataOffset,
26257 &gtkOffloadReqParams,
26258 sizeof(gtkOffloadReqParams));
26259
26260 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26261 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26262
26263 /*-------------------------------------------------------------------------
26264 Send Get STA Request to HAL
26265 -------------------------------------------------------------------------*/
26266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26267 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026268
26269fail:
26270 // Release the message buffer so we don't leak
26271 wpalMemoryFree(pSendBuffer);
26272
26273failRequest:
26274 //WDA should have failure check to avoid the memory leak
26275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026276}
26277
26278
26279/**
26280 @brief Process GTK Offload Get Information Request function
26281
26282 @param pWDICtx: pointer to the WLAN DAL context
26283 pEventData: pointer to the event information structure
26284
26285 @see
26286 @return Result of the function call
26287*/
26288WDI_Status
26289WDI_ProcessGTKOffloadGetInfoReq
26290(
26291 WDI_ControlBlockType* pWDICtx,
26292 WDI_EventInfoType* pEventData
26293)
26294{
26295 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26296 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26297 wpt_uint8* pSendBuffer = NULL;
26298 wpt_uint16 usDataOffset = 0;
26299 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026300 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26301 wpt_uint8 ucCurrentSessionId = 0;
26302 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026303
26304 /*-------------------------------------------------------------------------
26305 Sanity check
26306 -------------------------------------------------------------------------*/
26307 if (( NULL == pEventData ) ||
26308 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26309 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26310 {
26311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026314 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026315 }
26316
26317 /*-----------------------------------------------------------------------
26318 Get message buffer
26319 -----------------------------------------------------------------------*/
26320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026321 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026323 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026324 {
26325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26326 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26327 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26328 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026329 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026330 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026331 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26332 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26333 &pBSSSes);
26334 if ( NULL == pBSSSes )
26335 {
26336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026337 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026338 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026339 }
26340 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026341
26342 //
26343 // Don't need to fill send buffer other than header
26344 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026345 wpalMemoryCopy( pSendBuffer+usDataOffset,
26346 &halGtkOffloadGetInfoReqParams,
26347 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026348
26349 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26350 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26351
26352 /*-------------------------------------------------------------------------
26353 Send Get STA Request to HAL
26354 -------------------------------------------------------------------------*/
26355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26356 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026357fail:
26358 // Release the message buffer so we don't leak
26359 wpalMemoryFree(pSendBuffer);
26360
26361failRequest:
26362 //WDA should have failure check to avoid the memory leak
26363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026364}
26365
26366/**
26367 @brief Process host offload Rsp function (called when a
26368 response is being received over the bus from HAL)
26369
26370 @param pWDICtx: pointer to the WLAN DAL context
26371 pEventData: pointer to the event information structure
26372
26373 @see
26374 @return Result of the function call
26375*/
26376WDI_Status
26377WDI_ProcessGtkOffloadRsp
26378(
26379 WDI_ControlBlockType* pWDICtx,
26380 WDI_EventInfoType* pEventData
26381)
26382{
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 eHalStatus halStatus;
26384 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026385 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26386 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26388
26389 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26390
26391 /*-------------------------------------------------------------------------
26392 Sanity check
26393 -------------------------------------------------------------------------*/
26394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26395 ( NULL == pEventData->pEventData))
26396 {
26397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026399 WDI_ASSERT(0);
26400 return WDI_STATUS_E_FAILURE;
26401 }
26402
26403 /*-------------------------------------------------------------------------
26404 Extract response and send it to UMAC
26405 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026406 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26407 {
26408 wpalMemoryCopy( &halGtkOffloadRspParams,
26409 pEventData->pEventData,
26410 sizeof(halGtkOffloadRspParams));
26411
26412 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026413 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026414 wdiGtkOffloadRsparams.bssIdx =
26415 halGtkOffloadRspParams.bssIdx;
26416 }
26417 else
26418 {
26419 halStatus = *((eHalStatus*)pEventData->pEventData);
26420 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26421 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026422
26423 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026424 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026425
26426 return WDI_STATUS_SUCCESS;
26427}
26428
26429/**
26430 @brief Process GTK Offload Get Information Response function
26431
26432 @param pWDICtx: pointer to the WLAN DAL context
26433 pEventData: pointer to the event information structure
26434
26435 @see
26436 @return Result of the function call
26437*/
26438WDI_Status
26439WDI_ProcessGTKOffloadGetInfoRsp
26440(
26441 WDI_ControlBlockType* pWDICtx,
26442 WDI_EventInfoType* pEventData
26443)
26444{
Jeff Johnson295189b2012-06-20 16:38:30 -070026445 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026447 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26448 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026449 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026450
26451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26452
26453 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26454
26455 /*-------------------------------------------------------------------------
26456 Sanity check
26457 -------------------------------------------------------------------------*/
26458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26459 ( NULL == pEventData->pEventData ))
26460 {
26461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 WDI_ASSERT(0);
26464 return WDI_STATUS_E_FAILURE;
26465 }
26466
26467 /*-------------------------------------------------------------------------
26468 Extract response and send it to UMAC
26469 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026470 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26471 {
26472 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26473 pEventData->pEventData,
26474 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026476 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026477 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026478 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26479 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26480 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26481 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26482 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26483 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26484 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26485 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026486
26487 wpalMutexAcquire(&pWDICtx->wptMutex);
26488 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26489 &pBSSSes);
26490
26491 if ( NULL == pBSSSes )
26492 {
26493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26494 "Association sequence for this BSS does not exist or "
26495 "association no longer in progress - mysterious HAL response");
26496 wpalMutexRelease(&pWDICtx->wptMutex);
26497 return WDI_STATUS_E_NOT_ALLOWED;
26498 }
26499
26500 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26501 sizeof (wpt_macAddr));
26502 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026503 }
26504 else
26505 {
26506 halStatus = *((eHalStatus*)pEventData->pEventData);
26507 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26508 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026509 /*Notify UMAC*/
26510 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26511 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026512 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026513
26514 return WDI_STATUS_SUCCESS;
26515}
26516#endif // WLAN_FEATURE_GTK_OFFLOAD
26517
26518#ifdef WLAN_WAKEUP_EVENTS
26519WDI_Status
26520WDI_ProcessWakeReasonInd
26521(
26522 WDI_ControlBlockType* pWDICtx,
26523 WDI_EventInfoType* pEventData
26524)
26525{
26526 WDI_LowLevelIndType *pWdiInd;
26527 tpWakeReasonParams pWakeReasonParams;
26528 wpt_uint32 allocSize = 0;
26529
26530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026531 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026532
26533 /*-------------------------------------------------------------------------
26534 Sanity check
26535 -------------------------------------------------------------------------*/
26536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26537 ( NULL == pEventData->pEventData ))
26538 {
26539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 WDI_ASSERT( 0 );
26542 return WDI_STATUS_E_FAILURE;
26543 }
26544
26545 /*-------------------------------------------------------------------------
26546 Extract indication and send it to UMAC
26547 -------------------------------------------------------------------------*/
26548 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26549
26550 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26551
26552 //Allocate memory for WDI_WakeReasonIndType structure
26553 pWdiInd = wpalMemoryAllocate(allocSize) ;
26554
26555 if(NULL == pWdiInd)
26556 {
26557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26558 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026559 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026560 WDI_ASSERT(0);
26561 return WDI_STATUS_E_FAILURE;
26562 }
26563
26564 wpalMemoryZero(pWdiInd, allocSize);
26565
26566 /* Fill in the indication parameters*/
26567 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26568 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26569 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26570 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26571 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26572 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26573 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26574 &(pWakeReasonParams->aDataStart[0]),
26575 pWakeReasonParams->ulStoredDataLen);
26576
ltimariu034f7d62013-01-24 18:54:33 -080026577
26578 if ( pWDICtx->wdiLowLevelIndCB )
26579 {
26580 /*Notify UMAC*/
26581 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26582 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
26584 //Free memory allocated for WDI_WakeReasonIndType structure
26585 wpalMemoryFree(pWdiInd);
26586
26587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026588 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026589
26590 return WDI_STATUS_SUCCESS;
26591}
26592#endif // WLAN_WAKEUP_EVENTS
26593
26594void WDI_GetWcnssCompiledApiVersion
26595(
26596 WDI_WlanVersionType *pWcnssApiVersion
26597)
26598{
26599 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26600 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26601 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26602 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26603}
26604
26605/**
26606 @brief Process Set TM Level Rsp function (called when a
26607 response is being received over the bus from HAL)
26608
26609 @param pWDICtx: pointer to the WLAN DAL context
26610 pEventData: pointer to the event information structure
26611
26612 @see
26613 @return Result of the function call
26614*/
26615WDI_Status
26616WDI_ProcessSetTmLevelRsp
26617(
26618 WDI_ControlBlockType* pWDICtx,
26619 WDI_EventInfoType* pEventData
26620)
26621{
26622 WDI_Status wdiStatus;
26623 eHalStatus halStatus;
26624 WDI_SetTmLevelCb wdiSetTmLevelCb;
26625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26626
26627 /*-------------------------------------------------------------------------
26628 Sanity check
26629 -------------------------------------------------------------------------*/
26630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26631 ( NULL == pEventData->pEventData ))
26632 {
26633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026635 WDI_ASSERT(0);
26636 return WDI_STATUS_E_FAILURE;
26637 }
26638
26639 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26640
26641 /*-------------------------------------------------------------------------
26642 Extract response and send it to UMAC
26643 -------------------------------------------------------------------------*/
26644 halStatus = *((eHalStatus*)pEventData->pEventData);
26645 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26646
26647 /*Notify UMAC*/
26648 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26649
26650 return WDI_STATUS_SUCCESS;
26651}/*WDI_ProcessSetTmLevelRsp*/
26652
26653/**
26654 @brief Process Set Thermal Mitigation level Changed request
26655
26656 @param pWDICtx: pointer to the WLAN DAL context
26657 pEventData: pointer to the event information structure
26658
26659 @see
26660 @return Result of the function call
26661*/
26662WDI_Status
26663WDI_ProcessSetTmLevelReq
26664(
26665 WDI_ControlBlockType* pWDICtx,
26666 WDI_EventInfoType* pEventData
26667)
26668{
26669 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
26670 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
26671 wpt_uint8* pSendBuffer = NULL;
26672 wpt_uint16 usDataOffset = 0;
26673 wpt_uint16 usSendSize = 0;
26674 tSetThermalMitgationType halTmMsg;
26675
26676 /*-------------------------------------------------------------------------
26677 Sanity check
26678 -------------------------------------------------------------------------*/
26679 if (( NULL == pEventData ) ||
26680 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
26681 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
26682 {
26683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026685 WDI_ASSERT(0);
26686 return WDI_STATUS_E_FAILURE;
26687 }
26688
26689 /*-----------------------------------------------------------------------
26690 Get message buffer
26691 -----------------------------------------------------------------------*/
26692 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
26693 sizeof(halTmMsg),
26694 &pSendBuffer, &usDataOffset, &usSendSize))||
26695 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
26696 {
26697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26698 "Unable to get send buffer in Set PNO req %x %x %x",
26699 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
26700 WDI_ASSERT(0);
26701 return WDI_STATUS_E_FAILURE;
26702 }
26703
26704 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
26705 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
26706
26707 wpalMemoryCopy( pSendBuffer+usDataOffset,
26708 &halTmMsg,
26709 sizeof(halTmMsg));
26710
26711 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
26712 pWDICtx->pfncRspCB = NULL;
26713 /*-------------------------------------------------------------------------
26714 Send Get STA Request to HAL
26715 -------------------------------------------------------------------------*/
26716 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26717 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
26718}
26719
26720/* Fill the value from the global features enabled array to the global capabilities
26721 * bitmap struct
26722 */
26723static void
26724FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
26725{
26726 wpt_int8 i;
26727 for (i=0; i<len; i++)
26728 {
26729 setFeatCaps(fCaps, enabledFeat[i]);
26730 }
26731}
26732
26733/**
26734 @brief WDI_featureCapsExchangeReq
26735 Post feature capability bitmap exchange event.
26736 Host will send its own capability to FW in this req and
26737 expect FW to send its capability back as a bitmap in Response
26738
26739 @param
26740
26741 wdiFeatureCapsExchangeCb: callback called on getting the response.
26742 It is kept to mantain similarity between WDI reqs and if needed, can
26743 be used in future. Currently, It is set to NULL
26744
26745 pUserData: user data will be passed back with the
26746 callback
26747
26748 @see
26749 @return Result of the function call
26750*/
26751WDI_Status
26752WDI_featureCapsExchangeReq
26753(
26754 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
26755 void* pUserData
26756)
26757{
26758 WDI_EventInfoType wdiEventData;
26759 wpt_int32 fCapsStructSize;
26760
26761 /*------------------------------------------------------------------------
26762 Sanity Check
26763 ------------------------------------------------------------------------*/
26764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26765 {
26766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26767 "WDI API call before module is initialized - Fail request");
26768
26769 return WDI_STATUS_E_NOT_ALLOWED;
26770 }
26771
26772 /* Allocate memory separately for global variable carrying FW caps */
26773 fCapsStructSize = sizeof(tWlanFeatCaps);
26774 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26775 if ( NULL == gpHostWlanFeatCaps )
26776 {
26777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26778 "Cannot allocate memory for host capability info\n");
26779 WDI_ASSERT(0);
26780 return WDI_STATUS_MEM_FAILURE;
26781 }
26782
26783 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26784
26785 /*------------------------------------------------------------------------
26786 Fill in Event data and post to the Main FSM
26787 ------------------------------------------------------------------------*/
26788 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26789 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26791 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026792 gpHostWlanFeatCaps->featCaps[0],
26793 gpHostWlanFeatCaps->featCaps[1],
26794 gpHostWlanFeatCaps->featCaps[2],
26795 gpHostWlanFeatCaps->featCaps[3]
26796 );
26797
26798 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26799 wdiEventData.pEventData = gpHostWlanFeatCaps;
26800 wdiEventData.uEventDataSize = fCapsStructSize;
26801 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26802 wdiEventData.pUserData = pUserData;
26803
26804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26805}
26806
26807/**
Yathishd8713192012-12-10 14:21:35 -080026808 @brief Disable Active mode offload in Host
26809
26810 @param void
26811 @see
26812 @return void
26813*/
26814void
26815WDI_disableCapablityFeature(wpt_uint8 feature_index)
26816{
26817 supportEnabledFeatures[feature_index] = 0;
26818 return;
26819}
26820
26821/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026822 @brief Process Host-FW Capability Exchange Request function
26823
26824 @param pWDICtx: pointer to the WLAN DAL context
26825 pEventData: pointer to the event information structure
26826
26827 @see
26828 @return Result of the function call
26829*/
26830WDI_Status
26831WDI_ProcessFeatureCapsExchangeReq
26832(
26833 WDI_ControlBlockType* pWDICtx,
26834 WDI_EventInfoType* pEventData
26835)
26836{
26837 wpt_uint8* pSendBuffer = NULL;
26838 wpt_uint16 usDataOffset = 0;
26839 wpt_uint16 usSendSize = 0;
26840 wpt_uint16 usLen = 0;
26841
26842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26843
26844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026845 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026846
26847 /*-------------------------------------------------------------------------
26848 Sanity check
26849 -------------------------------------------------------------------------*/
26850 /* Call back function is NULL since not required for cap exchange req */
26851 if (( NULL == pEventData ) ||
26852 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26853 {
26854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026856 WDI_ASSERT(0);
26857 return WDI_STATUS_E_FAILURE;
26858 }
26859
26860 /*-----------------------------------------------------------------------
26861 Get message buffer
26862 -----------------------------------------------------------------------*/
26863 usLen = sizeof(tWlanFeatCaps);
26864
26865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26866 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26867 usLen,
26868 &pSendBuffer, &usDataOffset, &usSendSize))||
26869 ( usSendSize < (usDataOffset + usLen )))
26870 {
26871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26872 "Unable to get send buffer in feat caps exchange req %x %x",
26873 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26874 WDI_ASSERT(0);
26875 return WDI_STATUS_E_FAILURE;
26876 }
26877
26878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026879 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026880 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26881 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26882 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26883 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26884 );
26885
26886 /* Copy host caps after the offset in the send buffer */
26887 wpalMemoryCopy( pSendBuffer+usDataOffset,
26888 (tWlanFeatCaps *)pEventData->pEventData,
26889 usLen);
26890
26891 /*-------------------------------------------------------------------------
26892 Send Start Request to HAL
26893 -------------------------------------------------------------------------*/
26894 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26895 (WDI_StartRspCb)pEventData->pCBfnc,
26896 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26897
26898}/*WDI_ProcessFeatureCapsExchangeReq*/
26899
26900/**
26901 @brief Process Host-FW Capability Exchange Response function
26902
26903 @param pWDICtx: pointer to the WLAN DAL context
26904 pEventData: pointer to the event information structure
26905
26906 @see
26907 @return Result of the function call
26908*/
26909WDI_Status
26910WDI_ProcessFeatureCapsExchangeRsp
26911(
26912 WDI_ControlBlockType* pWDICtx,
26913 WDI_EventInfoType* pEventData
26914)
26915{
26916 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26917 wpt_int32 fCapsStructSize;
26918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26919
26920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026921 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026922
26923 /*-------------------------------------------------------------------------
26924 Sanity check
26925 -------------------------------------------------------------------------*/
26926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26927 ( NULL == pEventData->pEventData ))
26928 {
26929 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026932 WDI_ASSERT(0);
26933 return WDI_STATUS_E_FAILURE;
26934 }
26935
26936 /* Allocate memory separately for global variable carrying FW caps */
26937 fCapsStructSize = sizeof(tWlanFeatCaps);
26938 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26939 if ( NULL == gpFwWlanFeatCaps )
26940 {
26941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26942 "Cannot allocate memory for host capability info\n");
26943 WDI_ASSERT(0);
26944 return WDI_STATUS_MEM_FAILURE;
26945 }
26946
26947 /*-------------------------------------------------------------------------
26948 Unpack HAL Response Message - the header was already extracted by the
26949 main Response Handling procedure
26950 -------------------------------------------------------------------------*/
26951 /*-------------------------------------------------------------------------
26952 Extract response and send it to UMAC
26953 -------------------------------------------------------------------------*/
26954
26955 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26956 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26958 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026959 gpFwWlanFeatCaps->featCaps[0],
26960 gpFwWlanFeatCaps->featCaps[1],
26961 gpFwWlanFeatCaps->featCaps[2],
26962 gpFwWlanFeatCaps->featCaps[3]
26963 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026964 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26965
26966 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26967 if (wdiFeatureCapsExchangeCb != NULL)
26968 wdiFeatureCapsExchangeCb(NULL, NULL);
26969
26970 return WDI_STATUS_SUCCESS;
26971}
26972
Mohit Khanna4a70d262012-09-11 16:30:12 -070026973#ifdef WLAN_FEATURE_11AC
26974WDI_Status
26975WDI_ProcessUpdateVHTOpModeRsp
26976(
26977 WDI_ControlBlockType* pWDICtx,
26978 WDI_EventInfoType* pEventData
26979)
26980{
26981 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26982 WDI_Status wdiStatus;
26983 eHalStatus halStatus;
26984
26985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26986
26987 /*-------------------------------------------------------------------------
26988 Sanity check
26989 -------------------------------------------------------------------------*/
26990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26991 ( NULL == pEventData->pEventData))
26992 {
26993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026994 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026995 WDI_ASSERT(0);
26996 return WDI_STATUS_E_FAILURE;
26997 }
26998 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26999
27000 /*-------------------------------------------------------------------------
27001 Extract response and send it to UMAC
27002 -------------------------------------------------------------------------*/
27003 halStatus = *((eHalStatus*)pEventData->pEventData);
27004 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27005
27006 /*Notify UMAC*/
27007 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27008
27009 return WDI_STATUS_SUCCESS;
27010}
27011#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027012/**
27013 @brief WDI_getHostWlanFeatCaps
27014 WDI API that returns whether the feature passed to it as enum value in
27015 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27016 variable storing host capability bitmap to find this. This can be used by
27017 other moduels to decide certain things like call different APIs based on
27018 whether a particular feature is supported.
27019
27020 @param
27021
27022 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27023
27024 @see
27025 @return
27026 0 - if the feature is NOT supported in host
27027 any non-zero value - if the feature is SUPPORTED in host.
27028*/
27029wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27030{
27031 wpt_uint8 featSupported = 0;
27032 if (gpHostWlanFeatCaps != NULL)
27033 {
27034 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27035 }
27036 else
27037 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027039 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027040 }
27041 return featSupported;
27042}
27043
27044/**
27045 @brief WDI_getFwWlanFeatCaps
27046 WDI API that returns whether the feature passed to it as enum value in
27047 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27048 variable storing host capability bitmap to find this. This can be used by
27049 other moduels to decide certain things like call different APIs based on
27050 whether a particular feature is supported.
27051
27052 @param
27053
27054 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27055 in wlan_hal_msg.h.
27056
27057 @see
27058 @return
27059 0 - if the feature is NOT supported in FW
27060 any non-zero value - if the feature is SUPPORTED in FW.
27061*/
27062wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27063{
27064 wpt_uint8 featSupported = 0;
27065 if (gpFwWlanFeatCaps != NULL)
27066 {
27067 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27068 }
27069 else
27070 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027072 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 }
27074 return featSupported;
27075}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027076
27077#ifdef WLAN_FEATURE_11AC
27078WDI_Status
27079WDI_ProcessUpdateVHTOpModeReq
27080(
27081 WDI_ControlBlockType* pWDICtx,
27082 WDI_EventInfoType* pEventData
27083)
27084{
27085 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27086 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27087 wpt_uint8* pSendBuffer = NULL;
27088 wpt_uint16 usDataOffset = 0;
27089 wpt_uint16 usSendSize = 0;
27090
27091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27092
27093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027094 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027095
27096 /*-------------------------------------------------------------------------
27097 Sanity check
27098 -------------------------------------------------------------------------*/
27099 if (( NULL == pEventData ) ||
27100 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27101 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27102 {
27103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027104 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027105 WDI_ASSERT(0);
27106 return WDI_STATUS_E_FAILURE;
27107 }
27108
27109 /*-----------------------------------------------------------------------
27110 Get message buffer
27111 -----------------------------------------------------------------------*/
27112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27113 sizeof(WDI_UpdateVHTOpMode),
27114 &pSendBuffer, &usDataOffset, &usSendSize))||
27115 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27116 {
27117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27118 "Unable to get send buffer in update vht opMode req");
27119 WDI_ASSERT(0);
27120 return WDI_STATUS_E_FAILURE;
27121 }
27122
27123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27124 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27125
27126 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27127 sizeof(WDI_UpdateVHTOpMode));
27128
27129 /*-------------------------------------------------------------------------
27130 Send Start Request to HAL
27131 -------------------------------------------------------------------------*/
27132 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27133 wdiVHTOpModeCb,
27134 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27135
27136}
27137
27138WDI_Status
27139WDI_UpdateVHTOpModeReq
27140(
27141 WDI_UpdateVHTOpMode *pData,
27142 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27143 void* pUserData
27144)
27145{
27146 WDI_EventInfoType wdiEventData;
27147
27148 /*------------------------------------------------------------------------
27149 Sanity Check
27150 ------------------------------------------------------------------------*/
27151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27152 {
27153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27154 "WDI API call before module is initialized - Fail request");
27155
27156 return WDI_STATUS_E_NOT_ALLOWED;
27157 }
27158
27159 /*------------------------------------------------------------------------
27160 Fill in Event data and post to the Main FSM
27161 ------------------------------------------------------------------------*/
27162 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27163 wdiEventData.pEventData = pData;
27164 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27165 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27166 wdiEventData.pUserData = pUserData;
27167
27168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27169 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27170
27171 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27172
27173}
27174#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027175
27176/**
27177 @brief WDI_TransportChannelDebug -
27178 Display DXE Channel debugging information
27179 User may request to display DXE channel snapshot
27180 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027181
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027182 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027183 @param enableStallDetect : Enable stall detect feature
27184 This feature will take effect to data performance
27185 Not integrate till fully verification
27186 @see
27187 @return none
27188*/
27189void WDI_TransportChannelDebug
27190(
27191 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027192 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027193)
27194{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027195 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027196 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027197}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027198/**
27199 @brief WDI_SsrTimerCB
27200 Callback function for SSR timer, if this is called then the graceful
27201 shutdown for Riva did not happen.
27202
27203 @param pUserData : user data to timer
27204
27205 @see
27206 @return none
27207*/
27208void
27209WDI_SsrTimerCB
27210(
27211 void *pUserData
27212)
27213{
27214 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27216
27217 if (NULL == pWDICtx )
27218 {
27219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027220 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027221 WDI_ASSERT(0);
27222 return;
27223 }
27224 wpalRivaSubystemRestart();
27225
27226 return;
27227
27228}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027229
27230/**
27231 @brief WDI_SetEnableSSR -
27232 This API is called to enable/disable SSR on WDI timeout.
27233
27234 @param enableSSR : enable/disable SSR
27235
27236 @see
27237 @return none
27238*/
27239void WDI_SetEnableSSR(wpt_boolean enableSSR)
27240{
27241 gWDICb.bEnableSSR = enableSSR;
27242}