blob: 3ba1e155fa1fee68e8998bf8c76cb5ece2899c84 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700146#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
147 ,WLAN_ROAM_SCAN_OFFLOAD
148#else
149 ,FEATURE_NOT_SUPPORTED
150#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800151 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700152
153/*--------------------------------------------------------------------------
154 WLAN DAL State Machine
155 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700156WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700157{
158 /*WDI_INIT_ST*/
159 {{
160 WDI_MainStart, /*WDI_START_EVENT*/
161 NULL, /*WDI_STOP_EVENT*/
162 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
163 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
164 WDI_MainClose, /*WDI_CLOSE_EVENT*/
165 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
166 }},
167
168 /*WDI_STARTED_ST*/
169 {{
170 WDI_MainStartStarted, /*WDI_START_EVENT*/
171 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
172 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
173 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
174 NULL, /*WDI_CLOSE_EVENT*/
175 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
176 }},
177
178 /*WDI_STOPPED_ST*/
179 {{
180 WDI_MainStart, /*WDI_START_EVENT*/
181 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
182 NULL, /*WDI_REQUEST_EVENT*/
183 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
184 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700185 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700186 }},
187
188 /*WDI_BUSY_ST*/
189 {{
190 WDI_MainStartBusy, /*WDI_START_EVENT*/
191 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
192 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
193 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
194 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
195 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
196 }}
197};
198
Jeff Johnsone7245742012-09-05 17:12:55 -0700199/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 DAL Request Processing Array - the functions in this table will only be
201 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700202 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700203 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700204WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700205{
206 /*INIT*/
207 WDI_ProcessStartReq, /* WDI_START_REQ */
208 WDI_ProcessStopReq, /* WDI_STOP_REQ */
209 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
210
211 /*SCAN*/
212 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
213 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
214 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
215 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
216
217 /*ASSOCIATION*/
218 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
219 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
220 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
221 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
222 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
223
224 /* Security */
225 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
226 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
227 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
228 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
229
230 /* QoS and BA APIs */
231 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
232 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
233 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
234 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
235 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
236
237 /* Miscellaneous Control APIs */
238 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
239 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
240 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
241 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
242 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
243
244 /*BA APIs*/
245 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
246 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
247
248 /*Beacon processing APIs*/
249 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
250 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
251
252 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
253 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
254 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
255 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 /* PowerSave APIs */
258 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
259 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
260 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
261 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
262 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
263 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
264 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
265 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
266 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
267 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
268 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
269 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
270 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
271 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
272 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
273 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
274 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
275 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
276 /*NV Download APIs*/
277 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
278 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
279 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
280#ifdef WLAN_FEATURE_VOWIFI_11R
281 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
282#else
283 NULL,
284#endif /* WLAN_FEATURE_VOWIFI_11R */
285 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
286 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700288
289#ifdef FEATURE_OEM_DATA_SUPPORT
290 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
291#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700292 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700293#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700294 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700295
296 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700297
298#ifdef FEATURE_WLAN_SCAN_PNO
299 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
300 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
301 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
302#else
303 NULL,
304 NULL,
305 NULL,
306#endif /* FEATURE_WLAN_SCAN_PNO */
307
308 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309
Jeff Johnson295189b2012-06-20 16:38:30 -0700310#ifdef WLAN_FEATURE_PACKET_FILTERING
311 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700316 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700318 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700319#else
320 NULL,
321 NULL,
322 NULL,
323 NULL,
324#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700325 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700326 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
327 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
328
329 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
330#ifdef FEATURE_WLAN_CCX
331 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
332#else
333 NULL,
334#endif
335
336#ifdef WLAN_FEATURE_GTK_OFFLOAD
337 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
338 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
339#else
340 NULL,
341 NULL,
342#endif // WLAN_FEATURE_GTK_OFFLOAD
343
344 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
345 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700346#ifdef WLAN_FEATURE_11AC
347 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800348#else
349 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700350#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800351#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
352 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
353#else
schangd82195a2013-03-13 18:41:24 -0700354 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800355#endif
schangd82195a2013-03-13 18:41:24 -0700356 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700357#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700358 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700359#else
360 NULL,
361#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530362#ifdef FEATURE_WLAN_TDLS
363 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
364#else
365 NULL,
366#endif
schangd82195a2013-03-13 18:41:24 -0700367 /*-------------------------------------------------------------------------
368 Indications
369 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700370 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800371 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700372#ifdef WLAN_FEATURE_11W
373 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
374#else
375 NULL,
376#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700377};
378
379
Jeff Johnsone7245742012-09-05 17:12:55 -0700380/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700381 DAL Request Processing Array - the functions in this table will only be
382 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700383 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700384 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700385WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700386{
387 /*INIT*/
388 WDI_ProcessStartRsp, /* WDI_START_RESP */
389 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
390 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
391
392 /*SCAN*/
393 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
394 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
395 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
396 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
397
398 /* ASSOCIATION*/
399 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
400 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
401 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
402 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
403 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
404
405 /* Security */
406 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
407 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
408 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
409 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
410
411 /* QoS and BA APIs */
412 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
413 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
414 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
415 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
416 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
417
418 /* Miscellaneous Control APIs */
419 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
420 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
421 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
422 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
423 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
424
425 /* BA APIs*/
426 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
427 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700428
Jeff Johnson295189b2012-06-20 16:38:30 -0700429 /* IBSS APIs*/
430 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
431 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
432
433 /*Soft AP APIs*/
434 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
435 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
436 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
437 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
438
439 /* PowerSave APIs */
440 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
441 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
442 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
443 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
444 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
445 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
446 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
447 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
448 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
449 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
450 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
451 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
452 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
453 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
454 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
455 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
456 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
457 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700458
Jeff Johnson295189b2012-06-20 16:38:30 -0700459
460 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
461
462 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
463 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
464#ifdef WLAN_FEATURE_VOWIFI_11R
465 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
466#else
467 NULL,
468#endif /* WLAN_FEATURE_VOWIFI_11R */
469 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
470 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700471#ifdef FEATURE_OEM_DATA_SUPPORT
472 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
473#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700474 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700475#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700476 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700479
Jeff Johnson295189b2012-06-20 16:38:30 -0700480 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700481
Jeff Johnsone7245742012-09-05 17:12:55 -0700482 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
483
Jeff Johnson295189b2012-06-20 16:38:30 -0700484#ifdef FEATURE_WLAN_SCAN_PNO
485 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
486 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
487 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
488#else
489 NULL,
490 NULL,
491 NULL,
492#endif // FEATURE_WLAN_SCAN_PNO
493
494 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
495
496 /*---------------------------------------------------------------------
497 Indications
498 ---------------------------------------------------------------------*/
499#ifdef WLAN_FEATURE_PACKET_FILTERING
500 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700501 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700503 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700505 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#else
509 NULL,
510 NULL,
511 NULL,
512 NULL,
513#endif // WLAN_FEATURE_PACKET_FILTERING
514
515 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
516 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
517
518 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
519#ifdef FEATURE_WLAN_CCX
520 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
521#else
522 NULL,
523#endif
524
525#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700526 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
527 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528#else
529 NULL,
530 NULL,
531#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700532 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
533 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700534#ifdef WLAN_FEATURE_11AC
535 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700536#else
537 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700538#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800539#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
540 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
541#else
542 NULL,
543#endif
schangd82195a2013-03-13 18:41:24 -0700544 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700545#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700546 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700547#else
548 NULL,
549#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530550#ifdef FEATURE_WLAN_TDLS
551 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
552#else
553 NULL,
554#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /*---------------------------------------------------------------------
556 Indications
557 ---------------------------------------------------------------------*/
558 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
559 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
560 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
561 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
562 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
563 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
564
565 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
566
567 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
568
Jeff Johnson295189b2012-06-20 16:38:30 -0700569 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700570
571#ifdef FEATURE_WLAN_SCAN_PNO
572 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
573#else
574 NULL,
575#endif // FEATURE_WLAN_SCAN_PNO
576
577#ifdef WLAN_WAKEUP_EVENTS
578 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
579#else // WLAN_WAKEUP_EVENTS
580 NULL,
581#endif // WLAN_WAKEUP_EVENTS
582
583 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800584
Viral Modi9dc288a2012-12-10 13:09:21 -0800585 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530586#ifdef FEATURE_WLAN_TDLS
587 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
588#else
589 NULL,
590#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700591};
592
593
Jeff Johnsone7245742012-09-05 17:12:55 -0700594/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700595 WLAN DAL Global Control Block
596 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700597WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700598static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
599
Jeff Johnsone7245742012-09-05 17:12:55 -0700600const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700601
602/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700603WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700604void* WDI_GET_PAL_CTX( void )
605{
Jeff Johnsone7245742012-09-05 17:12:55 -0700606 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700607}/*WDI_GET_PAL_CTX*/
608
Jeff Johnsone7245742012-09-05 17:12:55 -0700609/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700610 Helper inline converters
611 ============================================================================*/
612/*Convert WDI driver type into HAL driver type*/
613WPT_STATIC WPT_INLINE WDI_Status
614WDI_HAL_2_WDI_STATUS
615(
616 eHalStatus halStatus
617);
618
619/*Convert WDI request type into HAL request type*/
620WPT_STATIC WPT_INLINE tHalHostMsgType
621WDI_2_HAL_REQ_TYPE
622(
623 WDI_RequestEnumType wdiReqType
624);
625
626/*Convert WDI response type into HAL response type*/
627WPT_STATIC WPT_INLINE WDI_ResponseEnumType
628HAL_2_WDI_RSP_TYPE
629(
630 tHalHostMsgType halMsg
631);
632
633/*Convert WDI driver type into HAL driver type*/
634WPT_STATIC WPT_INLINE tDriverType
635WDI_2_HAL_DRV_TYPE
636(
637 WDI_DriverType wdiDriverType
638);
639
640/*Convert WDI stop reason into HAL stop reason*/
641WPT_STATIC WPT_INLINE tHalStopType
642WDI_2_HAL_STOP_REASON
643(
644 WDI_StopType wdiStopType
645);
646
647/*Convert WDI scan mode type into HAL scan mode type*/
648WPT_STATIC WPT_INLINE eHalSysMode
649WDI_2_HAL_SCAN_MODE
650(
651 WDI_ScanMode wdiScanMode
652);
653
654/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700655WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700656WDI_2_HAL_SEC_CH_OFFSET
657(
658 WDI_HTSecondaryChannelOffset wdiSecChOffset
659);
660
661/*Convert WDI BSS type into HAL BSS type*/
662WPT_STATIC WPT_INLINE tSirBssType
663WDI_2_HAL_BSS_TYPE
664(
665 WDI_BssType wdiBSSType
666);
667
668/*Convert WDI NW type into HAL NW type*/
669WPT_STATIC WPT_INLINE tSirNwType
670WDI_2_HAL_NW_TYPE
671(
672 WDI_NwType wdiNWType
673);
674
675/*Convert WDI chanel bonding type into HAL cb type*/
676WPT_STATIC WPT_INLINE ePhyChanBondState
677WDI_2_HAL_CB_STATE
678(
679 WDI_PhyChanBondState wdiCbState
680);
681
682/*Convert WDI chanel bonding type into HAL cb type*/
683WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
684WDI_2_HAL_HT_OPER_MODE
685(
686 WDI_HTOperatingMode wdiHTOperMode
687);
688
689/*Convert WDI mimo PS type into HAL mimo PS type*/
690WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
691WDI_2_HAL_MIMO_PS
692(
693 WDI_HTMIMOPowerSaveState wdiHTOperMode
694);
695
696/*Convert WDI ENC type into HAL ENC type*/
697WPT_STATIC WPT_INLINE tAniEdType
698WDI_2_HAL_ENC_TYPE
699(
700 WDI_EncryptType wdiEncType
701);
702
703/*Convert WDI WEP type into HAL WEP type*/
704WPT_STATIC WPT_INLINE tAniWepType
705WDI_2_HAL_WEP_TYPE
706(
707 WDI_WepType wdiWEPType
708);
709
710/*Convert WDI Link State into HAL Link State*/
711WPT_STATIC WPT_INLINE tSirLinkState
712WDI_2_HAL_LINK_STATE
713(
714 WDI_LinkStateType wdiLinkState
715);
716
Jeff Johnsone7245742012-09-05 17:12:55 -0700717/*Translate a STA Context from WDI into HAL*/
718WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700719void
720WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700721(
Jeff Johnson295189b2012-06-20 16:38:30 -0700722 tConfigStaParams* phalConfigSta,
723 WDI_ConfigStaReqInfoType* pwdiConfigSta
724);
Jeff Johnsone7245742012-09-05 17:12:55 -0700725
726/*Translate a Rate set info from WDI into HAL*/
727WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700728WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700729(
Jeff Johnson295189b2012-06-20 16:38:30 -0700730 tSirMacRateSet* pHalRateSet,
731 WDI_RateSet* pwdiRateSet
732);
733
734/*Translate an EDCA Parameter Record from WDI into HAL*/
735WPT_STATIC WPT_INLINE void
736WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700737(
Jeff Johnson295189b2012-06-20 16:38:30 -0700738 tSirMacEdcaParamRecord* phalEdcaParam,
739 WDI_EdcaParamRecord* pWDIEdcaParam
740);
741
742/*Copy a management frame header from WDI fmt into HAL fmt*/
743WPT_STATIC WPT_INLINE void
744WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
745(
746 tSirMacMgmtHdr* pmacMgmtHdr,
747 WDI_MacMgmtHdr* pwdiMacMgmtHdr
748);
749
750/*Copy config bss parameters from WDI fmt into HAL fmt*/
751WPT_STATIC WPT_INLINE void
752WDI_CopyWDIConfigBSSToHALConfigBSS
753(
754 tConfigBssParams* phalConfigBSS,
755 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
756);
757
Jeff Johnsone7245742012-09-05 17:12:55 -0700758/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700759 pointed to by user data */
760WPT_STATIC WPT_INLINE void
761WDI_ExtractRequestCBFromEvent
762(
763 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700764 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700765 void** ppUserData
766);
767
768wpt_uint8
769WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700770(
Jeff Johnson295189b2012-06-20 16:38:30 -0700771 WDI_ControlBlockType* pWDICtx,
772 WDI_BSSSessionType** ppSession
773);
774
775void
776WDI_AddBcastSTAtoSTATable
777(
778 WDI_ControlBlockType* pWDICtx,
779 WDI_AddStaParams * staParams,
780 wpt_uint16 usBcastStaIdx
781);
782
783WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700784(
Jeff Johnson295189b2012-06-20 16:38:30 -0700785 WDI_ControlBlockType* pWDICtx,
786 WDI_EventInfoType* pEventData
787);
788
789void
790WDI_SetPowerStateCb
791(
792 wpt_status status,
793 unsigned int dxePhyAddr,
794 void *pContext
795);
796
797#define CASE_RETURN_STRING( str ) \
798 case ( ( str ) ): return( #str ); break \
799
800/**
801 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700802
803 @param wdiReqMsgId: WDI Message request Id
804
805 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700806 @return Result of the function call
807*/
808static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
809{
810 switch (wdiReqMsgId)
811 {
812 CASE_RETURN_STRING( WDI_START_REQ );
813 CASE_RETURN_STRING( WDI_STOP_REQ );
814 CASE_RETURN_STRING( WDI_CLOSE_REQ );
815 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
816 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
817 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
818 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
819 CASE_RETURN_STRING( WDI_JOIN_REQ );
820 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
821 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
822 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
823 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
824 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
825 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
826 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
827 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
828 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
829 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
830 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
831 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
832 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
833 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
834 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
835 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
836 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
837 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
838 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
839 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
840 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
841 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
842 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
843 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
844 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
845 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
846 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530847#ifdef FEATURE_WLAN_TDLS
848 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700850 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
851 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
852 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
853 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
854 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
855 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
856 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
857 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
858 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
859 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
860 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
862 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
863 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
864 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
865 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
866 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
867 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
868 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
869 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
870 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
871 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
872 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
873 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
874 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700875 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700876 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
877 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
878 #ifdef FEATURE_WLAN_SCAN_PNO
879 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
880 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
881 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
882 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700883#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700884 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700885#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700886 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
887 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
888 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
889 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
890 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
891 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
892 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
893 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
894 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800895 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800896 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700897#ifdef WLAN_FEATURE_11W
898 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
899#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700900 default:
901 return "Unknown WDI MessageId";
902 }
903}
904
905
906
907/**
908 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700909
910 @param wdiRespMsgId: WDI Message response Id
911
912 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700913 @return Result of the function call
914*/
915static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
916{
917 switch (wdiRespMsgId)
918 {
919 CASE_RETURN_STRING( WDI_START_RESP );
920 CASE_RETURN_STRING( WDI_STOP_RESP );
921 CASE_RETURN_STRING( WDI_CLOSE_RESP );
922 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
923 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
924 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
925 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
926 CASE_RETURN_STRING( WDI_JOIN_RESP );
927 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
928 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
929 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
930 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
931 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
932 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
933 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
934 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
935 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
936 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
937 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
938 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
939 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
940 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
941 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
942 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
943 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
944 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
945 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
946 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
947 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
948 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
949 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
950 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
951 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
952 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
953 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530954#ifdef FEATURE_WLAN_TDLS
955 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
956 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
957#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700958 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
959 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
960 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
961 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
962 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
963 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
964 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
965 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
966 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
967 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
968 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
969 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
970 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
971 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
972 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
973 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
974 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
975 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
976 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
977 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
978 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
979 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
980 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
981 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
982 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700983 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700984 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
985 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
986 #ifdef FEATURE_WLAN_SCAN_PNO
987 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
988 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
989 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
990 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700991#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700992 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700993#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700994 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
995 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
996 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
997 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
998 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
999 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1000 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1001 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001002 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001003 default:
1004 return "Unknown WDI MessageId";
1005 }
1006}
1007
1008/**
1009 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001010
1011 @param halStatusId: HAL status Id
1012
1013 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001014 @return Result of the function call
1015*/
1016static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1017{
1018 switch (halStatusId)
1019 {
1020 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1021 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1022 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1023 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1024 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1025 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1026 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1027 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1028 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1029 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1030 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1031 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1032 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1033 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1034 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1035 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1036 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1037 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1038 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1039 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1040 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1041 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1042 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1043 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1044 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1045 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1046 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1047 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1048 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1049 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1050 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1051 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1052 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1053 default:
1054 return "Unknown HAL status";
1055 }
1056}
1057
Jeff Johnsone7245742012-09-05 17:12:55 -07001058/*========================================================================
1059
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001061
Jeff Johnson295189b2012-06-20 16:38:30 -07001062==========================================================================*/
1063
1064/**
1065 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001066
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 DAL will allocate all the resources it needs. It will open PAL, it will also
1068 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001069 DXE/SMD or any other drivers that they need.
1070
Jeff Johnson295189b2012-06-20 16:38:30 -07001071 @param pOSContext: pointer to the OS context provided by the UMAC
1072 will be passed on to PAL on Open
1073 ppWDIGlobalCtx: output pointer of Global Context
1074 pWdiDevCapability: output pointer of device capability
1075
1076 @return Result of the function call
1077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001079WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001080(
Jeff Johnson295189b2012-06-20 16:38:30 -07001081 void* pOSContext,
1082 void** ppWDIGlobalCtx,
1083 WDI_DeviceCapabilityType* pWdiDevCapability,
1084 unsigned int driverType
1085)
1086{
1087 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001088 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001090 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1092
1093 /*---------------------------------------------------------------------
1094 Sanity check
1095 ---------------------------------------------------------------------*/
1096 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1097 {
1098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1099 "Invalid input parameters in WDI_Init");
1100
Jeff Johnsone7245742012-09-05 17:12:55 -07001101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 }
1103
1104 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001105 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001106 ---------------------------------------------------------------------*/
1107 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1108 {
1109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1110 "WDI module already initialized - return");
1111
Jeff Johnsone7245742012-09-05 17:12:55 -07001112 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001113 }
1114
1115 /*Module is now initialized - this flag is to ensure the fact that multiple
1116 init will not happen on WDI
1117 !! - potential race does exist because read and set are not atomic,
1118 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001119 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001120
1121 /*Setup the control block */
1122 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001123 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001124
1125 /*Setup the STA Table*/
1126 wdiStatus = WDI_STATableInit(&gWDICb);
1127 if ( WDI_STATUS_SUCCESS != wdiStatus )
1128 {
1129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1130 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001131 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001132 goto fail_STATableInit;
1133 }
1134
1135 /*------------------------------------------------------------------------
1136 Open the PAL
1137 ------------------------------------------------------------------------*/
1138 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1139 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1140 {
1141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1142 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001143 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 goto fail_wpalOpen;
1145 }
1146
1147 /*Initialize main synchro mutex - it will be used to ensure integrity of
1148 the main WDI Control Block*/
1149 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1150 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1151 {
1152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1153 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001154 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001155 goto fail_mutex;
1156 }
1157
1158 /*Initialize the response timer - it will be used to time all messages
1159 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001160 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1161 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 &gWDICb);
1163 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1164 {
1165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1166 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001167 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 goto fail_timer;
1169 }
1170
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001171 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1172 WDI_SsrTimerCB,
1173 &gWDICb);
1174 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1175 {
1176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1177 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001178 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001179 goto fail_timer2;
1180 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001181 /* Initialize the WDI Pending Request Queue*/
1182 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1183 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1184 {
1185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1186 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001187 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 goto fail_pend_queue;
1189 }
1190
1191 /*Init WDI Pending Assoc Id Queue */
1192 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1193 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1194 {
1195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1196 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001197 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001198 goto fail_assoc_queue;
1199 }
1200
1201 /*Initialize the BSS sessions pending Queue */
1202 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1203 {
1204 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1205 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1206 {
1207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1208 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001209 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001210 goto fail_bss_queue;
1211 }
1212 }
1213
1214 /*Indicate the control block is sufficiently initialized for callbacks*/
1215 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1216
1217 /*------------------------------------------------------------------------
1218 Initialize the Data Path Utility Module
1219 ------------------------------------------------------------------------*/
1220 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1221 if ( WDI_STATUS_SUCCESS != wdiStatus )
1222 {
1223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1224 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001225 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001226 goto fail_dp_util_init;
1227 }
1228
1229 /* Init Set power state event */
1230 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001231 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001232 {
1233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1234 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001235 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001236 goto fail_power_event;
1237 }
1238
1239 /* Init WCTS action event */
1240 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001241 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 {
1243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1244 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001245 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001246 goto fail_wcts_event;
1247 }
1248
1249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001250 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 ------------------------------------------------------------------------*/
1252 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1253 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001254 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001255 wctsCBs.wctsRxMsgCBData = &gWDICb;
1256
Jeff Johnsone7245742012-09-05 17:12:55 -07001257 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001259 WDI_CT_CHANNEL_SIZE,
1260 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001261
1262 if ( NULL == gWDICb.wctsHandle )
1263 {
1264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001265 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 goto fail_wcts_open;
1267 }
1268
1269 gWDICb.driverMode = (tDriverType)driverType;
1270 /* FTM mode not need to open Transport Driver */
1271 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001272 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001273 /*------------------------------------------------------------------------
1274 Open the Data Transport
1275 ------------------------------------------------------------------------*/
1276 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1277 {
1278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001279 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 goto fail_wdts_open;
1281 }
1282 }
1283
1284 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001285 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001286
1287 /*Send the context as a ptr to the global WDI Control Block*/
1288 *ppWDIGlobalCtx = &gWDICb;
1289
1290 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001291 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1293 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1294 return WDI_STATUS_SUCCESS;
1295
1296 /* ERROR handlers
1297 Undo everything that completed successfully */
1298
1299 fail_wdts_open:
1300 {
1301 wpt_status eventStatus;
1302
1303 /* Closing WCTS in this scenario is tricky since it has to close
1304 the SMD channel and then we get notified asynchronously when
1305 the channel has been closed. So we take some of the logic from
1306 the "normal" close procedure in WDI_Close()
1307 */
1308
1309 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001310 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001311 {
1312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001313 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001314 }
1315
1316 WCTS_CloseTransport(gWDICb.wctsHandle);
1317
1318 /* Wait for WCTS to close the control transport. If we were able
1319 to reset the event flag, then we'll wait for the event,
1320 otherwise we'll wait for a maximum amount of time required for
1321 the channel to be closed */
1322 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1323 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001324 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 WDI_WCTS_ACTION_TIMEOUT);
1326 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1327 {
1328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001329 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001330 }
1331 }
1332 else
1333 {
1334 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1335 }
1336 }
1337 fail_wcts_open:
1338 wpalEventDelete(&gWDICb.wctsActionEvent);
1339 fail_wcts_event:
1340 wpalEventDelete(&gWDICb.setPowerStateEvent);
1341 fail_power_event:
1342 WDI_DP_UtilsExit(&gWDICb);
1343 fail_dp_util_init:
1344 gWDICb.magic = 0;
1345 fail_bss_queue:
1346 /* entries 0 thru i-1 were successfully initialized */
1347 while (0 < i)
1348 {
1349 i--;
1350 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1351 }
1352 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1353 fail_assoc_queue:
1354 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1355 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001356 wpalTimerDelete(&gWDICb.ssrTimer);
1357 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001358 wpalTimerDelete(&gWDICb.wptResponseTimer);
1359 fail_timer:
1360 wpalMutexDelete(&gWDICb.wptMutex);
1361 fail_mutex:
1362 wpalClose(gWDICb.pPALContext);
1363 fail_wpalOpen:
1364 WDI_STATableClose(&gWDICb);
1365 fail_STATableInit:
1366 gWDIInitialized = eWLAN_PAL_FALSE;
1367
1368 return WDI_STATUS_E_FAILURE;
1369
1370}/*WDI_Init*/;
1371
1372/**
1373 @brief WDI_Start will be called when the upper MAC is ready to
1374 commence operation with the WLAN Device. Upon the call
1375 of this API the WLAN DAL will pack and send a HAL Start
1376 message to the lower RIVA sub-system if the SMD channel
1377 has been fully opened and the RIVA subsystem is up.
1378
1379 If the RIVA sub-system is not yet up and running DAL
1380 will queue the request for Open and will wait for the
1381 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001383
1384 WDI_Init must have been called.
1385
Jeff Johnsone7245742012-09-05 17:12:55 -07001386 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001388
Jeff Johnson295189b2012-06-20 16:38:30 -07001389 wdiStartRspCb: callback for passing back the response of
1390 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001391
Jeff Johnson295189b2012-06-20 16:38:30 -07001392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001393 callback
1394
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 @see WDI_Start
1396 @return Result of the function call
1397*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001398WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001399WDI_Start
1400(
1401 WDI_StartReqParamsType* pwdiStartParams,
1402 WDI_StartRspCb wdiStartRspCb,
1403 void* pUserData
1404)
1405{
1406 WDI_EventInfoType wdiEventData;
1407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1408
1409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001411 ------------------------------------------------------------------------*/
1412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1415 "WDI API call before module is initialized - Fail request");
1416
Jeff Johnsone7245742012-09-05 17:12:55 -07001417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001418 }
1419
1420 /*------------------------------------------------------------------------
1421 Fill in Event data and post to the Main FSM
1422 ------------------------------------------------------------------------*/
1423 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 wdiEventData.pEventData = pwdiStartParams;
1425 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1426 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 wdiEventData.pUserData = pUserData;
1428
1429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1430
1431}/*WDI_Start*/
1432
1433/**
1434 @brief WDI_Stop will be called when the upper MAC is ready to
1435 stop any operation with the WLAN Device. Upon the call
1436 of this API the WLAN DAL will pack and send a HAL Stop
1437 message to the lower RIVA sub-system if the DAL Core is
1438 in started state.
1439
1440 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001441
1442 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001443
1444 WDI_Start must have been called.
1445
Jeff Johnsone7245742012-09-05 17:12:55 -07001446 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001448
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 wdiStopRspCb: callback for passing back the response of
1450 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001451
Jeff Johnson295189b2012-06-20 16:38:30 -07001452 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001453 callback
1454
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 @see WDI_Start
1456 @return Result of the function call
1457*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001458WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001459WDI_Stop
1460(
1461 WDI_StopReqParamsType* pwdiStopParams,
1462 WDI_StopRspCb wdiStopRspCb,
1463 void* pUserData
1464)
1465{
1466 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001467 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1469
1470 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001471 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 ------------------------------------------------------------------------*/
1473 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1474 {
1475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1476 "WDI API call before module is initialized - Fail request");
1477
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001479 }
1480
Jeff Johnson43971f52012-07-17 12:26:56 -07001481 /*Access to the global state must be locked before cleaning */
1482 wpalMutexAcquire(&pWDICtx->wptMutex);
1483
1484 /*Clear all pending request*/
1485 WDI_ClearPendingRequests(pWDICtx);
1486
1487 /*We have completed cleaning unlock now*/
1488 wpalMutexRelease(&pWDICtx->wptMutex);
1489
Jeff Johnson295189b2012-06-20 16:38:30 -07001490 /* Free the global variables */
1491 wpalMemoryFree(gpHostWlanFeatCaps);
1492 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001493 gpHostWlanFeatCaps = NULL;
1494 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001495
1496 /*------------------------------------------------------------------------
1497 Fill in Event data and post to the Main FSM
1498 ------------------------------------------------------------------------*/
1499 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001500 wdiEventData.pEventData = pwdiStopParams;
1501 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1502 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 wdiEventData.pUserData = pUserData;
1504
1505 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1506
1507}/*WDI_Stop*/
1508
1509
1510
1511/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001512 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 needs to interact with DAL. DAL will free its control
1514 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001515
1516 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001517
1518 WDI_Stop must have been called.
1519
1520 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001521
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 @see WDI_Stop
1523 @return Result of the function call
1524*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001525WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001526WDI_Close
1527(
1528 void
1529)
1530{
1531 wpt_uint8 i;
1532 WDI_EventInfoType wdiEventData;
1533 wpt_status wptStatus;
1534 wpt_status eventStatus;
1535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1536
1537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001538 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 ------------------------------------------------------------------------*/
1540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1541 {
1542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1543 "WDI API call before module is initialized - Fail request");
1544
Jeff Johnsone7245742012-09-05 17:12:55 -07001545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001546 }
1547
1548 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1549 (the control transport will be closed by the FSM and we'll want
1550 to wait until that completes)*/
1551 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001552 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001553 {
1554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001555 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001556 /* fall through and try to finish closing via the FSM */
1557 }
1558
1559 /*------------------------------------------------------------------------
1560 Fill in Event data and post to the Main FSM
1561 ------------------------------------------------------------------------*/
1562 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 wdiEventData.pEventData = NULL;
1564 wdiEventData.uEventDataSize = 0;
1565 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 wdiEventData.pUserData = NULL;
1567
1568 gWDIInitialized = eWLAN_PAL_FALSE;
1569
1570 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1571
1572 /*Wait for WCTS to close the control transport
1573 (but only if we were able to reset the event flag*/
1574 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1575 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001576 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 WDI_WCTS_ACTION_TIMEOUT);
1578 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1579 {
1580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001581 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 }
1583 }
1584
1585 /* Destroy the WCTS action event */
1586 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1587 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1588 {
1589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1590 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001591 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001592 }
1593
1594 /* Destroy the Set Power State event */
1595 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1596 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1597 {
1598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1599 "WDI Close failed to destroy an event");
1600
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 }
1603
1604 /*------------------------------------------------------------------------
1605 Closes the Data Path Utility Module
1606 ------------------------------------------------------------------------*/
1607 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1608 {
1609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1610 "WDI Init failed to close the DP Util Module");
1611
Jeff Johnsone7245742012-09-05 17:12:55 -07001612 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001613 }
1614
1615 /*destroy the BSS sessions pending Queue */
1616 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1617 {
1618 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1619 }
1620
1621 /* destroy the WDI Pending Assoc Id Request Queue*/
1622 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1623
1624 /* destroy the WDI Pending Request Queue*/
1625 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001626
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 /*destroy the response timer */
1628 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1629
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001630 /*destroy the SSR timer */
1631 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1632
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 /*invalidate the main synchro mutex */
1634 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1635 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1638 "Failed to delete mutex %d", wptStatus);
1639 WDI_ASSERT(0);
1640 }
1641
1642 /*Clear control block. note that this will clear the "magic"
1643 which will inhibit all asynchronous callbacks*/
1644 WDI_CleanCB(&gWDICb);
1645
1646 return wptStatus;
1647
1648}/*WDI_Close*/
1649
1650/**
1651 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1652 This will do most of the WDI stop & close
1653 operations without doing any handshake with Riva
1654
1655 This will also make sure that the control transport
1656 will NOT be closed.
1657
1658 This request will not be queued.
1659
1660
1661 WDI_Start must have been called.
1662
1663 @param closeTransport: Close control channel if this is set
1664
1665 @return Result of the function call
1666*/
1667WDI_Status
1668WDI_Shutdown
1669(
1670 wpt_boolean closeTransport
1671)
1672{
1673 WDI_EventInfoType wdiEventData;
1674 wpt_status wptStatus;
1675 int i = 0;
1676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1677
1678 /*------------------------------------------------------------------------
1679 Sanity Check
1680 ------------------------------------------------------------------------*/
1681 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1682 {
1683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1684 "WDI API call before module is initialized - Fail request");
1685
1686 return WDI_STATUS_E_NOT_ALLOWED;
1687 }
1688
1689 /*------------------------------------------------------------------------
1690 Fill in Event data and post to the Main FSM
1691 ------------------------------------------------------------------------*/
1692 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1693 wdiEventData.pEventData = NULL;
1694 wdiEventData.uEventDataSize = 0;
1695
1696 /* Shutdown will not be queued, if the state is busy timer will be
1697 * stopped & this message will be processed.*/
1698 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1699 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1700 {
1701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001702 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 }
1704 /* Destroy the Set Power State event */
1705 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1706 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1707 {
1708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1709 "WDI Close failed to destroy an event");
1710
1711 WDI_ASSERT(0);
1712 }
1713 /*------------------------------------------------------------------------
1714 Closes the Data Path Utility Module
1715 ------------------------------------------------------------------------*/
1716 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1717 {
1718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1719 "WDI Init failed to close the DP Util Module");
1720
1721 WDI_ASSERT(0);
1722 }
1723 if ( closeTransport )
1724 {
1725 /* Close control transport, called from module unload */
1726 WCTS_CloseTransport(gWDICb.wctsHandle);
1727 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001728 else
1729 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001730 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001731 the pending messages in the transport queue */
1732 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1733 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001734 /*destroy the BSS sessions pending Queue */
1735 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1736 {
1737 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1738 }
1739
1740 /* destroy the WDI Pending Assoc Id Request Queue*/
1741 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1742 /* destroy the WDI Pending Request Queue*/
1743 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1744 /*destroy the response timer */
1745 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001746 /*destroy the SSR timer */
1747 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001748
1749 /*invalidate the main synchro mutex */
1750 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1751 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1752 {
1753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001754 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 WDI_ASSERT(0);
1756 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001757 /* Free the global variables */
1758 wpalMemoryFree(gpHostWlanFeatCaps);
1759 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001760 gpHostWlanFeatCaps = NULL;
1761 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /*Clear control block. note that this will clear the "magic"
1763 which will inhibit all asynchronous callbacks*/
1764 WDI_CleanCB(&gWDICb);
1765 return wptStatus;
1766
1767}/*WDI_Shutdown*/
1768
1769
Jeff Johnsone7245742012-09-05 17:12:55 -07001770/*========================================================================
1771
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001773
Jeff Johnson295189b2012-06-20 16:38:30 -07001774==========================================================================*/
1775
1776/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001777 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001778 the WLAN Device to get ready for a scan procedure. Upon
1779 the call of this API the WLAN DAL will pack and send a
1780 HAL Init Scan request message to the lower RIVA
1781 sub-system if DAL is in state STARTED.
1782
1783 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001785
1786 WDI_Start must have been called.
1787
1788 @param wdiInitScanParams: the init scan parameters as specified
1789 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001790
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 wdiInitScanRspCb: callback for passing back the response
1792 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001793
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001795 callback
1796
Jeff Johnson295189b2012-06-20 16:38:30 -07001797 @see WDI_Start
1798 @return Result of the function call
1799*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001800WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001801WDI_InitScanReq
1802(
1803 WDI_InitScanReqParamsType* pwdiInitScanParams,
1804 WDI_InitScanRspCb wdiInitScanRspCb,
1805 void* pUserData
1806)
1807{
1808 WDI_EventInfoType wdiEventData;
1809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1810
1811 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001812 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001813 ------------------------------------------------------------------------*/
1814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1815 {
1816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1817 "WDI API call before module is initialized - Fail request");
1818
Jeff Johnsone7245742012-09-05 17:12:55 -07001819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001820 }
1821
1822 /*------------------------------------------------------------------------
1823 Fill in Event data and post to the Main FSM
1824 ------------------------------------------------------------------------*/
1825 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001826 wdiEventData.pEventData = pwdiInitScanParams;
1827 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1828 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001829 wdiEventData.pUserData = pUserData;
1830
1831 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1832
1833}/*WDI_InitScanReq*/
1834
1835/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 wishes to change the Scan channel on the WLAN Device.
1838 Upon the call of this API the WLAN DAL will pack and
1839 send a HAL Start Scan request message to the lower RIVA
1840 sub-system if DAL is in state STARTED.
1841
1842 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001844
1845 WDI_InitScanReq must have been called.
1846
Jeff Johnsone7245742012-09-05 17:12:55 -07001847 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001849
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 wdiStartScanRspCb: callback for passing back the
1851 response of the start scan operation received from the
1852 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001853
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 callback
1856
Jeff Johnson295189b2012-06-20 16:38:30 -07001857 @see WDI_InitScanReq
1858 @return Result of the function call
1859*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001860WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001861WDI_StartScanReq
1862(
1863 WDI_StartScanReqParamsType* pwdiStartScanParams,
1864 WDI_StartScanRspCb wdiStartScanRspCb,
1865 void* pUserData
1866)
1867{
1868 WDI_EventInfoType wdiEventData;
1869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1870
1871 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 ------------------------------------------------------------------------*/
1874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1875 {
1876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1877 "WDI API call before module is initialized - Fail request");
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 }
1881
1882 /*------------------------------------------------------------------------
1883 Fill in Event data and post to the Main FSM
1884 ------------------------------------------------------------------------*/
1885 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 wdiEventData.pEventData = pwdiStartScanParams;
1887 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1888 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 wdiEventData.pUserData = pUserData;
1890
1891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1892
1893}/*WDI_StartScanReq*/
1894
1895
1896/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001897 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001898 wants to end scanning for a particular channel that it
1899 had set before by calling Scan Start on the WLAN Device.
1900 Upon the call of this API the WLAN DAL will pack and
1901 send a HAL End Scan request message to the lower RIVA
1902 sub-system if DAL is in state STARTED.
1903
1904 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001905 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001906
1907 WDI_StartScanReq must have been called.
1908
Jeff Johnsone7245742012-09-05 17:12:55 -07001909 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001910 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001911
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 wdiEndScanRspCb: callback for passing back the response
1913 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001914
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 callback
1917
Jeff Johnson295189b2012-06-20 16:38:30 -07001918 @see WDI_StartScanReq
1919 @return Result of the function call
1920*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001921WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001922WDI_EndScanReq
1923(
1924 WDI_EndScanReqParamsType* pwdiEndScanParams,
1925 WDI_EndScanRspCb wdiEndScanRspCb,
1926 void* pUserData
1927)
1928{
1929 WDI_EventInfoType wdiEventData;
1930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1931
1932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 ------------------------------------------------------------------------*/
1935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1936 {
1937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1938 "WDI API call before module is initialized - Fail request");
1939
Jeff Johnsone7245742012-09-05 17:12:55 -07001940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 }
1942
1943 /*------------------------------------------------------------------------
1944 Fill in Event data and post to the Main FSM
1945 ------------------------------------------------------------------------*/
1946 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 wdiEventData.pEventData = pwdiEndScanParams;
1948 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1949 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 wdiEventData.pUserData = pUserData;
1951
1952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1953
1954}/*WDI_EndScanReq*/
1955
1956
1957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 completed the scan process on the WLAN Device. Upon the
1960 call of this API the WLAN DAL will pack and send a HAL
1961 Finish Scan Request request message to the lower RIVA
1962 sub-system if DAL is in state STARTED.
1963
1964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001966
1967 WDI_InitScanReq must have been called.
1968
Jeff Johnsone7245742012-09-05 17:12:55 -07001969 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001970 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001971
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 wdiFinishScanRspCb: callback for passing back the
1973 response of the finish scan operation received from the
1974 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001975
Jeff Johnson295189b2012-06-20 16:38:30 -07001976 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 callback
1978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 @see WDI_InitScanReq
1980 @return Result of the function call
1981*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001982WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001983WDI_FinishScanReq
1984(
1985 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1986 WDI_FinishScanRspCb wdiFinishScanRspCb,
1987 void* pUserData
1988)
1989{
1990 WDI_EventInfoType wdiEventData;
1991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1992
1993 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001994 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001995 ------------------------------------------------------------------------*/
1996 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1997 {
1998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1999 "WDI API call before module is initialized - Fail request");
2000
Jeff Johnsone7245742012-09-05 17:12:55 -07002001 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 }
2003
2004 /*------------------------------------------------------------------------
2005 Fill in Event data and post to the Main FSM
2006 ------------------------------------------------------------------------*/
2007 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002008 wdiEventData.pEventData = pwdiFinishScanParams;
2009 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2010 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 wdiEventData.pUserData = pUserData;
2012
2013 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2014
2015}/*WDI_FinishScanReq*/
2016
Jeff Johnsone7245742012-09-05 17:12:55 -07002017/*========================================================================
2018
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002020
Jeff Johnson295189b2012-06-20 16:38:30 -07002021==========================================================================*/
2022
2023/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 to start an association procedure to a BSS. Upon the
2026 call of this API the WLAN DAL will pack and send a HAL
2027 Join request message to the lower RIVA sub-system if
2028 DAL is in state STARTED.
2029
2030 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002032
2033 WDI_Start must have been called.
2034
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002036 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002037
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 wdiJoinRspCb: callback for passing back the response of
2039 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002042 callback
2043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 @see WDI_Start
2045 @return Result of the function call
2046*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002048WDI_JoinReq
2049(
2050 WDI_JoinReqParamsType* pwdiJoinParams,
2051 WDI_JoinRspCb wdiJoinRspCb,
2052 void* pUserData
2053)
2054{
2055 WDI_EventInfoType wdiEventData;
2056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2057
2058 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002059 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 ------------------------------------------------------------------------*/
2061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2062 {
2063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2064 "WDI API call before module is initialized - Fail request");
2065
Jeff Johnsone7245742012-09-05 17:12:55 -07002066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002067 }
2068
2069 /*------------------------------------------------------------------------
2070 Fill in Event data and post to the Main FSM
2071 ------------------------------------------------------------------------*/
2072 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002073 wdiEventData.pEventData = pwdiJoinParams;
2074 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2075 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 wdiEventData.pUserData = pUserData;
2077
2078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2079
2080}/*WDI_JoinReq*/
2081
2082/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002083 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002084 wishes to configure the newly acquired or in process of
2085 being acquired BSS to the HW . Upon the call of this API
2086 the WLAN DAL will pack and send a HAL Config BSS request
2087 message to the lower RIVA sub-system if DAL is in state
2088 STARTED.
2089
2090 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002092
2093 WDI_JoinReq must have been called.
2094
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002096 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002097
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 wdiConfigBSSRspCb: callback for passing back the
2099 response of the config BSS operation received from the
2100 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002101
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 callback
2104
Jeff Johnson295189b2012-06-20 16:38:30 -07002105 @see WDI_JoinReq
2106 @return Result of the function call
2107*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002108WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002109WDI_ConfigBSSReq
2110(
2111 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2112 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2113 void* pUserData
2114)
2115{
2116 WDI_EventInfoType wdiEventData;
2117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2118
2119 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 ------------------------------------------------------------------------*/
2122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2123 {
2124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2125 "WDI API call before module is initialized - Fail request");
2126
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 }
2129
2130 /*------------------------------------------------------------------------
2131 Fill in Event data and post to the Main FSM
2132 ------------------------------------------------------------------------*/
2133 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002134 wdiEventData.pEventData = pwdiConfigBSSParams;
2135 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2136 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 wdiEventData.pUserData = pUserData;
2138
2139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2140
2141}/*WDI_ConfigBSSReq*/
2142
2143/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 disassociating from the BSS and wishes to notify HW.
2146 Upon the call of this API the WLAN DAL will pack and
2147 send a HAL Del BSS request message to the lower RIVA
2148 sub-system if DAL is in state STARTED.
2149
2150 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002152
2153 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2154
Jeff Johnsone7245742012-09-05 17:12:55 -07002155 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002157
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 wdiDelBSSRspCb: callback for passing back the response
2159 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002160
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002162 callback
2163
2164 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 @return Result of the function call
2166*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002167WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002168WDI_DelBSSReq
2169(
2170 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2171 WDI_DelBSSRspCb wdiDelBSSRspCb,
2172 void* pUserData
2173)
2174{
2175 WDI_EventInfoType wdiEventData;
2176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2177
2178 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002179 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 ------------------------------------------------------------------------*/
2181 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2182 {
2183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2184 "WDI API call before module is initialized - Fail request");
2185
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 }
2188
2189 /*------------------------------------------------------------------------
2190 Fill in Event data and post to the Main FSM
2191 ------------------------------------------------------------------------*/
2192 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002193 wdiEventData.pEventData = pwdiDelBSSParams;
2194 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2195 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 wdiEventData.pUserData = pUserData;
2197
2198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2199
2200}/*WDI_DelBSSReq*/
2201
2202/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 associated to a BSS and wishes to configure HW for
2205 associated state. Upon the call of this API the WLAN DAL
2206 will pack and send a HAL Post Assoc request message to
2207 the lower RIVA sub-system if DAL is in state STARTED.
2208
2209 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002211
2212 WDI_JoinReq must have been called.
2213
2214 @param wdiPostAssocReqParams: the assoc parameters as specified
2215 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002216
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 wdiPostAssocRspCb: callback for passing back the
2218 response of the post assoc operation received from the
2219 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002220
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 callback
2223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 @see WDI_JoinReq
2225 @return Result of the function call
2226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002228WDI_PostAssocReq
2229(
2230 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2231 WDI_PostAssocRspCb wdiPostAssocRspCb,
2232 void* pUserData
2233)
2234{
2235 WDI_EventInfoType wdiEventData;
2236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2237
2238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 ------------------------------------------------------------------------*/
2241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2242 {
2243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2244 "WDI API call before module is initialized - Fail request");
2245
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 }
2248
2249 /*------------------------------------------------------------------------
2250 Fill in Event data and post to the Main FSM
2251 ------------------------------------------------------------------------*/
2252 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 wdiEventData.pEventData = pwdiPostAssocReqParams;
2254 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2255 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 wdiEventData.pUserData = pUserData;
2257
2258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2259
2260}/*WDI_PostAssocReq*/
2261
2262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 association with another STA has ended and the station
2265 must be deleted from HW. Upon the call of this API the
2266 WLAN DAL will pack and send a HAL Del STA request
2267 message to the lower RIVA sub-system if DAL is in state
2268 STARTED.
2269
2270 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002272
2273 WDI_PostAssocReq must have been called.
2274
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002277
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 wdiDelSTARspCb: callback for passing back the response
2279 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002280
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 callback
2283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 @see WDI_PostAssocReq
2285 @return Result of the function call
2286*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002288WDI_DelSTAReq
2289(
2290 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2291 WDI_DelSTARspCb wdiDelSTARspCb,
2292 void* pUserData
2293)
2294{
2295 WDI_EventInfoType wdiEventData;
2296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2297
2298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002299 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 ------------------------------------------------------------------------*/
2301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2302 {
2303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2304 "WDI API call before module is initialized - Fail request");
2305
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 }
2308
2309 /*------------------------------------------------------------------------
2310 Fill in Event data and post to the Main FSM
2311 ------------------------------------------------------------------------*/
2312 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002313 wdiEventData.pEventData = pwdiDelSTAParams;
2314 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2315 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 wdiEventData.pUserData = pUserData;
2317
2318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2319
2320}/*WDI_DelSTAReq*/
2321
Jeff Johnsone7245742012-09-05 17:12:55 -07002322/*========================================================================
2323
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002325
Jeff Johnson295189b2012-06-20 16:38:30 -07002326==========================================================================*/
2327
2328/**
2329 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2330 install a BSS encryption key on the HW. Upon the call of this
2331 API the WLAN DAL will pack and send a Set BSS Key request
2332 message to the lower RIVA sub-system if DAL is in state
2333 STARTED.
2334
2335 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002337
2338 WDI_PostAssocReq must have been called.
2339
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 wdiSetBSSKeyRspCb: callback for passing back the
2344 response of the set BSS Key operation received from the
2345 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002346
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 callback
2349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 @see WDI_PostAssocReq
2351 @return Result of the function call
2352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002354WDI_SetBSSKeyReq
2355(
2356 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2357 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2358 void* pUserData
2359)
2360{
2361 WDI_EventInfoType wdiEventData;
2362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2363
2364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 ------------------------------------------------------------------------*/
2367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2368 {
2369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2370 "WDI API call before module is initialized - Fail request");
2371
Jeff Johnsone7245742012-09-05 17:12:55 -07002372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 }
2374
2375 /*------------------------------------------------------------------------
2376 Fill in Event data and post to the Main FSM
2377 ------------------------------------------------------------------------*/
2378 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002379 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2380 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2381 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002382 wdiEventData.pUserData = pUserData;
2383
2384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2385
2386}/*WDI_SetBSSKeyReq*/
2387
2388/**
2389 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2390 uninstall a BSS key from HW. Upon the call of this API the
2391 WLAN DAL will pack and send a HAL Remove BSS Key request
2392 message to the lower RIVA sub-system if DAL is in state
2393 STARTED.
2394
2395 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002397
2398 WDI_SetBSSKeyReq must have been called.
2399
Jeff Johnsone7245742012-09-05 17:12:55 -07002400 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002402
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 wdiRemoveBSSKeyRspCb: callback for passing back the
2404 response of the remove BSS key operation received from
2405 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 callback
2409
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 @see WDI_SetBSSKeyReq
2411 @return Result of the function call
2412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002414WDI_RemoveBSSKeyReq
2415(
2416 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2417 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2418 void* pUserData
2419)
2420{
2421 WDI_EventInfoType wdiEventData;
2422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2423
2424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 ------------------------------------------------------------------------*/
2427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2428 {
2429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2430 "WDI API call before module is initialized - Fail request");
2431
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 }
2434
2435 /*------------------------------------------------------------------------
2436 Fill in Event data and post to the Main FSM
2437 ------------------------------------------------------------------------*/
2438 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2440 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2441 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 wdiEventData.pUserData = pUserData;
2443
2444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2445
2446}/*WDI_RemoveBSSKeyReq*/
2447
2448
2449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 ready to install a STA(ast) encryption key in HW. Upon
2452 the call of this API the WLAN DAL will pack and send a
2453 HAL Set STA Key request message to the lower RIVA
2454 sub-system if DAL is in state STARTED.
2455
2456 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002458
2459 WDI_PostAssocReq must have been called.
2460
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 wdiSetSTAKeyRspCb: callback for passing back the
2465 response of the set STA key operation received from the
2466 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 callback
2470
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 @see WDI_PostAssocReq
2472 @return Result of the function call
2473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002475WDI_SetSTAKeyReq
2476(
2477 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2478 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2479 void* pUserData
2480)
2481{
2482 WDI_EventInfoType wdiEventData;
2483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2484
2485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 ------------------------------------------------------------------------*/
2488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2489 {
2490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2491 "WDI API call before module is initialized - Fail request");
2492
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 }
2495
2496 /*------------------------------------------------------------------------
2497 Fill in Event data and post to the Main FSM
2498 ------------------------------------------------------------------------*/
2499 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2501 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2502 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 wdiEventData.pUserData = pUserData;
2504
2505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2506
2507}/*WDI_SetSTAKeyReq*/
2508
2509
2510/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 wants to uninstall a previously set STA key in HW. Upon
2513 the call of this API the WLAN DAL will pack and send a
2514 HAL Remove STA Key request message to the lower RIVA
2515 sub-system if DAL is in state STARTED.
2516
2517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002519
2520 WDI_SetSTAKeyReq must have been called.
2521
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002524
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 wdiRemoveSTAKeyRspCb: callback for passing back the
2526 response of the remove STA key operation received from
2527 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002528
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 callback
2531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 @see WDI_SetSTAKeyReq
2533 @return Result of the function call
2534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002536WDI_RemoveSTAKeyReq
2537(
2538 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2539 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2540 void* pUserData
2541)
2542{
2543 WDI_EventInfoType wdiEventData;
2544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2545
2546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 ------------------------------------------------------------------------*/
2549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2550 {
2551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2552 "WDI API call before module is initialized - Fail request");
2553
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002555 }
2556
2557 /*------------------------------------------------------------------------
2558 Fill in Event data and post to the Main FSM
2559 ------------------------------------------------------------------------*/
2560 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2562 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2563 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 wdiEventData.pUserData = pUserData;
2565
2566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2567
2568}/*WDI_RemoveSTAKeyReq*/
2569
2570
2571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wants to install a STA Bcast encryption key on the HW.
2574 Upon the call of this API the WLAN DAL will pack and
2575 send a HAL Start request message to the lower RIVA
2576 sub-system if DAL is in state STARTED.
2577
2578 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002580
2581 WDI_PostAssocReq must have been called.
2582
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002585
Jeff Johnson295189b2012-06-20 16:38:30 -07002586 wdiSetSTABcastKeyRspCb: callback for passing back the
2587 response of the set BSS Key operation received from the
2588 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002589
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 callback
2592
Jeff Johnson295189b2012-06-20 16:38:30 -07002593 @see WDI_PostAssocReq
2594 @return Result of the function call
2595*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002596WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002597WDI_SetSTABcastKeyReq
2598(
2599 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2600 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2601 void* pUserData
2602)
2603
2604{
2605 WDI_EventInfoType wdiEventData;
2606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2607
2608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 ------------------------------------------------------------------------*/
2611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2612 {
2613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2614 "WDI API call before module is initialized - Fail request");
2615
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 }
2618
2619 /*------------------------------------------------------------------------
2620 Fill in Event data and post to the Main FSM
2621 ------------------------------------------------------------------------*/
2622 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2624 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2625 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiEventData.pUserData = pUserData;
2627
2628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2629
2630}/*WDI_SetSTABcastKeyReq*/
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 MAC wants to uninstall a STA Bcast key from HW. Upon the
2635 call of this API the WLAN DAL will pack and send a HAL
2636 Remove STA Bcast Key request message to the lower RIVA
2637 sub-system if DAL is in state STARTED.
2638
2639 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002641
2642 WDI_SetSTABcastKeyReq must have been called.
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 parameters as specified by the Device
2646 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002647
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2649 response of the remove STA Bcast key operation received
2650 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002653 callback
2654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 @see WDI_SetSTABcastKeyReq
2656 @return Result of the function call
2657*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002659WDI_RemoveSTABcastKeyReq
2660(
2661 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2662 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2663 void* pUserData
2664)
2665{
2666 WDI_EventInfoType wdiEventData;
2667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2668
2669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 ------------------------------------------------------------------------*/
2672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2673 {
2674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2675 "WDI API call before module is initialized - Fail request");
2676
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 }
2679
2680 /*------------------------------------------------------------------------
2681 Fill in Event data and post to the Main FSM
2682 ------------------------------------------------------------------------*/
2683 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2685 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2686 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 wdiEventData.pUserData = pUserData;
2688
2689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2690
2691}/*WDI_RemoveSTABcastKeyReq*/
2692
2693/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 MAC wants to set Max Tx Power to HW. Upon the
2696 call of this API the WLAN DAL will pack and send a HAL
2697 Remove STA Bcast Key request message to the lower RIVA
2698 sub-system if DAL is in state STARTED.
2699
2700 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002702
2703 WDI_SetSTABcastKeyReq must have been called.
2704
Jeff Johnsone7245742012-09-05 17:12:55 -07002705 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 parameters as specified by the Device
2707 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002708
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2710 response of the remove STA Bcast key operation received
2711 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 callback
2715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 @see WDI_SetMaxTxPowerReq
2717 @return Result of the function call
2718*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002719WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002720WDI_SetMaxTxPowerReq
2721(
2722 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2723 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2724 void* pUserData
2725)
2726{
2727 WDI_EventInfoType wdiEventData;
2728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2729
2730 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 ------------------------------------------------------------------------*/
2733 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2734 {
2735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2736 "WDI API call before module is initialized - Fail request");
2737
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 }
2740
2741 /*------------------------------------------------------------------------
2742 Fill in Event data and post to the Main FSM
2743 ------------------------------------------------------------------------*/
2744 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2746 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2747 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 wdiEventData.pUserData = pUserData;
2749
2750 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2751}
2752
schangd82195a2013-03-13 18:41:24 -07002753/**
2754 @brief WDI_SetTxPowerReq will be called when the upper
2755 MAC wants to set Tx Power to HW.
2756 In state BUSY this request will be queued. Request won't
2757 be allowed in any other state.
2758
2759
2760 @param pwdiSetTxPowerParams: set TS Power parameters
2761 BSSID and target TX Power with dbm included
2762
2763 wdiReqStatusCb: callback for passing back the response
2764
2765 pUserData: user data will be passed back with the
2766 callback
2767
2768 @return Result of the function call
2769*/
2770WDI_Status
2771WDI_SetTxPowerReq
2772(
2773 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2774 WDA_SetTxPowerRspCb wdiReqStatusCb,
2775 void* pUserData
2776)
2777{
2778 WDI_EventInfoType wdiEventData;
2779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2780
2781 /*------------------------------------------------------------------------
2782 Sanity Check
2783 ------------------------------------------------------------------------*/
2784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2785 {
2786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2787 "WDI API call before module is initialized - Fail request");
2788
2789 return WDI_STATUS_E_NOT_ALLOWED;
2790 }
2791
2792 /*------------------------------------------------------------------------
2793 Fill in Event data and post to the Main FSM
2794 ------------------------------------------------------------------------*/
2795 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2796 wdiEventData.pEventData = pwdiSetTxPowerParams;
2797 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2798 wdiEventData.pCBfnc = wdiReqStatusCb;
2799 wdiEventData.pUserData = pUserData;
2800
2801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2802}
2803
Jeff Johnson295189b2012-06-20 16:38:30 -07002804#ifdef FEATURE_WLAN_CCX
2805WDI_Status
2806WDI_TSMStatsReq
2807(
2808 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2809 WDI_TsmRspCb wdiReqStatusCb,
2810 void* pUserData
2811)
2812{
2813 WDI_EventInfoType wdiEventData;
2814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 /*------------------------------------------------------------------------
2816 Sanity Check
2817 ------------------------------------------------------------------------*/
2818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2819 {
2820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2821 "WDI API call before module is initialized - Fail request");
2822
2823 return WDI_STATUS_E_NOT_ALLOWED;
2824 }
2825
2826 /*------------------------------------------------------------------------
2827 Fill in Event data and post to the Main FSM
2828 ------------------------------------------------------------------------*/
2829 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2830 wdiEventData.pEventData = pwdiTsmReqParams;
2831 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2832 wdiEventData.pCBfnc = wdiReqStatusCb;
2833 wdiEventData.pUserData = pUserData;
2834
2835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2836
2837}
2838#endif
2839
2840/*========================================================================
2841
2842 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844==========================================================================*/
2845
2846/**
2847 @brief WDI_AddTSReq will be called when the upper MAC to inform
2848 the device of a successful add TSpec negotiation. HW
2849 needs to receive the TSpec Info from the UMAC in order
2850 to configure properly the QoS data traffic. Upon the
2851 call of this API the WLAN DAL will pack and send a HAL
2852 Add TS request message to the lower RIVA sub-system if
2853 DAL is in state STARTED.
2854
2855 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002857
2858 WDI_PostAssocReq must have been called.
2859
2860 @param wdiAddTsReqParams: the add TS parameters as specified by
2861 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002862
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 wdiAddTsRspCb: callback for passing back the response of
2864 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002865
Jeff Johnson295189b2012-06-20 16:38:30 -07002866 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 callback
2868
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 @see WDI_PostAssocReq
2870 @return Result of the function call
2871*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002873WDI_AddTSReq
2874(
2875 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2876 WDI_AddTsRspCb wdiAddTsRspCb,
2877 void* pUserData
2878)
2879{
2880 WDI_EventInfoType wdiEventData;
2881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2882
2883 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 ------------------------------------------------------------------------*/
2886 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2887 {
2888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2889 "WDI API call before module is initialized - Fail request");
2890
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 }
2893
2894 /*------------------------------------------------------------------------
2895 Fill in Event data and post to the Main FSM
2896 ------------------------------------------------------------------------*/
2897 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002898 wdiEventData.pEventData = pwdiAddTsReqParams;
2899 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2900 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 wdiEventData.pUserData = pUserData;
2902
2903 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2904
2905}/*WDI_AddTSReq*/
2906
2907
2908
2909/**
2910 @brief WDI_DelTSReq will be called when the upper MAC has ended
2911 admission on a specific AC. This is to inform HW that
2912 QoS traffic parameters must be rest. Upon the call of
2913 this API the WLAN DAL will pack and send a HAL Del TS
2914 request message to the lower RIVA sub-system if DAL is
2915 in state STARTED.
2916
2917 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002919
2920 WDI_AddTSReq must have been called.
2921
2922 @param wdiDelTsReqParams: the del TS parameters as specified by
2923 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 wdiDelTsRspCb: callback for passing back the response of
2926 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002927
Jeff Johnson295189b2012-06-20 16:38:30 -07002928 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 callback
2930
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 @see WDI_AddTSReq
2932 @return Result of the function call
2933*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002934WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002935WDI_DelTSReq
2936(
2937 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2938 WDI_DelTsRspCb wdiDelTsRspCb,
2939 void* pUserData
2940)
2941{
2942 WDI_EventInfoType wdiEventData;
2943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2944
2945 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 ------------------------------------------------------------------------*/
2948 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2949 {
2950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2951 "WDI API call before module is initialized - Fail request");
2952
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 }
2955
2956 /*------------------------------------------------------------------------
2957 Fill in Event data and post to the Main FSM
2958 ------------------------------------------------------------------------*/
2959 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002960 wdiEventData.pEventData = pwdiDelTsReqParams;
2961 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2962 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 wdiEventData.pUserData = pUserData;
2964
2965 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2966
2967}/*WDI_DelTSReq*/
2968
2969
2970
2971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002973 wishes to update the EDCA parameters used by HW for QoS
2974 data traffic. Upon the call of this API the WLAN DAL
2975 will pack and send a HAL Update EDCA Params request
2976 message to the lower RIVA sub-system if DAL is in state
2977 STARTED.
2978
2979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002981
2982 WDI_PostAssocReq must have been called.
2983
Jeff Johnsone7245742012-09-05 17:12:55 -07002984 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002986
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 wdiUpdateEDCAParamsRspCb: callback for passing back the
2988 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002989
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002991 callback
2992
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 @see WDI_PostAssocReq
2994 @return Result of the function call
2995*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002996WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002997WDI_UpdateEDCAParams
2998(
2999 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3000 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3001 void* pUserData
3002)
3003{
3004 WDI_EventInfoType wdiEventData;
3005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3006
3007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003008 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003009 ------------------------------------------------------------------------*/
3010 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3011 {
3012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3013 "WDI API call before module is initialized - Fail request");
3014
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 }
3017
3018 /*------------------------------------------------------------------------
3019 Fill in Event data and post to the Main FSM
3020 ------------------------------------------------------------------------*/
3021 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003022 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3023 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3024 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 wdiEventData.pUserData = pUserData;
3026
3027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3028
3029}/*WDI_UpdateEDCAParams*/
3030
3031
3032/**
3033 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3034 successfully a BA session and needs to notify the HW for
3035 the appropriate settings to take place. Upon the call of
3036 this API the WLAN DAL will pack and send a HAL Add BA
3037 request message to the lower RIVA sub-system if DAL is
3038 in state STARTED.
3039
3040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003042
3043 WDI_PostAssocReq must have been called.
3044
3045 @param wdiAddBAReqParams: the add BA parameters as specified by
3046 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003047
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 wdiAddBARspCb: callback for passing back the response of
3049 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003050
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003052 callback
3053
Jeff Johnson295189b2012-06-20 16:38:30 -07003054 @see WDI_PostAssocReq
3055 @return Result of the function call
3056*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003057WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003058WDI_AddBASessionReq
3059(
3060 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3061 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3062 void* pUserData
3063)
3064{
3065 WDI_EventInfoType wdiEventData;
3066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3067
3068 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003070 ------------------------------------------------------------------------*/
3071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3072 {
3073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3074 "WDI API call before module is initialized - Fail request");
3075
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003077 }
3078
3079 /*------------------------------------------------------------------------
3080 Fill in Event data and post to the Main FSM
3081 ------------------------------------------------------------------------*/
3082 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3084 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3085 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 wdiEventData.pUserData = pUserData;
3087
3088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3089
3090}/*WDI_AddBASessionReq*/
3091
3092/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003093 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003094 inform HW that it has deleted a previously created BA
3095 session. Upon the call of this API the WLAN DAL will
3096 pack and send a HAL Del BA request message to the lower
3097 RIVA sub-system if DAL is in state STARTED.
3098
3099 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003101
3102 WDI_AddBAReq must have been called.
3103
3104 @param wdiDelBAReqParams: the del BA parameters as specified by
3105 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003106
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 wdiDelBARspCb: callback for passing back the response of
3108 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003109
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 callback
3112
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 @see WDI_AddBAReq
3114 @return Result of the function call
3115*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003116WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003117WDI_DelBAReq
3118(
3119 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3120 WDI_DelBARspCb wdiDelBARspCb,
3121 void* pUserData
3122)
3123{
3124 WDI_EventInfoType wdiEventData;
3125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3126
3127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 ------------------------------------------------------------------------*/
3130 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3131 {
3132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3133 "WDI API call before module is initialized - Fail request");
3134
Jeff Johnsone7245742012-09-05 17:12:55 -07003135 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 }
3137
3138 /*------------------------------------------------------------------------
3139 Fill in Event data and post to the Main FSM
3140 ------------------------------------------------------------------------*/
3141 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 wdiEventData.pEventData = pwdiDelBAReqParams;
3143 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3144 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 wdiEventData.pUserData = pUserData;
3146
3147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3148
3149}/*WDI_DelBAReq*/
3150
Jeff Johnsone7245742012-09-05 17:12:55 -07003151/*========================================================================
3152
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003154
Jeff Johnson295189b2012-06-20 16:38:30 -07003155==========================================================================*/
3156
3157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 wants to set the power save related configurations of
3160 the WLAN Device. Upon the call of this API the WLAN DAL
3161 will pack and send a HAL Update CFG request message to
3162 the lower RIVA sub-system if DAL is in state STARTED.
3163
3164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003166
3167 WDI_Start must have been called.
3168
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003170 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003171
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 wdiSetPwrSaveCfgCb: callback for passing back the
3173 response of the set power save cfg operation received
3174 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003175
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 callback
3178
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 @return Result of the function call
3181*/
3182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003183WDI_SetPwrSaveCfgReq
3184(
3185 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3186 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3187 void* pUserData
3188)
3189{
3190 WDI_EventInfoType wdiEventData;
3191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3192
3193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 ------------------------------------------------------------------------*/
3196 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3197 {
3198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3199 "WDI API call before module is initialized - Fail request");
3200
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 }
3203
3204 /*------------------------------------------------------------------------
3205 Fill in Event data and post to the Main FSM
3206 ------------------------------------------------------------------------*/
3207 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 wdiEventData.pEventData = pwdiPowerSaveCfg;
3209 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3210 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 wdiEventData.pUserData = pUserData;
3212
3213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3214
3215}/*WDI_SetPwrSaveCfgReq*/
3216
3217/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 request the device to get into IMPS power state. Upon
3220 the call of this API the WLAN DAL will send a HAL Enter
3221 IMPS request message to the lower RIVA sub-system if DAL
3222 is in state STARTED.
3223
3224 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003226
Jeff Johnsone7245742012-09-05 17:12:55 -07003227
3228 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003229 response of the Enter IMPS operation received from the
3230 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003231
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 callback
3234
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 @see WDI_Start
3236 @return Result of the function call
3237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003239WDI_EnterImpsReq
3240(
3241 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3242 void* pUserData
3243)
3244{
3245 WDI_EventInfoType wdiEventData;
3246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3247
3248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 ------------------------------------------------------------------------*/
3251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3252 {
3253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3254 "WDI API call before module is initialized - Fail request");
3255
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 }
3258
3259 /*------------------------------------------------------------------------
3260 Fill in Event data and post to the Main FSM
3261 ------------------------------------------------------------------------*/
3262 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 wdiEventData.pEventData = NULL;
3264 wdiEventData.uEventDataSize = 0;
3265 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 wdiEventData.pUserData = pUserData;
3267
3268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3269
3270}/*WDI_EnterImpsReq*/
3271
3272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 request the device to get out of IMPS power state. Upon
3275 the call of this API the WLAN DAL will send a HAL Exit
3276 IMPS request message to the lower RIVA sub-system if DAL
3277 is in state STARTED.
3278
3279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003281
Jeff Johnson295189b2012-06-20 16:38:30 -07003282
Jeff Johnsone7245742012-09-05 17:12:55 -07003283
3284 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003286
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003288 callback
3289
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 @see WDI_Start
3291 @return Result of the function call
3292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003294WDI_ExitImpsReq
3295(
3296 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3297 void* pUserData
3298)
3299{
3300 WDI_EventInfoType wdiEventData;
3301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3302
3303 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003304 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003305 ------------------------------------------------------------------------*/
3306 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3307 {
3308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3309 "WDI API call before module is initialized - Fail request");
3310
Jeff Johnsone7245742012-09-05 17:12:55 -07003311 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 }
3313
3314 /*------------------------------------------------------------------------
3315 Fill in Event data and post to the Main FSM
3316 ------------------------------------------------------------------------*/
3317 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003318 wdiEventData.pEventData = NULL;
3319 wdiEventData.uEventDataSize = 0;
3320 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003321 wdiEventData.pUserData = pUserData;
3322
3323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3324
3325}/*WDI_ExitImpsReq*/
3326
3327/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003329 request the device to get into BMPS power state. Upon
3330 the call of this API the WLAN DAL will pack and send a
3331 HAL Enter BMPS request message to the lower RIVA
3332 sub-system if DAL is in state STARTED.
3333
3334 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003336
3337 WDI_PostAssocReq must have been called.
3338
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003341
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 wdiEnterBmpsRspCb: callback for passing back the
3343 response of the Enter BMPS operation received from the
3344 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003345
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003347 callback
3348
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 @see WDI_PostAssocReq
3350 @return Result of the function call
3351*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003352WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003353WDI_EnterBmpsReq
3354(
3355 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3356 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3357 void* pUserData
3358)
3359{
3360 WDI_EventInfoType wdiEventData;
3361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3362
3363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003364 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 ------------------------------------------------------------------------*/
3366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3367 {
3368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3369 "WDI API call before module is initialized - Fail request");
3370
Jeff Johnsone7245742012-09-05 17:12:55 -07003371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003372 }
3373
3374 /*------------------------------------------------------------------------
3375 Fill in Event data and post to the Main FSM
3376 ------------------------------------------------------------------------*/
3377 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003378 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3379 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3380 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 wdiEventData.pUserData = pUserData;
3382
3383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3384
3385}/*WDI_EnterBmpsReq*/
3386
3387/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003389 request the device to get out of BMPS power state. Upon
3390 the call of this API the WLAN DAL will pack and send a
3391 HAL Exit BMPS request message to the lower RIVA
3392 sub-system if DAL is in state STARTED.
3393
3394 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003396
3397 WDI_PostAssocReq must have been called.
3398
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003401
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 wdiExitBmpsRspCb: callback for passing back the response
3403 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003404
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 callback
3407
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 @see WDI_PostAssocReq
3409 @return Result of the function call
3410*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003411WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003412WDI_ExitBmpsReq
3413(
3414 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3415 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3416 void* pUserData
3417)
3418{
3419 WDI_EventInfoType wdiEventData;
3420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3421
3422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 ------------------------------------------------------------------------*/
3425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3426 {
3427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3428 "WDI API call before module is initialized - Fail request");
3429
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 }
3432
3433 /*------------------------------------------------------------------------
3434 Fill in Event data and post to the Main FSM
3435 ------------------------------------------------------------------------*/
3436 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3438 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3439 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 wdiEventData.pUserData = pUserData;
3441
3442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3443
3444}/*WDI_ExitBmpsReq*/
3445
3446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003447 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 request the device to get into UAPSD power state. Upon
3449 the call of this API the WLAN DAL will pack and send a
3450 HAL Enter UAPSD request message to the lower RIVA
3451 sub-system if DAL is in state STARTED.
3452
3453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003455
3456 WDI_PostAssocReq must have been called.
3457 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003458
3459 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003461
Jeff Johnson295189b2012-06-20 16:38:30 -07003462 wdiEnterUapsdRspCb: callback for passing back the
3463 response of the Enter UAPSD operation received from the
3464 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003465
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 callback
3468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3470 @return Result of the function call
3471*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003472WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003473WDI_EnterUapsdReq
3474(
3475 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3476 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3477 void* pUserData
3478)
3479{
3480 WDI_EventInfoType wdiEventData;
3481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3482
3483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 ------------------------------------------------------------------------*/
3486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3487 {
3488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3489 "WDI API call before module is initialized - Fail request");
3490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 }
3493
3494 /*------------------------------------------------------------------------
3495 Fill in Event data and post to the Main FSM
3496 ------------------------------------------------------------------------*/
3497 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3499 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3500 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiEventData.pUserData = pUserData;
3502
3503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3504
3505}/*WDI_EnterUapsdReq*/
3506
3507/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 request the device to get out of UAPSD power state. Upon
3510 the call of this API the WLAN DAL will send a HAL Exit
3511 UAPSD request message to the lower RIVA sub-system if
3512 DAL is in state STARTED.
3513
3514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003516
3517 WDI_PostAssocReq must have been called.
3518
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 response of the Exit UAPSD operation received from the
3521 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003522
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003524 callback
3525
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 @see WDI_PostAssocReq
3527 @return Result of the function call
3528*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003529WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003530WDI_ExitUapsdReq
3531(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003532 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3534 void* pUserData
3535)
3536{
3537 WDI_EventInfoType wdiEventData;
3538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3539
3540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 ------------------------------------------------------------------------*/
3543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3544 {
3545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3546 "WDI API call before module is initialized - Fail request");
3547
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 }
3550
3551 /*------------------------------------------------------------------------
3552 Fill in Event data and post to the Main FSM
3553 ------------------------------------------------------------------------*/
3554 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003555 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3556 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003557 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 wdiEventData.pUserData = pUserData;
3559
3560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3561
3562}/*WDI_ExitUapsdReq*/
3563
3564/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 MAC wants to set the UAPSD related configurations
3567 of an associated STA (while acting as an AP) to the WLAN
3568 Device. Upon the call of this API the WLAN DAL will pack
3569 and send a HAL Update UAPSD params request message to
3570 the lower RIVA sub-system if DAL is in state STARTED.
3571
3572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003574
3575 WDI_ConfigBSSReq must have been called.
3576
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003579
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 wdiUpdateUapsdParamsCb: callback for passing back the
3581 response of the update UAPSD params operation received
3582 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003583
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003585 callback
3586
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 @see WDI_ConfigBSSReq
3588 @return Result of the function call
3589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003591WDI_UpdateUapsdParamsReq
3592(
3593 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3594 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3595 void* pUserData
3596)
3597{
3598 WDI_EventInfoType wdiEventData;
3599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3600
3601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 ------------------------------------------------------------------------*/
3604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3605 {
3606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3607 "WDI API call before module is initialized - Fail request");
3608
Jeff Johnsone7245742012-09-05 17:12:55 -07003609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003610 }
3611
3612 /*------------------------------------------------------------------------
3613 Fill in Event data and post to the Main FSM
3614 ------------------------------------------------------------------------*/
3615 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003616 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003617 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003619 wdiEventData.pUserData = pUserData;
3620
3621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3622
3623}/*WDI_UpdateUapsdParamsReq*/
3624
3625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 MAC wants to set the UAPSD related configurations before
3628 requesting for enter UAPSD power state to the WLAN
3629 Device. Upon the call of this API the WLAN DAL will pack
3630 and send a HAL Set UAPSD params request message to
3631 the lower RIVA sub-system if DAL is in state STARTED.
3632
3633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003635
3636 WDI_PostAssocReq must have been called.
3637
3638 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003640
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 wdiSetUapsdAcParamsCb: callback for passing back the
3642 response of the set UAPSD params operation received from
3643 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 callback
3647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 @see WDI_PostAssocReq
3649 @return Result of the function call
3650*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003651WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003652WDI_SetUapsdAcParamsReq
3653(
3654 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3655 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3656 void* pUserData
3657)
3658{
3659 WDI_EventInfoType wdiEventData;
3660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3661
3662 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 ------------------------------------------------------------------------*/
3665 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3666 {
3667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3668 "WDI API call before module is initialized - Fail request");
3669
Jeff Johnsone7245742012-09-05 17:12:55 -07003670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 }
3672
3673 /*------------------------------------------------------------------------
3674 Fill in Event data and post to the Main FSM
3675 ------------------------------------------------------------------------*/
3676 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 wdiEventData.pEventData = pwdiUapsdInfo;
3678 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3679 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 wdiEventData.pUserData = pUserData;
3681
3682 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3683
3684}/*WDI_SetUapsdAcParamsReq*/
3685
3686/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 MAC wants to set/reset the RXP filters for received pkts
3689 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3690 and send a HAL configure RXP filter request message to
3691 the lower RIVA sub-system.
3692
3693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003695
Jeff Johnsone7245742012-09-05 17:12:55 -07003696
3697 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 filter as specified by the Device
3699 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003700
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 wdiConfigureRxpFilterCb: callback for passing back the
3702 response of the configure RXP filter operation received
3703 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003704
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003706 callback
3707
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 @return Result of the function call
3709*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003711WDI_ConfigureRxpFilterReq
3712(
3713 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3714 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3715 void* pUserData
3716)
3717{
3718 WDI_EventInfoType wdiEventData;
3719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3720
3721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 ------------------------------------------------------------------------*/
3724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3725 {
3726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3727 "WDI API call before module is initialized - Fail request");
3728
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 }
3731
3732 /*------------------------------------------------------------------------
3733 Fill in Event data and post to the Main FSM
3734 ------------------------------------------------------------------------*/
3735 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003736 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3737 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3738 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 wdiEventData.pUserData = pUserData;
3740
3741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3742}/*WDI_ConfigureRxpFilterReq*/
3743
3744/**
3745 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3746 wants to set the beacon filters while in power save.
3747 Upon the call of this API the WLAN DAL will pack and
3748 send a Beacon filter request message to the
3749 lower RIVA sub-system.
3750
3751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003753
Jeff Johnsone7245742012-09-05 17:12:55 -07003754
3755 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 filter as specified by the Device
3757 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003758
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 wdiBeaconFilterCb: callback for passing back the
3760 response of the set beacon filter operation received
3761 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003762
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 callback
3765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 @return Result of the function call
3767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003769WDI_SetBeaconFilterReq
3770(
3771 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3772 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3773 void* pUserData
3774)
3775{
3776 WDI_EventInfoType wdiEventData;
3777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3778
3779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 ------------------------------------------------------------------------*/
3782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3783 {
3784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3785 "WDI API call before module is initialized - Fail request");
3786
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 }
3789
3790 /*------------------------------------------------------------------------
3791 Fill in Event data and post to the Main FSM
3792 ------------------------------------------------------------------------*/
3793 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003794 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003795 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 wdiEventData.pUserData = pUserData;
3798
3799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3800}/*WDI_SetBeaconFilterReq*/
3801
3802/**
3803 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3804 wants to remove the beacon filter for particular IE
3805 while in power save. Upon the call of this API the WLAN
3806 DAL will pack and send a remove Beacon filter request
3807 message to the lower RIVA sub-system.
3808
3809 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003811
Jeff Johnsone7245742012-09-05 17:12:55 -07003812
3813 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 filter as specified by the Device
3815 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003816
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 wdiBeaconFilterCb: callback for passing back the
3818 response of the remove beacon filter operation received
3819 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 callback
3823
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 @return Result of the function call
3825*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003826WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003827WDI_RemBeaconFilterReq
3828(
3829 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3830 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3831 void* pUserData
3832)
3833{
3834 WDI_EventInfoType wdiEventData;
3835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3836
3837 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003839 ------------------------------------------------------------------------*/
3840 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3841 {
3842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3843 "WDI API call before module is initialized - Fail request");
3844
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 }
3847
3848 /*------------------------------------------------------------------------
3849 Fill in Event data and post to the Main FSM
3850 ------------------------------------------------------------------------*/
3851 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003853 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 wdiEventData.pUserData = pUserData;
3856
3857 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3858}/*WDI_RemBeaconFilterReq*/
3859
3860/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 MAC wants to set the RSSI thresholds related
3863 configurations while in power save. Upon the call of
3864 this API the WLAN DAL will pack and send a HAL Set RSSI
3865 thresholds request message to the lower RIVA
3866 sub-system if DAL is in state STARTED.
3867
3868 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003869 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003870
3871 WDI_PostAssocReq must have been called.
3872
3873 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3874 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003875
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 wdiSetUapsdAcParamsCb: callback for passing back the
3877 response of the set UAPSD params operation received from
3878 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003879
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 callback
3882
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 @see WDI_PostAssocReq
3884 @return Result of the function call
3885*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003886WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003887WDI_SetRSSIThresholdsReq
3888(
3889 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3890 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3891 void* pUserData
3892)
3893{
3894 WDI_EventInfoType wdiEventData;
3895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3896
3897 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 ------------------------------------------------------------------------*/
3900 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3901 {
3902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3903 "WDI API call before module is initialized - Fail request");
3904
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 }
3907
3908 /*------------------------------------------------------------------------
3909 Fill in Event data and post to the Main FSM
3910 ------------------------------------------------------------------------*/
3911 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003913 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 wdiEventData.pUserData = pUserData;
3916
3917 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3918}/* WDI_SetRSSIThresholdsReq*/
3919
3920/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003922 wants to set the filter to minimize unnecessary host
3923 wakeup due to broadcast traffic while in power save.
3924 Upon the call of this API the WLAN DAL will pack and
3925 send a HAL host offload request message to the
3926 lower RIVA sub-system if DAL is in state STARTED.
3927
3928 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003929 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003930
3931 WDI_PostAssocReq must have been called.
3932
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003935
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 wdiHostOffloadCb: callback for passing back the response
3937 of the host offload operation received from the
3938 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003939
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003941 callback
3942
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 @see WDI_PostAssocReq
3944 @return Result of the function call
3945*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003946WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003947WDI_HostOffloadReq
3948(
3949 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3950 WDI_HostOffloadCb wdiHostOffloadCb,
3951 void* pUserData
3952)
3953{
3954 WDI_EventInfoType wdiEventData;
3955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3956
3957 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 ------------------------------------------------------------------------*/
3960 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3961 {
3962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3963 "WDI API call before module is initialized - Fail request");
3964
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 }
3967
3968 /*------------------------------------------------------------------------
3969 Fill in Event data and post to the Main FSM
3970 ------------------------------------------------------------------------*/
3971 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003973 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 wdiEventData.pUserData = pUserData;
3976
3977 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3978}/*WDI_HostOffloadReq*/
3979
3980/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 @brief WDI_KeepAliveReq will be called when the upper MAC
3982 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 and minimize unnecessary host wakeups due to while in power save.
3984 Upon the call of this API the WLAN DAL will pack and
3985 send a HAL Keep Alive request message to the
3986 lower RIVA sub-system if DAL is in state STARTED.
3987
3988 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003990
3991 WDI_PostAssocReq must have been called.
3992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003995
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 wdiKeepAliveCb: callback for passing back the response
3997 of the Keep Alive operation received from the
3998 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003999
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 callback
4002
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 @see WDI_PostAssocReq
4004 @return Result of the function call
4005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004007WDI_KeepAliveReq
4008(
4009 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4010 WDI_KeepAliveCb wdiKeepAliveCb,
4011 void* pUserData
4012)
4013{
4014 WDI_EventInfoType wdiEventData;
4015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4016
4017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 ------------------------------------------------------------------------*/
4020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4021 {
4022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4023 "WDI_KeepAliveReq: WDI API call before module "
4024 "is initialized - Fail request");
4025
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 }
4028
4029 /*------------------------------------------------------------------------
4030 Fill in Event data and post to the Main FSM
4031 ------------------------------------------------------------------------*/
4032 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 wdiEventData.pEventData = pwdiKeepAliveParams;
4034 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4035 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 wdiEventData.pUserData = pUserData;
4037
4038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4039}/*WDI_KeepAliveReq*/
4040
4041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 wants to set the Wowl Bcast ptrn to minimize unnecessary
4044 host wakeup due to broadcast traffic while in power
4045 save. Upon the call of this API the WLAN DAL will pack
4046 and send a HAL Wowl Bcast ptrn request message to the
4047 lower RIVA sub-system if DAL is in state STARTED.
4048
4049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004051
4052 WDI_PostAssocReq must have been called.
4053
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiWowlAddBcPtrnCb: callback for passing back the
4058 response of the add Wowl bcast ptrn operation received
4059 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 callback
4063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 @see WDI_PostAssocReq
4065 @return Result of the function call
4066*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004068WDI_WowlAddBcPtrnReq
4069(
4070 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4071 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4072 void* pUserData
4073)
4074{
4075 WDI_EventInfoType wdiEventData;
4076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4077
4078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 ------------------------------------------------------------------------*/
4081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4082 {
4083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4084 "WDI API call before module is initialized - Fail request");
4085
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 }
4088
4089 /*------------------------------------------------------------------------
4090 Fill in Event data and post to the Main FSM
4091 ------------------------------------------------------------------------*/
4092 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004094 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 wdiEventData.pUserData = pUserData;
4097
4098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4099}/*WDI_WowlAddBcPtrnReq*/
4100
4101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wants to clear the Wowl Bcast ptrn. Upon the call of
4104 this API the WLAN DAL will pack and send a HAL delete
4105 Wowl Bcast ptrn request message to the lower RIVA
4106 sub-system if DAL is in state STARTED.
4107
4108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004110
4111 WDI_WowlAddBcPtrnReq must have been called.
4112
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 wdiWowlDelBcPtrnCb: callback for passing back the
4117 response of the del Wowl bcast ptrn operation received
4118 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_WowlAddBcPtrnReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_WowlDelBcPtrnReq
4128(
4129 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4130 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004153 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158}/*WDI_WowlDelBcPtrnReq*/
4159
4160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wants to enter the Wowl state to minimize unnecessary
4163 host wakeup while in power save. Upon the call of this
4164 API the WLAN DAL will pack and send a HAL Wowl enter
4165 request message to the lower RIVA sub-system if DAL is
4166 in state STARTED.
4167
4168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004170
4171 WDI_PostAssocReq must have been called.
4172
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004175
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 wdiWowlEnterReqCb: callback for passing back the
4177 response of the enter Wowl operation received from the
4178 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004179
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 callback
4182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 @see WDI_PostAssocReq
4184 @return Result of the function call
4185*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004186WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004187WDI_WowlEnterReq
4188(
4189 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4190 WDI_WowlEnterReqCb wdiWowlEnterCb,
4191 void* pUserData
4192)
4193{
4194 WDI_EventInfoType wdiEventData;
4195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4196
4197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 ------------------------------------------------------------------------*/
4200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4201 {
4202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4203 "WDI API call before module is initialized - Fail request");
4204
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 }
4207
4208 /*------------------------------------------------------------------------
4209 Fill in Event data and post to the Main FSM
4210 ------------------------------------------------------------------------*/
4211 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004212 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004213 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 wdiEventData.pUserData = pUserData;
4216
4217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4218}/*WDI_WowlEnterReq*/
4219
4220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004222 wants to exit the Wowl state. Upon the call of this API
4223 the WLAN DAL will pack and send a HAL Wowl exit request
4224 message to the lower RIVA sub-system if DAL is in state
4225 STARTED.
4226
4227 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004228 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004229
4230 WDI_WowlEnterReq must have been called.
4231
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004234
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 wdiWowlExitReqCb: callback for passing back the response
4236 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 callback
4240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 @see WDI_WowlEnterReq
4242 @return Result of the function call
4243*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004244WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004245WDI_WowlExitReq
4246(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004247 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 WDI_WowlExitReqCb wdiWowlExitCb,
4249 void* pUserData
4250)
4251{
4252 WDI_EventInfoType wdiEventData;
4253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4254
4255 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 ------------------------------------------------------------------------*/
4258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4259 {
4260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4261 "WDI API call before module is initialized - Fail request");
4262
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 }
4265
4266 /*------------------------------------------------------------------------
4267 Fill in Event data and post to the Main FSM
4268 ------------------------------------------------------------------------*/
4269 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004270 wdiEventData.pEventData = pwdiWowlExitParams;
4271 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 wdiEventData.pUserData = pUserData;
4274
4275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4276}/*WDI_WowlExitReq*/
4277
4278/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 the upper MAC wants to dynamically adjusts the listen
4281 interval based on the WLAN/MSM activity. Upon the call
4282 of this API the WLAN DAL will pack and send a HAL
4283 configure Apps Cpu Wakeup State request message to the
4284 lower RIVA sub-system.
4285
4286 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004288
Jeff Johnsone7245742012-09-05 17:12:55 -07004289
4290 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 Apps Cpu Wakeup State as specified by the
4292 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004293
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4295 back the response of the configure Apps Cpu Wakeup State
4296 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004297
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 callback
4300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 @return Result of the function call
4302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004304WDI_ConfigureAppsCpuWakeupStateReq
4305(
4306 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4307 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4308 void* pUserData
4309)
4310{
4311 WDI_EventInfoType wdiEventData;
4312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4313
4314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 ------------------------------------------------------------------------*/
4317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4318 {
4319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4320 "WDI API call before module is initialized - Fail request");
4321
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 }
4324
4325 /*------------------------------------------------------------------------
4326 Fill in Event data and post to the Main FSM
4327 ------------------------------------------------------------------------*/
4328 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4330 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4331 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004332 wdiEventData.pUserData = pUserData;
4333
4334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4335}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 to to perform a flush operation on a given AC. Upon the
4339 call of this API the WLAN DAL will pack and send a HAL
4340 Flush AC request message to the lower RIVA sub-system if
4341 DAL is in state STARTED.
4342
4343 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004345
4346 WDI_AddBAReq must have been called.
4347
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004350
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 wdiFlushAcRspCb: callback for passing back the response
4352 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004353
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004355 callback
4356
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 @see WDI_AddBAReq
4358 @return Result of the function call
4359*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004360WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004361WDI_FlushAcReq
4362(
4363 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4364 WDI_FlushAcRspCb wdiFlushAcRspCb,
4365 void* pUserData
4366)
4367{
4368 WDI_EventInfoType wdiEventData;
4369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4370
4371 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004372 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004373 ------------------------------------------------------------------------*/
4374 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4375 {
4376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4377 "WDI API call before module is initialized - Fail request");
4378
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 }
4381
4382 /*------------------------------------------------------------------------
4383 Fill in Event data and post to the Main FSM
4384 ------------------------------------------------------------------------*/
4385 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 wdiEventData.pEventData = pwdiFlushAcReqParams;
4387 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4388 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 wdiEventData.pUserData = pUserData;
4390
4391 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4392
4393}/*WDI_FlushAcReq*/
4394
4395/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 wants to notify the lower mac on a BT AMP event. This is
4398 to inform BTC-SLM that some BT AMP event occurred. Upon
4399 the call of this API the WLAN DAL will pack and send a
4400 HAL BT AMP event request message to the lower RIVA
4401 sub-system if DAL is in state STARTED.
4402
4403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004405
Jeff Johnsone7245742012-09-05 17:12:55 -07004406
4407 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004408 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004409
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 wdiBtAmpEventRspCb: callback for passing back the
4411 response of the BT AMP event operation received from the
4412 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004413
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004415 callback
4416
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 @return Result of the function call
4418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004420WDI_BtAmpEventReq
4421(
4422 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4423 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4424 void* pUserData
4425)
4426{
4427 WDI_EventInfoType wdiEventData;
4428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4429
4430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 ------------------------------------------------------------------------*/
4433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4434 {
4435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4436 "WDI API call before module is initialized - Fail request");
4437
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 }
4440
4441 /*------------------------------------------------------------------------
4442 Fill in Event data and post to the Main FSM
4443 ------------------------------------------------------------------------*/
4444 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4446 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4447 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 wdiEventData.pUserData = pUserData;
4449
4450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4451
4452}/*WDI_BtAmpEventReq*/
4453
Jeff Johnsone7245742012-09-05 17:12:55 -07004454#ifdef FEATURE_OEM_DATA_SUPPORT
4455/**
4456 @brief WDI_Start Oem Data Req will be called when the upper MAC
4457 wants to notify the lower mac on a oem data Req event.Upon
4458 the call of this API the WLAN DAL will pack and send a
4459 HAL OEM Data Req event request message to the lower RIVA
4460 sub-system if DAL is in state STARTED.
4461
4462 In state BUSY this request will be queued. Request won't
4463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004464
4465
Jeff Johnsone7245742012-09-05 17:12:55 -07004466
4467 @param pwdiOemDataReqParams: the Oem Data Req as
4468 specified by the Device Interface
4469
4470 wdiStartOemDataRspCb: callback for passing back the
4471 response of the Oem Data Req received from the
4472 device
4473
4474 pUserData: user data will be passed back with the
4475 callback
4476
4477 @return Result of the function call
4478*/
4479WDI_Status
4480WDI_StartOemDataReq
4481(
4482 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4483 WDI_oemDataRspCb wdiOemDataRspCb,
4484 void* pUserData
4485)
4486{
4487 WDI_EventInfoType wdiEventData;
4488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4489
4490 /*------------------------------------------------------------------------
4491 Sanity Check
4492 ------------------------------------------------------------------------*/
4493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4494 {
4495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4496 "WDI API call before module is initialized - Fail request");
4497
4498 return WDI_STATUS_E_NOT_ALLOWED;
4499 }
4500
4501 /*------------------------------------------------------------------------
4502 Fill in Event data and post to the Main FSM
4503 ------------------------------------------------------------------------*/
4504 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4505 wdiEventData.pEventData = pwdiOemDataReqParams;
4506 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4507 wdiEventData.pCBfnc = wdiOemDataRspCb;
4508 wdiEventData.pUserData = pUserData;
4509
4510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4511
4512
4513}
4514
4515#endif
4516
4517
4518/*========================================================================
4519
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522==========================================================================*/
4523/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004524 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 the WLAN HW to change the current channel of operation.
4526 Upon the call of this API the WLAN DAL will pack and
4527 send a HAL Start request message to the lower RIVA
4528 sub-system if DAL is in state STARTED.
4529
4530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004532
4533 WDI_Start must have been called.
4534
Jeff Johnsone7245742012-09-05 17:12:55 -07004535 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004536 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004537
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 wdiSwitchChRspCb: callback for passing back the response
4539 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004540
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 callback
4543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 @see WDI_Start
4545 @return Result of the function call
4546*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004547WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004548WDI_SwitchChReq
4549(
4550 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4551 WDI_SwitchChRspCb wdiSwitchChRspCb,
4552 void* pUserData
4553)
4554{
4555 WDI_EventInfoType wdiEventData;
4556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4557
4558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 ------------------------------------------------------------------------*/
4561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4562 {
4563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4564 "WDI API call before module is initialized - Fail request");
4565
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 }
4568
4569 /*------------------------------------------------------------------------
4570 Fill in Event data and post to the Main FSM
4571 ------------------------------------------------------------------------*/
4572 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 wdiEventData.pEventData = pwdiSwitchChReqParams;
4574 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4575 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 wdiEventData.pUserData = pUserData;
4577
4578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4579
4580}/*WDI_SwitchChReq*/
4581
4582
4583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 wishes to add or update a STA in HW. Upon the call of
4586 this API the WLAN DAL will pack and send a HAL Start
4587 message request message to the lower RIVA sub-system if
4588 DAL is in state STARTED.
4589
4590 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004591 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004592
4593 WDI_Start must have been called.
4594
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004596 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004597
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 wdiConfigSTARspCb: callback for passing back the
4599 response of the config STA operation received from the
4600 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004601
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 callback
4604
Jeff Johnson295189b2012-06-20 16:38:30 -07004605 @see WDI_Start
4606 @return Result of the function call
4607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004609WDI_ConfigSTAReq
4610(
4611 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4612 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4613 void* pUserData
4614)
4615{
4616 WDI_EventInfoType wdiEventData;
4617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4618
4619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004621 ------------------------------------------------------------------------*/
4622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4623 {
4624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4625 "WDI API call before module is initialized - Fail request");
4626
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 }
4629
4630 /*------------------------------------------------------------------------
4631 Fill in Event data and post to the Main FSM
4632 ------------------------------------------------------------------------*/
4633 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4635 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4636 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004637 wdiEventData.pUserData = pUserData;
4638
4639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4640
4641}/*WDI_ConfigSTAReq*/
4642
4643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 wants to change the state of an ongoing link. Upon the
4646 call of this API the WLAN DAL will pack and send a HAL
4647 Start message request message to the lower RIVA
4648 sub-system if DAL is in state STARTED.
4649
4650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004652
4653 WDI_JoinStartReq must have been called.
4654
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 wdiSetLinkStateRspCb: callback for passing back the
4659 response of the set link state operation received from
4660 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004661
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 callback
4664
Jeff Johnson295189b2012-06-20 16:38:30 -07004665 @see WDI_JoinStartReq
4666 @return Result of the function call
4667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004669WDI_SetLinkStateReq
4670(
4671 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4672 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4673 void* pUserData
4674)
4675{
4676 WDI_EventInfoType wdiEventData;
4677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4678
4679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 ------------------------------------------------------------------------*/
4682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4683 {
4684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4685 "WDI API call before module is initialized - Fail request");
4686
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 }
4689
4690 /*------------------------------------------------------------------------
4691 Fill in Event data and post to the Main FSM
4692 ------------------------------------------------------------------------*/
4693 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4695 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4696 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiEventData.pUserData = pUserData;
4698
4699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4700
4701}/*WDI_SetLinkStateReq*/
4702
4703
4704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 to get statistics (MIB counters) from the device. Upon
4707 the call of this API the WLAN DAL will pack and send a
4708 HAL Start request message to the lower RIVA sub-system
4709 if DAL is in state STARTED.
4710
4711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004713
4714 WDI_Start must have been called.
4715
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004718
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 wdiGetStatsRspCb: callback for passing back the response
4720 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 callback
4724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 @see WDI_Start
4726 @return Result of the function call
4727*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004729WDI_GetStatsReq
4730(
4731 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4732 WDI_GetStatsRspCb wdiGetStatsRspCb,
4733 void* pUserData
4734)
4735{
4736 WDI_EventInfoType wdiEventData;
4737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4738
4739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 ------------------------------------------------------------------------*/
4742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4743 {
4744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4745 "WDI API call before module is initialized - Fail request");
4746
Jeff Johnsone7245742012-09-05 17:12:55 -07004747 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 wdiEventData.pEventData = pwdiGetStatsReqParams;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4756 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760
4761}/*WDI_GetStatsReq*/
4762
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004763#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4764/**
4765 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4766 to get roam rssi from the device. Upon
4767 the call of this API the WLAN DAL will pack and send a
4768 HAL Start request message to the lower RIVA sub-system
4769 if DAL is in state STARTED.
4770
4771 In state BUSY this request will be queued. Request won't
4772 be allowed in any other state.
4773
4774 WDI_Start must have been called.
4775
4776 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4777 specified by the Device Interface
4778
4779 wdiGetRoamRssiRspCb: callback for passing back the response
4780 of the get stats operation received from the device
4781
4782 pUserData: user data will be passed back with the
4783 callback
4784
4785 @see WDI_Start
4786 @return Result of the function call
4787*/
4788WDI_Status
4789WDI_GetRoamRssiReq
4790(
4791 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4792 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4793 void* pUserData
4794)
4795{
4796 WDI_EventInfoType wdiEventData;
4797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4798
4799 /*------------------------------------------------------------------------
4800 Sanity Check
4801 ------------------------------------------------------------------------*/
4802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4803 {
4804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4805 "WDI API call before module is initialized - Fail request");
4806
4807 return WDI_STATUS_E_NOT_ALLOWED;
4808 }
4809 /*------------------------------------------------------------------------
4810 Fill in Event data and post to the Main FSM
4811 ------------------------------------------------------------------------*/
4812 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4813 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4814 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4815 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4816 wdiEventData.pUserData = pUserData;
4817
4818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4819
4820}/*WDI_GetRoamRssiReq*/
4821#endif
4822
Jeff Johnson295189b2012-06-20 16:38:30 -07004823
4824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 it wishes to change the configuration of the WLAN
4827 Device. Upon the call of this API the WLAN DAL will pack
4828 and send a HAL Update CFG request message to the lower
4829 RIVA sub-system if DAL is in state STARTED.
4830
4831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004833
4834 WDI_Start must have been called.
4835
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004838
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 wdiUpdateCfgsRspCb: callback for passing back the
4840 response of the update cfg operation received from the
4841 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004842
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 callback
4845
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 @see WDI_Start
4847 @return Result of the function call
4848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004850WDI_UpdateCfgReq
4851(
4852 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4853 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4854 void* pUserData
4855)
4856{
4857 WDI_EventInfoType wdiEventData;
4858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4859
4860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 ------------------------------------------------------------------------*/
4863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4864 {
4865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4866 "WDI API call before module is initialized - Fail request");
4867
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 }
4870
4871 /*------------------------------------------------------------------------
4872 Fill in Event data and post to the Main FSM
4873 ------------------------------------------------------------------------*/
4874 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4876 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4877 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiEventData.pUserData = pUserData;
4879
4880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4881
4882}/*WDI_UpdateCfgReq*/
4883
4884
4885
4886/**
4887 @brief WDI_AddBAReq will be called when the upper MAC has setup
4888 successfully a BA session and needs to notify the HW for
4889 the appropriate settings to take place. Upon the call of
4890 this API the WLAN DAL will pack and send a HAL Add BA
4891 request message to the lower RIVA sub-system if DAL is
4892 in state STARTED.
4893
4894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004896
4897 WDI_PostAssocReq must have been called.
4898
4899 @param wdiAddBAReqParams: the add BA parameters as specified by
4900 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004901
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 wdiAddBARspCb: callback for passing back the response of
4903 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 callback
4907
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 @see WDI_PostAssocReq
4909 @return Result of the function call
4910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004912WDI_AddBAReq
4913(
4914 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4915 WDI_AddBARspCb wdiAddBARspCb,
4916 void* pUserData
4917)
4918{
4919 WDI_EventInfoType wdiEventData;
4920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4921
4922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 ------------------------------------------------------------------------*/
4925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4926 {
4927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4928 "WDI API call before module is initialized - Fail request");
4929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 }
4932
4933 /*------------------------------------------------------------------------
4934 Fill in Event data and post to the Main FSM
4935 ------------------------------------------------------------------------*/
4936 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 wdiEventData.pEventData = pwdiAddBAReqParams;
4938 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4939 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004940 wdiEventData.pUserData = pUserData;
4941
4942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4943
4944}/*WDI_AddBAReq*/
4945
4946
4947/**
4948 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4949 successfully a BA session and needs to notify the HW for
4950 the appropriate settings to take place. Upon the call of
4951 this API the WLAN DAL will pack and send a HAL Add BA
4952 request message to the lower RIVA sub-system if DAL is
4953 in state STARTED.
4954
4955 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004957
4958 WDI_PostAssocReq must have been called.
4959
4960 @param wdiAddBAReqParams: the add BA parameters as specified by
4961 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004962
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 wdiAddBARspCb: callback for passing back the response of
4964 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004965
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004967 callback
4968
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 @see WDI_PostAssocReq
4970 @return Result of the function call
4971*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004973WDI_TriggerBAReq
4974(
4975 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4976 WDI_TriggerBARspCb wdiTriggerBARspCb,
4977 void* pUserData
4978)
4979{
4980 WDI_EventInfoType wdiEventData;
4981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4982
4983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 ------------------------------------------------------------------------*/
4986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4987 {
4988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4989 "WDI API call before module is initialized - Fail request");
4990
Jeff Johnsone7245742012-09-05 17:12:55 -07004991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 }
4993
4994 /*------------------------------------------------------------------------
4995 Fill in Event data and post to the Main FSM
4996 ------------------------------------------------------------------------*/
4997 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004998 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4999 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5000 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 wdiEventData.pUserData = pUserData;
5002
5003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5004
5005}/*WDI_AddBAReq*/
5006
5007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 wishes to update any of the Beacon parameters used by HW.
5010 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5011 message to the lower RIVA sub-system if DAL is in state
5012 STARTED.
5013
5014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005016
5017 WDI_PostAssocReq must have been called.
5018
Jeff Johnsone7245742012-09-05 17:12:55 -07005019 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005021
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 wdiUpdateBeaconParamsRspCb: callback for passing back the
5023 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005024
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005026 callback
5027
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 @see WDI_PostAssocReq
5029 @return Result of the function call
5030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005032WDI_UpdateBeaconParamsReq
5033(
5034 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5035 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5036 void* pUserData
5037)
5038{
5039 WDI_EventInfoType wdiEventData;
5040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5041
5042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 ------------------------------------------------------------------------*/
5045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5046 {
5047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5048 "WDI API call before module is initialized - Fail request");
5049
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 }
5052
5053 /*------------------------------------------------------------------------
5054 Fill in Event data and post to the Main FSM
5055 ------------------------------------------------------------------------*/
5056 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005057 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5058 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5059 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 wdiEventData.pUserData = pUserData;
5061
5062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5063
5064}/*WDI_UpdateBeaconParamsReq*/
5065
5066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 wishes to update the Beacon template used by HW.
5069 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5070 message to the lower RIVA sub-system if DAL is in state
5071 STARTED.
5072
5073 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005075
5076 WDI_PostAssocReq must have been called.
5077
Jeff Johnsone7245742012-09-05 17:12:55 -07005078 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005080
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 wdiSendBeaconParamsRspCb: callback for passing back the
5082 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005083
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 callback
5086
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 @see WDI_PostAssocReq
5088 @return Result of the function call
5089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005091WDI_SendBeaconParamsReq
5092(
5093 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5094 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5095 void* pUserData
5096)
5097{
5098 WDI_EventInfoType wdiEventData;
5099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5100
5101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 ------------------------------------------------------------------------*/
5104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5105 {
5106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5107 "WDI API call before module is initialized - Fail request");
5108
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 }
5111
5112 /*------------------------------------------------------------------------
5113 Fill in Event data and post to the Main FSM
5114 ------------------------------------------------------------------------*/
5115 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 wdiEventData.pEventData = pwdiSendBeaconParams;
5117 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5118 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 wdiEventData.pUserData = pUserData;
5120
5121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5122
5123}/*WDI_SendBeaconParamsReq*/
5124
5125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005126 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005127 upper MAC wants to update the probe response template to
5128 be transmitted as Soft AP
5129 Upon the call of this API the WLAN DAL will
5130 pack and send the probe rsp template message to the
5131 lower RIVA sub-system if DAL is in state STARTED.
5132
5133 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005135
5136
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005139
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 wdiSendBeaconParamsRspCb: callback for passing back the
5141 response of the Send Beacon Params operation received
5142 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 callback
5146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 @see WDI_AddBAReq
5148 @return Result of the function call
5149*/
5150
Jeff Johnsone7245742012-09-05 17:12:55 -07005151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005152WDI_UpdateProbeRspTemplateReq
5153(
5154 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5155 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5156 void* pUserData
5157)
5158{
5159 WDI_EventInfoType wdiEventData;
5160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5161
5162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 ------------------------------------------------------------------------*/
5165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5166 {
5167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5168 "WDI API call before module is initialized - Fail request");
5169
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 }
5172
5173 /*------------------------------------------------------------------------
5174 Fill in Event data and post to the Main FSM
5175 ------------------------------------------------------------------------*/
5176 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5178 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5179 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 wdiEventData.pUserData = pUserData;
5181
5182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5183
5184}/*WDI_UpdateProbeRspTemplateReq*/
5185
5186/**
5187 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5188 to the NV memory.
5189
5190
5191 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5192 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005193
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 wdiNvDownloadRspCb: callback for passing back the response of
5195 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005196
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 callback
5199
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 @see WDI_PostAssocReq
5201 @return Result of the function call
5202*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005203WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005204WDI_NvDownloadReq
5205(
5206 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5207 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5208 void* pUserData
5209)
5210{
5211 WDI_EventInfoType wdiEventData;
5212
5213 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 ------------------------------------------------------------------------*/
5216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5217 {
5218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5219 "WDI API call before module is initialized - Fail request");
5220
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 }
5223
5224 /*------------------------------------------------------------------------
5225 Fill in Event data and post to the Main FSM
5226 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005227 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5228 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5229 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5230 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 wdiEventData.pUserData = pUserData;
5232
5233 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5234
5235}/*WDI_NVDownloadReq*/
5236
Jeff Johnson295189b2012-06-20 16:38:30 -07005237/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 upper MAC wants to send Notice of Absence
5240 Upon the call of this API the WLAN DAL will
5241 pack and send the probe rsp template message to the
5242 lower RIVA sub-system if DAL is in state STARTED.
5243
5244 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005246
5247
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005250
Jeff Johnson295189b2012-06-20 16:38:30 -07005251 wdiSendBeaconParamsRspCb: callback for passing back the
5252 response of the Send Beacon Params operation received
5253 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005254
Jeff Johnson295189b2012-06-20 16:38:30 -07005255 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 callback
5257
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 @see WDI_AddBAReq
5259 @return Result of the function call
5260*/
5261WDI_Status
5262WDI_SetP2PGONOAReq
5263(
5264 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5265 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5266 void* pUserData
5267)
5268{
5269 WDI_EventInfoType wdiEventData;
5270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5271
5272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 ------------------------------------------------------------------------*/
5275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5276 {
5277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5278 "WDI API call before module is initialized - Fail request");
5279
Jeff Johnsone7245742012-09-05 17:12:55 -07005280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005281 }
5282
5283 /*------------------------------------------------------------------------
5284 Fill in Event data and post to the Main FSM
5285 ------------------------------------------------------------------------*/
5286 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005287 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5288 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5289 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 wdiEventData.pUserData = pUserData;
5291
5292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5293
5294}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005295
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305296#ifdef FEATURE_WLAN_TDLS
5297/**
5298 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5299 upper MAC wants to send TDLS Link Establish Request Parameters
5300 Upon the call of this API the WLAN DAL will
5301 pack and send the TDLS Link Establish Request message to the
5302 lower RIVA sub-system if DAL is in state STARTED.
5303
5304 In state BUSY this request will be queued. Request won't
5305 be allowed in any other state.
5306
5307
5308 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5309 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5310
5311 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5312 response of the TDLS Link Establish request received
5313 from the device
5314
5315 pUserData: user data will be passed back with the
5316 callback
5317
5318 @see
5319 @return Result of the function call
5320*/
5321WDI_Status
5322WDI_SetTDLSLinkEstablishReq
5323(
5324 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5325 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5326 void* pUserData
5327)
5328{
5329 WDI_EventInfoType wdiEventData;
5330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5331
5332 /*------------------------------------------------------------------------
5333 Sanity Check
5334 ------------------------------------------------------------------------*/
5335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5336 {
5337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5338 "WDI API call before module is initialized - Fail request");
5339
5340 return WDI_STATUS_E_NOT_ALLOWED;
5341 }
5342
5343 /*------------------------------------------------------------------------
5344 Fill in Event data and post to the Main FSM
5345 ------------------------------------------------------------------------*/
5346 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5347 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5348 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5349 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5350 wdiEventData.pUserData = pUserData;
5351
5352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5353
5354}/*WDI_SetTDLSLinkEstablishReq*/
5355#endif
5356
Jeff Johnson295189b2012-06-20 16:38:30 -07005357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 UMAC wanted to add STA self while opening any new session
5360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005362
5363
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005365 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005366
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 callback
5369
5370 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 @return Result of the function call
5372*/
5373WDI_Status
5374WDI_AddSTASelfReq
5375(
5376 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5377 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5378 void* pUserData
5379)
5380{
5381 WDI_EventInfoType wdiEventData;
5382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5383
5384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 ------------------------------------------------------------------------*/
5387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5388 {
5389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5390 "WDI API call before module is initialized - Fail request");
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 }
5394
5395 /*------------------------------------------------------------------------
5396 Fill in Event data and post to the Main FSM
5397 ------------------------------------------------------------------------*/
5398 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5400 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5401 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 wdiEventData.pUserData = pUserData;
5403
5404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5405
5406}/*WDI_AddSTASelfReq*/
5407
5408
Jeff Johnsone7245742012-09-05 17:12:55 -07005409#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005410/**
5411 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5412 the device of a successful add TSpec negotiation. HW
5413 needs to receive the TSpec Info from the UMAC in order
5414 to configure properly the QoS data traffic. Upon the
5415 call of this API the WLAN DAL will pack and send a HAL
5416 Add TS request message to the lower RIVA sub-system if
5417 DAL is in state STARTED.
5418
5419 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005421
5422 WDI_PostAssocReq must have been called.
5423
5424 @param wdiAddTsReqParams: the add TS parameters as specified by
5425 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005426
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 wdiAddTsRspCb: callback for passing back the response of
5428 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005429
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005431 callback
5432
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 @see WDI_PostAssocReq
5434 @return Result of the function call
5435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005437WDI_AggrAddTSReq
5438(
5439 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5440 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5441 void* pUserData
5442)
5443{
5444 WDI_EventInfoType wdiEventData;
5445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5446
5447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 ------------------------------------------------------------------------*/
5450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5451 {
5452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5453 "WDI API call before module is initialized - Fail request");
5454
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 }
5457
5458 /*------------------------------------------------------------------------
5459 Fill in Event data and post to the Main FSM
5460 ------------------------------------------------------------------------*/
5461 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5463 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5464 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 wdiEventData.pUserData = pUserData;
5466
5467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5468
5469}/*WDI_AggrAddTSReq*/
5470
5471#endif /* WLAN_FEATURE_VOWIFI_11R */
5472
Jeff Johnson295189b2012-06-20 16:38:30 -07005473/**
5474 @brief WDI_FTMCommandReq
5475 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005476
5477 @param ftmCommandReq: FTM Command Body
5478 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005479 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 @see
5482 @return Result of the function call
5483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005485WDI_FTMCommandReq
5486(
5487 WDI_FTMCommandReqType *ftmCommandReq,
5488 WDI_FTMCommandRspCb ftmCommandRspCb,
5489 void *pUserData
5490)
5491{
5492 WDI_EventInfoType wdiEventData;
5493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5494
5495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 ------------------------------------------------------------------------*/
5498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5499 {
5500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5501 "WDI API call before module is initialized - Fail request");
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 }
5505
5506 /*------------------------------------------------------------------------
5507 Fill in Event data and post to the Main FSM
5508 ------------------------------------------------------------------------*/
5509 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5510 wdiEventData.pEventData = (void *)ftmCommandReq;
5511 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5512 wdiEventData.pCBfnc = ftmCommandRspCb;
5513 wdiEventData.pUserData = pUserData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516}
Jeff Johnson295189b2012-06-20 16:38:30 -07005517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005518 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005519
5520 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005522
5523
5524 @param pwdiResumeReqParams: as specified by
5525 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 wdiResumeReqRspCb: callback for passing back the response of
5528 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005529
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 callback
5532
5533 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 @return Result of the function call
5535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005537WDI_HostResumeReq
5538(
5539 WDI_ResumeParamsType* pwdiResumeReqParams,
5540 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5541 void* pUserData
5542)
5543{
5544 WDI_EventInfoType wdiEventData;
5545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5546
5547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 ------------------------------------------------------------------------*/
5550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5551 {
5552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5553 "WDI API call before module is initialized - Fail request");
5554
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 }
5557
5558 /*------------------------------------------------------------------------
5559 Fill in Event data and post to the Main FSM
5560 ------------------------------------------------------------------------*/
5561 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 wdiEventData.pEventData = pwdiResumeReqParams;
5563 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5564 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiEventData.pUserData = pUserData;
5566
5567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5568
5569}/*WDI_HostResumeReq*/
5570
5571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005572 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005573
5574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005576
5577
5578 @param pwdiDelStaSelfReqParams: as specified by
5579 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005580
Jeff Johnson295189b2012-06-20 16:38:30 -07005581 wdiDelStaSelfRspCb: callback for passing back the response of
5582 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005583
Jeff Johnson295189b2012-06-20 16:38:30 -07005584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 callback
5586
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 @see WDI_PostAssocReq
5588 @return Result of the function call
5589*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005591WDI_DelSTASelfReq
5592(
5593 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5594 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5595 void* pUserData
5596)
5597{
5598 WDI_EventInfoType wdiEventData;
5599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5600
5601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005603 ------------------------------------------------------------------------*/
5604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5605 {
5606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5607 "WDI API call before module is initialized - Fail request");
5608
Jeff Johnsone7245742012-09-05 17:12:55 -07005609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005610 }
5611
5612 /*------------------------------------------------------------------------
5613 Fill in Event data and post to the Main FSM
5614 ------------------------------------------------------------------------*/
5615 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5617 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5618 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 wdiEventData.pUserData = pUserData;
5620
5621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5622
5623}/*WDI_AggrAddTSReq*/
5624
5625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5627 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005628 Upon the call of this API the WLAN DAL will pack
5629 and send a HAL Set Tx Per Tracking request message to the
5630 lower RIVA sub-system if DAL is in state STARTED.
5631
5632 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005634
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005637
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 pwdiSetTxPerTrackingRspCb: callback for passing back the
5639 response of the set Tx PER Tracking configurations operation received
5640 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005641
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 callback
5644
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 @return Result of the function call
5646*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005647WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005648WDI_SetTxPerTrackingReq
5649(
5650 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5651 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5652 void* pUserData
5653)
5654{
5655 WDI_EventInfoType wdiEventData;
5656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5657
5658 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 ------------------------------------------------------------------------*/
5661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5662 {
5663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5664 "WDI API call before module is initialized - Fail request");
5665
Jeff Johnsone7245742012-09-05 17:12:55 -07005666 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 }
5668
5669 /*------------------------------------------------------------------------
5670 Fill in Event data and post to the Main FSM
5671 ------------------------------------------------------------------------*/
5672 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005673 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiEventData.pUserData = pUserData;
5677
5678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5679
5680}/*WDI_SetTxPerTrackingReq*/
5681
5682/**
5683 @brief WDI_SetTmLevelReq
5684 If HW Thermal condition changed, driver should react based on new
5685 HW thermal condition.
5686
5687 @param pwdiSetTmLevelReq: New thermal condition information
5688
5689 pwdiSetTmLevelRspCb: callback
5690
5691 usrData: user data will be passed back with the
5692 callback
5693
5694 @return Result of the function call
5695*/
5696WDI_Status
5697WDI_SetTmLevelReq
5698(
5699 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5700 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5701 void *usrData
5702)
5703{
5704 WDI_EventInfoType wdiEventData;
5705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5706
5707 /*------------------------------------------------------------------------
5708 Sanity Check
5709 ------------------------------------------------------------------------*/
5710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5711 {
5712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5713 "WDI API call before module is initialized - Fail request");
5714
5715 return WDI_STATUS_E_NOT_ALLOWED;
5716 }
5717
5718 /*------------------------------------------------------------------------
5719 Fill in Event data and post to the Main FSM
5720 ------------------------------------------------------------------------*/
5721 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5722 wdiEventData.pEventData = pwdiSetTmLevelReq;
5723 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5724 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5725 wdiEventData.pUserData = usrData;
5726
5727 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5728}
5729
5730/**
5731 @brief WDI_HostSuspendInd
5732
5733 Suspend Indication from the upper layer will be sent
5734 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005735
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005737
5738 @see
5739
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 @return Status of the request
5741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005743WDI_HostSuspendInd
5744(
5745 WDI_SuspendParamsType* pwdiSuspendIndParams
5746)
5747{
5748
5749 WDI_EventInfoType wdiEventData;
5750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5751
5752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005754 ------------------------------------------------------------------------*/
5755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5756 {
5757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5758 "WDI API call before module is initialized - Fail request");
5759
Jeff Johnsone7245742012-09-05 17:12:55 -07005760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005761 }
5762
5763 /*------------------------------------------------------------------------
5764 Fill in Event data and post to the Main FSM
5765 ------------------------------------------------------------------------*/
5766 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 wdiEventData.pEventData = pwdiSuspendIndParams;
5768 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5769 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 wdiEventData.pUserData = NULL;
5771
5772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5773
5774}/*WDI_HostSuspendInd*/
5775
5776/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005777 @brief WDI_TrafficStatsInd
5778 Traffic Stats from the upper layer will be sent
5779 down to HAL
5780
5781 @param WDI_TrafficStatsIndType
5782
5783 @see
5784
5785 @return Status of the request
5786*/
5787WDI_Status
5788WDI_TrafficStatsInd
5789(
5790 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5791)
5792{
5793
5794 WDI_EventInfoType wdiEventData;
5795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5796
5797 /*------------------------------------------------------------------------
5798 Sanity Check
5799 ------------------------------------------------------------------------*/
5800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5801 {
5802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5803 "WDI API call before module is initialized - Fail request");
5804
5805 return WDI_STATUS_E_NOT_ALLOWED;
5806 }
5807
5808 /*------------------------------------------------------------------------
5809 Fill in Event data and post to the Main FSM
5810 ------------------------------------------------------------------------*/
5811 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5812 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5813 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5814 wdiEventData.pCBfnc = NULL;
5815 wdiEventData.pUserData = NULL;
5816
5817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5818
5819}/*WDI_TrafficStatsInd*/
5820
Chet Lanctota96bb432013-03-18 10:26:30 -07005821#ifdef WLAN_FEATURE_11W
5822/**
5823 @brief WDI_ExcludeUnencryptedInd
5824 Register with HAL to receive/drop unencrypted frames
5825
5826 @param WDI_ExcludeUnencryptIndType
5827
5828 @see
5829
5830 @return Status of the request
5831*/
5832WDI_Status
5833WDI_ExcludeUnencryptedInd
5834(
5835 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5836)
5837{
5838
5839 WDI_EventInfoType wdiEventData;
5840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5841
5842 /*------------------------------------------------------------------------
5843 Sanity Check
5844 ------------------------------------------------------------------------*/
5845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5846 {
5847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5848 "WDI API call before module is initialized - Fail request");
5849
5850 return WDI_STATUS_E_NOT_ALLOWED;
5851 }
5852
5853 /*------------------------------------------------------------------------
5854 Fill in Event data and post to the Main FSM
5855 ------------------------------------------------------------------------*/
5856 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5857 wdiEventData.pEventData = pWdiExcUnencParams;
5858 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5859 wdiEventData.pCBfnc = NULL;
5860 wdiEventData.pUserData = NULL;
5861
5862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5863
5864}/*WDI_TrafficStatsInd*/
5865#endif
5866
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005867/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 @brief WDI_HALDumpCmdReq
5869 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005870
5871 @param halDumpCmdReqParams: Hal Dump Command Body
5872 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005873 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005874
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 @see
5876 @return Result of the function call
5877*/
5878WDI_Status WDI_HALDumpCmdReq
5879(
5880 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5881 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5882 void *pUserData
5883)
5884{
5885 WDI_EventInfoType wdiEventData;
5886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5887
5888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 ------------------------------------------------------------------------*/
5891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5892 {
5893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5894 "WDI API call before module is initialized - Fail request");
5895
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 }
5898
5899 /*------------------------------------------------------------------------
5900 Fill in Event data and post to the Main FSM
5901 ------------------------------------------------------------------------*/
5902 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5903 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5904 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5905 wdiEventData.pCBfnc = halDumpCmdRspCb;
5906 wdiEventData.pUserData = pUserData;
5907
5908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5909}
5910
Jeff Johnsone7245742012-09-05 17:12:55 -07005911/*============================================================================
5912
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005914
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 ============================================================================*/
5916
5917/**
5918 @brief Main FSM Start function for all states except BUSY
5919
Jeff Johnsone7245742012-09-05 17:12:55 -07005920
5921 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005922 wdiEV: event posted to the main DAL FSM
5923 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005924 structure
5925
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 @see
5927 @return Result of the function call
5928*/
5929WDI_Status
5930WDI_PostMainEvent
5931(
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 WDI_ControlBlockType* pWDICtx,
5933 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005935
Jeff Johnson295189b2012-06-20 16:38:30 -07005936)
5937{
Jeff Johnsone7245742012-09-05 17:12:55 -07005938 WDI_Status wdiStatus;
5939 WDI_MainFuncType pfnWDIMainEvHdlr;
5940 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5942
5943 /*-------------------------------------------------------------------------
5944 Sanity check
5945 -------------------------------------------------------------------------*/
5946 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5947 ( wdiEV >= WDI_MAX_EVENT ))
5948 {
5949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5950 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5951 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005952 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005953 }
5954
5955 /*Access to the global state must be locked */
5956 wpalMutexAcquire(&pWDICtx->wptMutex);
5957
5958 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005959 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005960
5961 wdiOldState = pWDICtx->uGlobalState;
5962
5963 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005964 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5965 response comes from CCPU for the request sent by host:
5966 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 CCPU:
5970 don't change the state */
5971 if ( WDI_RESPONSE_EVENT != wdiEV)
5972 {
5973 /*Transition to BUSY State - the request is now being processed by the FSM,
5974 if the request fails we shall transition back to the old state, if not
5975 the request will manage its own state transition*/
5976 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5977 }
5978 /* If the state function associated with the EV is NULL it means that this
5979 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 {
5982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005983 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005984 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 }
5987 else
5988 {
5989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005990 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 }
5994
5995 /* If a request handles itself well it will end up in a success or in a
5996 pending
5997 Success - means that the request was processed and the proper state
5998 transition already occurred or will occur when the resp is received
5999 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006000
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 Pending - means the request could not be processed at this moment in time
6002 because the FSM was already busy so no state transition or dequeueing
6003 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006004
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 Success for synchronous case means that the transition may occur and
6006 processing of pending requests may continue - so it should go through
6007 and restores the state and continue processing queued requests*/
6008 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6009 ( WDI_STATUS_PENDING != wdiStatus ))
6010 {
6011 if ( WDI_RESPONSE_EVENT != wdiEV)
6012 {
6013 /*The request has failed or could not be processed - transition back to
6014 the old state - check to see if anything was queued and try to execute
6015 The dequeue logic should post a message to a thread and return - no
6016 actual processing can occur */
6017 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6018 }
6019 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006020
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 }
6022
6023 /* we have completed processing the event */
6024 wpalMutexRelease(&pWDICtx->wptMutex);
6025
Jeff Johnsone7245742012-09-05 17:12:55 -07006026 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006027
6028}/*WDI_PostMainEvent*/
6029
6030
6031/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006032 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006033--------------------------------------------------------------------------*/
6034/**
6035 @brief Main FSM Start function for all states except BUSY
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037
6038 @param pWDICtx: pointer to the WLAN DAL context
6039 pEventData: pointer to the event information structure
6040
Jeff Johnson295189b2012-06-20 16:38:30 -07006041 @see
6042 @return Result of the function call
6043*/
6044WDI_Status
6045WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006046(
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 WDI_ControlBlockType* pWDICtx,
6048 WDI_EventInfoType* pEventData
6049)
6050{
6051
6052 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 ----------------------------------------------------------------------*/
6055 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6056 {
6057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 pWDICtx, pEventData);
6060 return WDI_STATUS_E_FAILURE;
6061 }
6062
6063 wpalMutexAcquire(&pWDICtx->wptMutex);
6064
6065 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006066 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 ----------------------------------------------------------------------*/
6068 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6069 {
6070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6071 "Control Transport not yet Open - queueing the request");
6072
6073 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006074 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006075
6076 wpalMutexRelease(&pWDICtx->wptMutex);
6077 return WDI_STATUS_PENDING;
6078 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 wpalMutexRelease(&pWDICtx->wptMutex);
6081
6082 /*Return Success*/
6083 return WDI_ProcessRequest( pWDICtx, pEventData );
6084
6085}/*WDI_MainStart*/
6086
6087/**
6088 @brief Main FSM Response function for state INIT
6089
Jeff Johnsone7245742012-09-05 17:12:55 -07006090
6091 @param pWDICtx: pointer to the WLAN DAL context
6092 pEventData: pointer to the event information structure
6093
Jeff Johnson295189b2012-06-20 16:38:30 -07006094 @see
6095 @return Result of the function call
6096*/
6097WDI_Status
6098WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006099(
Jeff Johnson295189b2012-06-20 16:38:30 -07006100 WDI_ControlBlockType* pWDICtx,
6101 WDI_EventInfoType* pEventData
6102)
6103{
6104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006105 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006107 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006108
6109 /*Return Success*/
6110 return WDI_STATUS_E_NOT_ALLOWED;
6111}/* WDI_MainRspInit */
6112
6113/**
6114 @brief Main FSM Close function for all states except BUSY
6115
Jeff Johnsone7245742012-09-05 17:12:55 -07006116
6117 @param pWDICtx: pointer to the WLAN DAL context
6118 pEventData: pointer to the event information structure
6119
Jeff Johnson295189b2012-06-20 16:38:30 -07006120 @see
6121 @return Result of the function call
6122*/
6123WDI_Status
6124WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006125(
Jeff Johnson295189b2012-06-20 16:38:30 -07006126 WDI_ControlBlockType* pWDICtx,
6127 WDI_EventInfoType* pEventData
6128)
6129{
6130
6131 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 ----------------------------------------------------------------------*/
6134 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6135 {
6136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 pWDICtx, pEventData);
6139 return WDI_STATUS_E_FAILURE;
6140 }
6141
6142 /*Return Success*/
6143 return WDI_ProcessRequest( pWDICtx, pEventData );
6144
6145}/*WDI_MainClose*/
6146/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006147 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006148--------------------------------------------------------------------------*/
6149/**
6150 @brief Main FSM Start function for state STARTED
6151
Jeff Johnsone7245742012-09-05 17:12:55 -07006152
6153 @param pWDICtx: pointer to the WLAN DAL context
6154 pEventData: pointer to the event information structure
6155
Jeff Johnson295189b2012-06-20 16:38:30 -07006156 @see
6157 @return Result of the function call
6158*/
6159WDI_Status
6160WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006161(
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 WDI_ControlBlockType* pWDICtx,
6163 WDI_EventInfoType* pEventData
6164)
6165{
6166 WDI_StartRspCb wdiStartRspCb = NULL;
6167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6168
6169 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 ----------------------------------------------------------------------*/
6172 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6173 {
6174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006175 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 pWDICtx, pEventData);
6177 return WDI_STATUS_E_FAILURE;
6178 }
6179
6180 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 ----------------------------------------------------------------------*/
6183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006185
6186 wpalMutexAcquire(&pWDICtx->wptMutex);
6187
6188 /*Transition back to started because the post function transitioned us to
6189 busy*/
6190 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6191
6192 /*Check to see if any request is pending*/
6193 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006194
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 wpalMutexRelease(&pWDICtx->wptMutex);
6196
6197 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006198 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6199
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 /*Notify UMAC*/
6201 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6202
6203 /*Return Success*/
6204 return WDI_STATUS_SUCCESS;
6205
6206}/*WDI_MainStartStarted*/
6207
6208/**
6209 @brief Main FSM Stop function for state STARTED
6210
Jeff Johnsone7245742012-09-05 17:12:55 -07006211
6212 @param pWDICtx: pointer to the WLAN DAL context
6213 pEventData: pointer to the event information structure
6214
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 @see
6216 @return Result of the function call
6217*/
6218WDI_Status
6219WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006220(
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 WDI_ControlBlockType* pWDICtx,
6222 WDI_EventInfoType* pEventData
6223)
6224{
6225 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 ----------------------------------------------------------------------*/
6228 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6229 {
6230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006231 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 pWDICtx, pEventData);
6233 return WDI_STATUS_E_FAILURE;
6234 }
6235
6236 /*State at this point is BUSY - because we enter this state before posting
6237 an event to the FSM in order to prevent potential race conditions*/
6238
6239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6240 "Processing stop request in FSM");
6241
6242 /*Return Success*/
6243 return WDI_ProcessRequest( pWDICtx, pEventData );
6244
6245}/*WDI_MainStopStarted*/
6246/**
6247 @brief Main FSM Request function for state started
6248
Jeff Johnsone7245742012-09-05 17:12:55 -07006249
6250 @param pWDICtx: pointer to the WLAN DAL context
6251 pEventData: pointer to the event information structure
6252
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 @see
6254 @return Result of the function call
6255*/
6256WDI_Status
6257WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006258(
Jeff Johnson295189b2012-06-20 16:38:30 -07006259 WDI_ControlBlockType* pWDICtx,
6260 WDI_EventInfoType* pEventData
6261)
6262{
6263
6264 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 ----------------------------------------------------------------------*/
6267 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6268 {
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 pWDICtx, pEventData);
6272 return WDI_STATUS_E_FAILURE;
6273 }
6274
6275 /*State at this point is BUSY - because we enter this state before posting
6276 an event to the FSM in order to prevent potential race conditions*/
6277
6278 /*Return Success*/
6279 return WDI_ProcessRequest( pWDICtx, pEventData );
6280
6281}/*WDI_MainReqStarted*/
6282
6283/**
6284 @brief Main FSM Response function for all states except INIT
6285
Jeff Johnsone7245742012-09-05 17:12:55 -07006286
6287 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006289
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 @see
6291 @return Result of the function call
6292*/
6293WDI_Status
6294WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006295(
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 WDI_ControlBlockType* pWDICtx,
6297 WDI_EventInfoType* pEventData
6298)
6299{
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 wpt_boolean expectedResponse;
6302
6303 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 ----------------------------------------------------------------------*/
6306 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6307 {
6308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 pWDICtx, pEventData);
6311 return WDI_STATUS_E_FAILURE;
6312 }
6313
6314 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6315 {
6316 /* we received an expected response */
6317 expectedResponse = eWLAN_PAL_TRUE;
6318
6319 /*We expect that we will transition to started after this processing*/
6320 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6321
6322 /* we are no longer expecting a response */
6323 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6324 }
6325 else
6326 {
6327 /* we received an indication or unexpected response */
6328 expectedResponse = eWLAN_PAL_FALSE;
6329 /* for indications no need to update state from what it is right
6330 now, unless it explicitly does it in the indication handler (say
6331 for device failure ind) */
6332 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6333 }
6334
6335 /*Process the response and indication */
6336 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6337
6338 /*Lock the CB as we are about to do a state transition*/
6339 wpalMutexAcquire(&pWDICtx->wptMutex);
6340
6341 /*Transition to the expected state after the response processing
6342 - this should always be started state with the following exceptions:
6343 1. processing of a failed start response
6344 2. device failure detected while processing response
6345 3. stop response received*/
6346 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006347
Jeff Johnson295189b2012-06-20 16:38:30 -07006348 /*Dequeue request that may have been queued while we were waiting for the
6349 response */
6350 if ( expectedResponse )
6351 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 }
6354
6355 wpalMutexRelease(&pWDICtx->wptMutex);
6356
6357 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006358 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006359
6360}/*WDI_MainRsp*/
6361
6362/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006364--------------------------------------------------------------------------*/
6365/**
6366 @brief Main FSM Stop function for state STOPPED
6367
Jeff Johnsone7245742012-09-05 17:12:55 -07006368
6369 @param pWDICtx: pointer to the WLAN DAL context
6370 pEventData: pointer to the event information structure
6371
Jeff Johnson295189b2012-06-20 16:38:30 -07006372 @see
6373 @return Result of the function call
6374*/
6375WDI_Status
6376WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006377(
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 WDI_ControlBlockType* pWDICtx,
6379 WDI_EventInfoType* pEventData
6380)
6381{
6382 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 ----------------------------------------------------------------------*/
6385 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6386 {
6387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 pWDICtx, pEventData);
6390 return WDI_STATUS_E_FAILURE;
6391 }
6392
6393 /*We should normally not get a STOP request if we are already stopped
6394 since we should normally be stopped by the UMAC. However in some
6395 error situations we put ourselves in the stopped state without the
6396 UMAC knowing, so when we get a STOP request in this state we still
6397 process it since we need to clean up the underlying state */
6398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6399 "Processing stop request while stopped in FSM");
6400
6401 /*Return Success*/
6402 return WDI_ProcessRequest( pWDICtx, pEventData );
6403
6404}/*WDI_MainStopStopped*/
6405
6406/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006407 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006408--------------------------------------------------------------------------*/
6409/**
6410 @brief Main FSM Start function for state BUSY
6411
Jeff Johnsone7245742012-09-05 17:12:55 -07006412
6413 @param pWDICtx: pointer to the WLAN DAL context
6414 pEventData: pointer to the event information structure
6415
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 @see
6417 @return Result of the function call
6418*/
6419WDI_Status
6420WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006421(
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 WDI_ControlBlockType* pWDICtx,
6423 WDI_EventInfoType* pEventData
6424)
6425{
6426 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006428 ----------------------------------------------------------------------*/
6429 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6430 {
6431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 pWDICtx, pEventData);
6434 return WDI_STATUS_E_FAILURE;
6435 }
6436
6437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 ----------------------------------------------------------------------*/
6440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6441 "WDI Busy state - queue start request");
6442
6443 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006445
6446 /*Return Success*/
6447 return WDI_STATUS_PENDING;
6448}/*WDI_MainStartBusy*/
6449
6450/**
6451 @brief Main FSM Stop function for state BUSY
6452
Jeff Johnsone7245742012-09-05 17:12:55 -07006453
6454 @param pWDICtx: pointer to the WLAN DAL context
6455 pEventData: pointer to the event information structure
6456
Jeff Johnson295189b2012-06-20 16:38:30 -07006457 @see
6458 @return Result of the function call
6459*/
6460WDI_Status
6461WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006462(
Jeff Johnson295189b2012-06-20 16:38:30 -07006463 WDI_ControlBlockType* pWDICtx,
6464 WDI_EventInfoType* pEventData
6465)
6466{
6467 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 ----------------------------------------------------------------------*/
6470 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6471 {
6472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006474 pWDICtx, pEventData);
6475 return WDI_STATUS_E_FAILURE;
6476 }
6477
6478 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 ----------------------------------------------------------------------*/
6481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6482 "WDI Busy state - queue stop request");
6483
Jeff Johnsone7245742012-09-05 17:12:55 -07006484 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006486
Jeff Johnson295189b2012-06-20 16:38:30 -07006487}/*WDI_MainStopBusy*/
6488
6489/**
6490 @brief Main FSM Request function for state BUSY
6491
Jeff Johnsone7245742012-09-05 17:12:55 -07006492
6493 @param pWDICtx: pointer to the WLAN DAL context
6494 pEventData: pointer to the event information structure
6495
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 @see
6497 @return Result of the function call
6498*/
6499WDI_Status
6500WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006501(
Jeff Johnson295189b2012-06-20 16:38:30 -07006502 WDI_ControlBlockType* pWDICtx,
6503 WDI_EventInfoType* pEventData
6504)
6505{
6506 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006508 ----------------------------------------------------------------------*/
6509 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6510 {
6511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006512 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 pWDICtx, pEventData);
6514 return WDI_STATUS_E_FAILURE;
6515 }
6516
6517 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 ----------------------------------------------------------------------*/
6520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6521 "WDI Busy state - queue request %d because waiting for response %d",
6522 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6523
Jeff Johnsone7245742012-09-05 17:12:55 -07006524 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006525 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006526
Jeff Johnson295189b2012-06-20 16:38:30 -07006527}/*WDI_MainReqBusy*/
6528/**
6529 @brief Main FSM Close function for state BUSY
6530
Jeff Johnsone7245742012-09-05 17:12:55 -07006531
6532 @param pWDICtx: pointer to the WLAN DAL context
6533 pEventData: pointer to the event information structure
6534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 @see
6536 @return Result of the function call
6537*/
6538WDI_Status
6539WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006540(
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 WDI_ControlBlockType* pWDICtx,
6542 WDI_EventInfoType* pEventData
6543)
6544{
6545 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 ----------------------------------------------------------------------*/
6548 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006551 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 pWDICtx, pEventData);
6553 return WDI_STATUS_E_FAILURE;
6554 }
6555
6556 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 ----------------------------------------------------------------------*/
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6560 "WDI Busy state - queue close request");
6561
Jeff Johnsone7245742012-09-05 17:12:55 -07006562 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006563 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006564
Jeff Johnson295189b2012-06-20 16:38:30 -07006565}/*WDI_MainCloseBusy*/
6566
6567/**
6568 @brief Main FSM Shutdown function for INIT & STARTED states
6569
6570
6571 @param pWDICtx: pointer to the WLAN DAL context
6572 pEventData: pointer to the event information structure
6573
6574 @see
6575 @return Result of the function call
6576*/
6577WDI_Status
6578WDI_MainShutdown
6579(
6580 WDI_ControlBlockType* pWDICtx,
6581 WDI_EventInfoType* pEventData
6582)
6583{
6584 /*--------------------------------------------------------------------
6585 Sanity Check
6586 ----------------------------------------------------------------------*/
6587 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6590 "Invalid parameters on Main Start %x %x",
6591 pWDICtx, pEventData);
6592 return WDI_STATUS_E_FAILURE;
6593 }
6594
6595 /*State at this point is BUSY - because we enter this state before posting
6596 an event to the FSM in order to prevent potential race conditions*/
6597
6598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6599 "Processing shutdown request in FSM");
6600
6601 /*Return Success*/
6602 return WDI_ProcessRequest( pWDICtx, pEventData );
6603
6604}/*WDI_MainShutdown*/
6605
6606/**
6607 @brief Main FSM Shutdown function for BUSY state
6608
6609
6610 @param pWDICtx: pointer to the WLAN DAL context
6611 pEventData: pointer to the event information structure
6612
6613 @see
6614 @return Result of the function call
6615*/
6616WDI_Status
6617WDI_MainShutdownBusy
6618(
6619 WDI_ControlBlockType* pWDICtx,
6620 WDI_EventInfoType* pEventData
6621)
6622{
6623 /*--------------------------------------------------------------------
6624 Sanity Check
6625 ----------------------------------------------------------------------*/
6626 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6627 {
6628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6629 "Invalid parameters on Main Start %x %x",
6630 pWDICtx, pEventData);
6631 return WDI_STATUS_E_FAILURE;
6632 }
6633
6634 /* If you are waiting for a HAL response at this stage, you are not
6635 * going to get it. Riva is already shutdown/crashed.
6636 */
6637 wpalTimerStop(&gWDICb.wptResponseTimer);
6638
6639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6640 "Processing shutdown request in FSM: Busy state ");
6641
6642 return WDI_ProcessRequest( pWDICtx, pEventData );
6643
6644}/*WDI_MainShutdownBusy*/
6645
6646
Jeff Johnsone7245742012-09-05 17:12:55 -07006647/*=======================================================================
6648
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006650
Jeff Johnson295189b2012-06-20 16:38:30 -07006651*=======================================================================*/
6652
6653/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006655========================================================================*/
6656/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006659
6660 @param pWDICtx: pointer to the WLAN DAL context
6661 pEventData: pointer to the event information structure
6662
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 @see
6664 @return Result of the function call
6665*/
6666WDI_Status
6667WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006668(
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 WDI_ControlBlockType* pWDICtx,
6670 WDI_EventInfoType* pEventData
6671)
6672{
6673 WDI_StartReqParamsType* pwdiStartParams = NULL;
6674 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006675 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 wpt_uint16 usDataOffset = 0;
6677 wpt_uint16 usSendSize = 0;
6678
Jeff Johnsone7245742012-09-05 17:12:55 -07006679 tHalMacStartReqMsg halStartReq;
6680 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6682
6683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006685 -------------------------------------------------------------------------*/
6686 if (( NULL == pEventData ) ||
6687 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6688 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6689 {
6690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 }
6695
6696 /*-----------------------------------------------------------------------
6697 Get message buffer
6698 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 pwdiStartParams->usConfigBufferLen;
6701
Jeff Johnsone7245742012-09-05 17:12:55 -07006702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006703 usLen,
6704 &pSendBuffer, &usDataOffset, &usSendSize))||
6705 ( usSendSize < (usDataOffset + usLen )))
6706 {
6707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6708 "Unable to get send buffer in start req %x %x %x",
6709 pEventData, pwdiStartParams, wdiStartRspCb);
6710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 }
6713
6714 /*-----------------------------------------------------------------------
6715 Fill in the message
6716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 halStartReq.startReqParams.driverType =
6718 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006719
Jeff Johnsone7245742012-09-05 17:12:55 -07006720 halStartReq.startReqParams.uConfigBufferLen =
6721 pwdiStartParams->usConfigBufferLen;
6722 wpalMemoryCopy( pSendBuffer+usDataOffset,
6723 &halStartReq.startReqParams,
6724 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006725
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 usDataOffset += sizeof(halStartReq.startReqParams);
6727 wpalMemoryCopy( pSendBuffer+usDataOffset,
6728 pwdiStartParams->pConfigBuffer,
6729 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006730
6731 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006733
6734 /*Save Low Level Ind CB and associated user data - it will be used further
6735 on when an indication is coming from the lower MAC*/
6736 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006738
Jeff Johnsone7245742012-09-05 17:12:55 -07006739 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6745
Jeff Johnsone7245742012-09-05 17:12:55 -07006746
Jeff Johnson295189b2012-06-20 16:38:30 -07006747}/*WDI_ProcessStartReq*/
6748
6749/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
6753 @param pWDICtx: pointer to the WLAN DAL context
6754 pEventData: pointer to the event information structure
6755
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 @see
6757 @return Result of the function call
6758*/
6759WDI_Status
6760WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006761(
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 WDI_ControlBlockType* pWDICtx,
6763 WDI_EventInfoType* pEventData
6764)
6765{
6766 WDI_StopReqParamsType* pwdiStopParams = NULL;
6767 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 wpt_uint16 usDataOffset = 0;
6770 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006771 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006772 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6774
6775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 -------------------------------------------------------------------------*/
6778 if (( NULL == pEventData ) ||
6779 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6780 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6781 {
6782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006784 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006785 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 }
6787
6788 /*-----------------------------------------------------------------------
6789 Get message buffer
6790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 sizeof(halStopReq.stopReqParams),
6793 &pSendBuffer, &usDataOffset, &usSendSize))||
6794 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6795 {
6796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6797 "Unable to get send buffer in stop req %x %x %x",
6798 pEventData, pwdiStopParams, wdiStopRspCb);
6799 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006800 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 }
6802
6803 /*-----------------------------------------------------------------------
6804 Fill in the message
6805 -----------------------------------------------------------------------*/
6806 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6807 pwdiStopParams->wdiStopReason);
6808
Jeff Johnsone7245742012-09-05 17:12:55 -07006809 wpalMemoryCopy( pSendBuffer+usDataOffset,
6810 &halStopReq.stopReqParams,
6811 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006812
6813 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006815
6816 /*! TO DO: stop the data services */
6817 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6818 {
6819 /*Stop the STA Table !UT- check this logic again
6820 It is safer to do it here than on the response - because a stop is imminent*/
6821 WDI_STATableStop(pWDICtx);
6822
6823 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006824 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6825 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 {
6827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6828 "WDI Init failed to reset power state event");
6829
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006831 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 }
6833 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006834 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6835 if( eWLAN_PAL_STATUS_SUCCESS != status )
6836 {
6837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6838 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6839 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006840 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006841 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006844 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006845 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6846 WDI_SET_POWER_STATE_TIMEOUT);
6847 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 {
6849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6850 "WDI Init failed to wait on an event");
6851
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006853 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855 }
6856
6857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6862
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006863fail:
6864 // Release the message buffer so we don't leak
6865 wpalMemoryFree(pSendBuffer);
6866
6867failRequest:
6868 //WDA should have failure check to avoid the memory leak
6869 return WDI_STATUS_E_FAILURE;
6870
Jeff Johnson295189b2012-06-20 16:38:30 -07006871}/*WDI_ProcessStopReq*/
6872
6873/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006876
6877 @param pWDICtx: pointer to the WLAN DAL context
6878 pEventData: pointer to the event information structure
6879
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 @see
6881 @return Result of the function call
6882*/
6883WDI_Status
6884WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006885(
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 WDI_ControlBlockType* pWDICtx,
6887 WDI_EventInfoType* pEventData
6888)
6889{
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6892
6893 /*Lock control block for cleanup*/
6894 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006895
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 /*Clear all pending request*/
6897 WDI_ClearPendingRequests(pWDICtx);
6898
6899 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006901
6902 /* Close Data transport*/
6903 /* FTM mode does not open Data Path */
6904 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6905 {
6906 WDTS_Close(pWDICtx);
6907 }
6908
6909 /*Close the STA Table !UT- check this logic again*/
6910 WDI_STATableClose(pWDICtx);
6911
6912 /*close the PAL */
6913 wptStatus = wpalClose(pWDICtx->pPALContext);
6914 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6915 {
6916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6917 "Failed to wpal Close %d", wptStatus);
6918 WDI_ASSERT(0);
6919 }
6920
6921 /*Transition back to init state*/
6922 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6923
6924 wpalMutexRelease(&pWDICtx->wptMutex);
6925
6926 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006927 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006928
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006930}/*WDI_ProcessCloseReq*/
6931
6932
6933/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006935===========================================================================*/
6936
6937/**
6938 @brief Process Init Scan Request function (called when Main FSM
6939 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006940
6941 @param pWDICtx: pointer to the WLAN DAL context
6942 pEventData: pointer to the event information structure
6943
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 @see
6945 @return Result of the function call
6946*/
6947WDI_Status
6948WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006949(
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 WDI_ControlBlockType* pWDICtx,
6951 WDI_EventInfoType* pEventData
6952)
6953{
6954 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6955 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 wpt_uint16 usDataOffset = 0;
6958 wpt_uint16 usSendSize = 0;
6959 wpt_uint8 i = 0;
6960
6961 tHalInitScanReqMsg halInitScanReqMsg;
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 * It shold be removed once host and riva changes are in sync*/
6965 tHalInitScanConReqMsg halInitScanConReqMsg;
6966
6967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6968
6969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006971 -------------------------------------------------------------------------*/
6972 if (( NULL == pEventData ) ||
6973 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6974 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6975 {
6976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 }
6981
6982#if 0
6983 wpalMutexAcquire(&pWDICtx->wptMutex);
6984 /*-----------------------------------------------------------------------
6985 Check to see if SCAN is already in progress - if so reject the req
6986 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 -----------------------------------------------------------------------*/
6989 if ( pWDICtx->bScanInProgress )
6990 {
6991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6992 "Scan is already in progress - subsequent scan is not allowed"
6993 " until the first scan completes");
6994
6995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 }
6998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7000 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001
7002 wpalMutexRelease(&pWDICtx->wptMutex);
7003#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007004 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 * It shold be removed once host and riva changes are in sync*/
7008 /*-----------------------------------------------------------------------
7009 Get message buffer
7010 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 sizeof(halInitScanConReqMsg.initScanParams),
7013 &pSendBuffer, &usDataOffset, &usSendSize))||
7014 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7015 {
7016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7017 "Unable to get send buffer in init scan req %x %x %x",
7018 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 }
7022
7023
7024 /*-----------------------------------------------------------------------
7025 Fill in the message
7026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007027 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7029
7030 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7031 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7032
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007035 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007036 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7039
7040 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7041 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7042
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7044 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7048
7049 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7050 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7053 }
7054
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 wpalMemoryCopy( pSendBuffer+usDataOffset,
7056 &halInitScanConReqMsg.initScanParams,
7057 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 }
7059 else
7060 {
7061 /*-----------------------------------------------------------------------
7062 Get message buffer
7063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 sizeof(halInitScanReqMsg.initScanParams),
7066 &pSendBuffer, &usDataOffset, &usSendSize))||
7067 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7068 {
7069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7070 "Unable to get send buffer in init scan req %x %x %x",
7071 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 }
7075
7076
7077 /*-----------------------------------------------------------------------
7078 Fill in the message
7079 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007080 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007081 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7082
7083 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7084 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7085
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7092
7093 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7094 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7095
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7098
7099 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7100 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007101 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7103 }
7104
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 wpalMemoryCopy( pSendBuffer+usDataOffset,
7106 &halInitScanReqMsg.initScanParams,
7107 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 }
7109
7110 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007111 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007112
7113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7118
7119}/*WDI_ProcessInitScanReq*/
7120
7121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007122 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007124
7125 @param pWDICtx: pointer to the WLAN DAL context
7126 pEventData: pointer to the event information structure
7127
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 @see
7129 @return Result of the function call
7130*/
7131WDI_Status
7132WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007133(
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 WDI_ControlBlockType* pWDICtx,
7135 WDI_EventInfoType* pEventData
7136)
7137{
7138 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7139 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007140 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 wpt_uint16 usDataOffset = 0;
7142 wpt_uint16 usSendSize = 0;
7143
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7146
7147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 -------------------------------------------------------------------------*/
7150 if (( NULL == pEventData ) ||
7151 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7152 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7153 {
7154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 }
7159
7160#if 0
7161 wpalMutexAcquire(&pWDICtx->wptMutex);
7162 /*-----------------------------------------------------------------------
7163 Check to see if SCAN is already in progress - start scan is only
7164 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7169 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7170 {
7171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7172 "Scan start not allowed in this state %d %d",
7173 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007174
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 }
7178
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007180
7181 wpalMutexRelease(&pWDICtx->wptMutex);
7182#endif
7183
7184 /*-----------------------------------------------------------------------
7185 Get message buffer
7186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 sizeof(halStartScanReqMsg.startScanParams),
7189 &pSendBuffer, &usDataOffset, &usSendSize))||
7190 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7191 {
7192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7193 "Unable to get send buffer in start scan req %x %x %x",
7194 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007201 wpalMemoryCopy( pSendBuffer+usDataOffset,
7202 &halStartScanReqMsg.startScanParams,
7203 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007204
7205 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007207
7208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007209 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7213}/*WDI_ProcessStartScanReq*/
7214
7215
7216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007219
7220 @param pWDICtx: pointer to the WLAN DAL context
7221 pEventData: pointer to the event information structure
7222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 @see
7224 @return Result of the function call
7225*/
7226WDI_Status
7227WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007228(
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 WDI_ControlBlockType* pWDICtx,
7230 WDI_EventInfoType* pEventData
7231)
7232{
7233 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7234 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 wpt_uint16 usDataOffset = 0;
7237 wpt_uint16 usSendSize = 0;
7238
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7241
7242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 -------------------------------------------------------------------------*/
7245 if (( NULL == pEventData ) ||
7246 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7247 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7248 {
7249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 }
7254
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7256 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007257 * forwarded to HAL and result in hang*/
7258#if 0
7259 wpalMutexAcquire(&pWDICtx->wptMutex);
7260 /*-----------------------------------------------------------------------
7261 Check to see if SCAN is already in progress - end scan is only
7262 allowed when a scan is ongoing and the state of the scan procedure
7263 is started
7264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7267 {
7268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7269 "End start not allowed in this state %d %d",
7270 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007271
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 }
7275
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007277
7278 wpalMutexRelease(&pWDICtx->wptMutex);
7279#endif
7280
7281 /*-----------------------------------------------------------------------
7282 Get message buffer
7283 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 sizeof(halEndScanReqMsg.endScanParams),
7286 &pSendBuffer, &usDataOffset, &usSendSize))||
7287 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7288 {
7289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7290 "Unable to get send buffer in start scan req %x %x %x",
7291 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 }
7295
7296 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7297
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 wpalMemoryCopy( pSendBuffer+usDataOffset,
7299 &halEndScanReqMsg.endScanParams,
7300 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007301
7302 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007304
7305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7310}/*WDI_ProcessEndScanReq*/
7311
7312
7313/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007316
7317 @param pWDICtx: pointer to the WLAN DAL context
7318 pEventData: pointer to the event information structure
7319
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 @see
7321 @return Result of the function call
7322*/
7323WDI_Status
7324WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007325(
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 WDI_ControlBlockType* pWDICtx,
7327 WDI_EventInfoType* pEventData
7328)
7329{
7330 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7331 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 wpt_uint16 usDataOffset = 0;
7334 wpt_uint16 usSendSize = 0;
7335 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007336 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7339
7340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 -------------------------------------------------------------------------*/
7343 if (( NULL == pEventData ) ||
7344 ( NULL == pEventData->pEventData) ||
7345 ( NULL == pEventData->pCBfnc))
7346 {
7347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 }
7352
7353 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7354 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7356 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 * forwarded to HAL and result in hang*/
7358#if 0
7359 wpalMutexAcquire(&pWDICtx->wptMutex);
7360 /*-----------------------------------------------------------------------
7361 Check to see if SCAN is already in progress
7362 Finish scan gets invoked any scan states. ie. abort scan
7363 It should be allowed in any states.
7364 -----------------------------------------------------------------------*/
7365 if ( !pWDICtx->bScanInProgress )
7366 {
7367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7368 "Finish start not allowed in this state %d",
7369 pWDICtx->bScanInProgress );
7370
7371 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 }
7374
7375 /*-----------------------------------------------------------------------
7376 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7380 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 wpalMutexRelease(&pWDICtx->wptMutex);
7382#endif
7383
7384 if ( pWDICtx->bInBmps )
7385 {
7386 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007387 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7388 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7389 {
7390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7391 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7392 WDI_ASSERT(0);
7393 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
7396 /*-----------------------------------------------------------------------
7397 Get message buffer
7398 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007400 sizeof(halFinishScanReqMsg.finishScanParams),
7401 &pSendBuffer, &usDataOffset, &usSendSize))||
7402 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7403 {
7404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7405 "Unable to get send buffer in start scan req %x %x %x",
7406 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 }
7410
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7413
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7416
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7419
7420 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7421 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7422
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7429
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7432
7433 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7434 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7437 }
7438
7439 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7440 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7441
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 wpalMemoryCopy( pSendBuffer+usDataOffset,
7443 &halFinishScanReqMsg.finishScanParams,
7444 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007445
7446 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007448
7449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7454}/*WDI_ProcessFinishScanReq*/
7455
7456
7457/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007459==========================================================================*/
7460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 @brief Process BSS Join for a given Session
7462
7463 @param pWDICtx: pointer to the WLAN DAL context
7464 pEventData: pointer to the event information structure
7465
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 @see
7467 @return Result of the function call
7468*/
7469WDI_Status
7470WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007471(
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 WDI_ControlBlockType* pWDICtx,
7473 WDI_JoinReqParamsType* pwdiJoinParams,
7474 WDI_JoinRspCb wdiJoinRspCb,
7475 void* pUserData
7476)
7477{
7478 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007480 wpt_uint16 usDataOffset = 0;
7481 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7486
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007487 wpalMutexAcquire(&pWDICtx->wptMutex);
7488
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 /*------------------------------------------------------------------------
7490 Check to see if we have any session with this BSSID already stored, we
7491 should not
7492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7494 pwdiJoinParams->wdiReqInfo.macBSSID,
7495 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007496
7497 if ( NULL != pBSSSes )
7498 {
7499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007500 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7501 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007502
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007503 /*reset the bAssociationInProgress otherwise the next
7504 *join request will be queued*/
7505 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7506 wpalMutexRelease(&pWDICtx->wptMutex);
7507 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 }
7509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 if ( NULL == pBSSSes )
7515 {
7516
7517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7518 "DAL has no free sessions - cannot run another join");
7519
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007520 /*reset the bAssociationInProgress otherwise the next
7521 *join request will be queued*/
7522 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007524 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 }
7526
7527 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7529 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 WDI_MAC_ADDR_LEN);
7531
7532 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007535
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 wpalMutexRelease(&pWDICtx->wptMutex);
7537
7538 /*-----------------------------------------------------------------------
7539 Get message buffer
7540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 sizeof(halJoinReqMsg.joinReqParams),
7543 &pSendBuffer, &usDataOffset, &usSendSize))||
7544 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7545 {
7546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7547 "Unable to get send buffer in join req %x %x %x",
7548 pUserData, pwdiJoinParams, wdiJoinRspCb);
7549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 }
7552
7553 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007555
7556 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 pwdiJoinParams->wdiReqInfo.macSTASelf,
7558 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007559
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7562
7563 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7564
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007565#ifdef WLAN_FEATURE_VOWIFI
7566 halJoinReqMsg.joinReqParams.maxTxPower =
7567 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7568#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7571#endif
7572
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7575 wdiSecondaryChannelOffset);
7576
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 wpalMemoryCopy( pSendBuffer+usDataOffset,
7578 &halJoinReqMsg.joinReqParams,
7579 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007580
7581 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583
7584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7588 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007589
7590}/*WDI_ProcessBSSSessionJoinReq*/
7591
7592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007595
7596 @param pWDICtx: pointer to the WLAN DAL context
7597 pEventData: pointer to the event information structure
7598
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 @see
7600 @return Result of the function call
7601*/
7602WDI_Status
7603WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007604(
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 WDI_ControlBlockType* pWDICtx,
7606 WDI_EventInfoType* pEventData
7607)
7608{
7609 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7610 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7611 WDI_JoinRspCb wdiJoinRspCb = NULL;
7612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7613
7614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 -------------------------------------------------------------------------*/
7617 if (( NULL == pEventData ) ||
7618 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7619 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7620 {
7621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007626
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 /*-------------------------------------------------------------------------
7628 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 -------------------------------------------------------------------------*/
7631 wpalMutexAcquire(&pWDICtx->wptMutex);
7632
7633 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7634 {
7635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7636 "Association is currently in progress, queueing new join req");
7637
7638 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 pwdiJoinParams->wdiReqInfo.macBSSID);
7641
7642 wpalMutexRelease(&pWDICtx->wptMutex);
7643
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 }
7646
7647 /*Starting a new association */
7648 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7649 wpalMutexRelease(&pWDICtx->wptMutex);
7650
7651 /*Process the Join Request*/
7652 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7653 wdiJoinRspCb,pEventData->pUserData);
7654
7655}/*WDI_ProcessJoinReq*/
7656
7657
7658/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007661
7662 @param pWDICtx: pointer to the WLAN DAL context
7663 pEventData: pointer to the event information structure
7664
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 @see
7666 @return Result of the function call
7667*/
7668WDI_Status
7669WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007670(
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 WDI_ControlBlockType* pWDICtx,
7672 WDI_EventInfoType* pEventData
7673)
7674{
7675 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7676 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 wpt_uint16 uMsgSize = 0;
7680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 wpt_uint16 usDataOffset = 0;
7682 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007684
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7687
7688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007690 -------------------------------------------------------------------------*/
7691 if (( NULL == pEventData ) ||
7692 ( NULL == pEventData->pEventData ) ||
7693 ( NULL == pEventData->pCBfnc ))
7694 {
7695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 }
7700
7701 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7702 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7703 /*-------------------------------------------------------------------------
7704 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 -------------------------------------------------------------------------*/
7707 wpalMutexAcquire(&pWDICtx->wptMutex);
7708
7709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7713 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7714 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 {
7718#ifdef WLAN_FEATURE_VOWIFI_11R
7719 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 if ( NULL == pBSSSes )
7724 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007725
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7727 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007728
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007732
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7735 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007737
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7741#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 * Request in case of IBSS*/
7744 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7745 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7746 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7747 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7748 {
7749 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 if ( NULL == pBSSSes )
7754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007755
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7757 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007758
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007762
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7765 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007767
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7771 }
7772 else
7773 {
7774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7776 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7777 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7778
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 /* for IBSS testing */
7780 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 }
7783#endif
7784 }
7785
7786 /*------------------------------------------------------------------------
7787 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 ------------------------------------------------------------------------*/
7790 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7791 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7793 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7794 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7795 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007796
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007798
7799 wpalMutexRelease(&pWDICtx->wptMutex);
7800
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 }
7803
7804 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7806 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 sizeof(pWDICtx->wdiCachedConfigBssReq));
7808
7809 wpalMutexRelease(&pWDICtx->wptMutex);
7810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7812#ifdef WLAN_FEATURE_11AC
7813 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007814 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 else
7816#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007817 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007818
7819 /*-----------------------------------------------------------------------
7820 Get message buffer
7821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7824 ( usSendSize < (usDataOffset + uMsgSize )))
7825 {
7826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7827 "Unable to get send buffer in config bss req %x %x %x",
7828 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 }
7832
7833 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007834#ifdef WLAN_FEATURE_11AC
7835 if (WDI_getFwWlanFeatCaps(DOT11AC))
7836 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7837 &pwdiConfigBSSParams->wdiReqInfo);
7838 else
7839#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 &pwdiConfigBSSParams->wdiReqInfo);
7842
7843 /* Need to fill in the STA Index to invalid, since at this point we have not
7844 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846
7847 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7849
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007850#ifdef WLAN_FEATURE_11AC
7851 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7852 wpalMemoryCopy( pSendBuffer+usDataOffset,
7853 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7854 uMsgSize);
7855 }else
7856#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007857 {
7858 if ( uMsgSize <= sizeof(tConfigBssParams) )
7859 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007860 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007861 &halConfigBssReqMsg.uBssParams.configBssParams,
7862 uMsgSize);
7863 }
7864 else
7865 {
7866 return WDI_STATUS_E_FAILURE;
7867 }
7868 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007869
7870 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872
7873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7877 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 WDI_CONFIG_BSS_RESP);
7879
7880}/*WDI_ProcessConfigBSSReq*/
7881
7882
7883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007886
7887 @param pWDICtx: pointer to the WLAN DAL context
7888 pEventData: pointer to the event information structure
7889
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 @see
7891 @return Result of the function call
7892*/
7893WDI_Status
7894WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007895(
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 WDI_ControlBlockType* pWDICtx,
7897 WDI_EventInfoType* pEventData
7898)
7899{
7900 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7901 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 wpt_uint16 usDataOffset = 0;
7906 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007908
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7911
7912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 -------------------------------------------------------------------------*/
7915 if (( NULL == pEventData ) ||
7916 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7917 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7918 {
7919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 }
7924
7925 /*-------------------------------------------------------------------------
7926 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 -------------------------------------------------------------------------*/
7929 wpalMutexAcquire(&pWDICtx->wptMutex);
7930
7931 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7935 pwdiDelBSSParams->ucBssIdx,
7936 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007937
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 {
7940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 "%s: BSS does not yet exist. ucBssIdx %d",
7942 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007943
7944 wpalMutexRelease(&pWDICtx->wptMutex);
7945
7946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007948
7949 /*------------------------------------------------------------------------
7950 Check if this BSS is being currently processed or queued,
7951 if queued - queue the new request as well
7952 ------------------------------------------------------------------------*/
7953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7956 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7957 __func__, pwdiDelBSSParams->ucBssIdx);
7958
7959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
7962
7963 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007965
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 /*-----------------------------------------------------------------------
7967 If we receive a Del BSS request for an association that is already in
7968 progress, it indicates that the assoc has failed => we no longer have
7969 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 -----------------------------------------------------------------------*/
7972 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7973 {
7974 /*We can switch to false here because even if a subsequent Join comes in
7975 it will only be processed when DAL transitions out of BUSY state which
7976 happens when the Del BSS request comes */
7977 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7978
7979 /*Former association is complete - prepare next pending assoc for
7980 processing */
7981 WDI_DequeueAssocRequest(pWDICtx);
7982 }
7983
7984 wpalMutexRelease(&pWDICtx->wptMutex);
7985 /*-----------------------------------------------------------------------
7986 Get message buffer
7987 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 sizeof(halBssReqMsg.deleteBssParams),
7990 &pSendBuffer, &usDataOffset, &usSendSize))||
7991 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7992 {
7993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7994 "Unable to get send buffer in start req %x %x %x",
7995 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 }
7999
8000 /*Fill in the message request structure*/
8001
8002 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008003 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 wpalMemoryCopy( pSendBuffer+usDataOffset,
8006 &halBssReqMsg.deleteBssParams,
8007 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008008
8009 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008011
Jeff Johnsone7245742012-09-05 17:12:55 -07008012
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8018
Jeff Johnsone7245742012-09-05 17:12:55 -07008019
Jeff Johnson295189b2012-06-20 16:38:30 -07008020}/*WDI_ProcessDelBSSReq*/
8021
8022/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008025
8026 @param pWDICtx: pointer to the WLAN DAL context
8027 pEventData: pointer to the event information structure
8028
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 @see
8030 @return Result of the function call
8031*/
8032WDI_Status
8033WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008034(
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 WDI_ControlBlockType* pWDICtx,
8036 WDI_EventInfoType* pEventData
8037)
8038{
8039 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8040 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 wpt_uint16 usDataOffset = 0;
8045 wpt_uint16 usSendSize = 0;
8046 wpt_uint16 uMsgSize = 0;
8047 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8052
8053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 -------------------------------------------------------------------------*/
8056 if (( NULL == pEventData ) ||
8057 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8058 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8059 {
8060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 }
8065
8066 /*-------------------------------------------------------------------------
8067 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 -------------------------------------------------------------------------*/
8070 wpalMutexAcquire(&pWDICtx->wptMutex);
8071
8072 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8076 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8077 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008078
8079 if ( NULL == pBSSSes )
8080 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8082 "%s: Association sequence for this BSS does not yet exist - "
8083 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8084 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008085
8086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 }
8089
8090 /*------------------------------------------------------------------------
8091 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 ------------------------------------------------------------------------*/
8094 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8095 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8097 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8098 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008099
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008101
8102 wpalMutexRelease(&pWDICtx->wptMutex);
8103
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 }
8106
8107 /*-----------------------------------------------------------------------
8108 If Post Assoc was not yet received - the current association must
8109 be in progress
8110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8113 {
8114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8115 "Association sequence for this BSS association no longer in "
8116 "progress - not allowed");
8117
8118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 }
8121
8122 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 -----------------------------------------------------------------------*/
8125 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8126 {
8127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8128 "Post Assoc not allowed before JOIN - failing request");
8129
8130 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 }
8133
8134 wpalMutexRelease(&pWDICtx->wptMutex);
8135
8136 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8137 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8138 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8143 ( usSendSize < (usDataOffset + uMsgSize )))
8144 {
8145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8146 "Unable to get send buffer in start req %x %x %x",
8147 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 }
8151
8152 /*Copy the STA parameters */
8153 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8154 &pwdiPostAssocParams->wdiSTAParams );
8155
8156 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 WDI_STATableFindStaidByAddr(pWDICtx,
8159 pwdiPostAssocParams->wdiSTAParams.macSTA,
8160 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8161 {
8162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8163 "This station does not exist in the WDI Station Table %d");
8164 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008165 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 }
8168
8169 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 pBSSSes->ucBSSIdx;
8172
8173 /*Copy the BSS parameters */
8174 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8175 &pwdiPostAssocParams->wdiBSSParams);
8176
8177 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 WDI_STATableFindStaidByAddr(pWDICtx,
8180 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 {
8183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8184 "This station does not exist in the WDI Station Table %d");
8185 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008186 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 }
8189
8190 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 pBSSSes->ucBSSIdx;
8193
Jeff Johnsone7245742012-09-05 17:12:55 -07008194
8195 wpalMemoryCopy( pSendBuffer+usDataOffset,
8196 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8197 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008198
8199 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8200
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8202 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8203 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008204
Jeff Johnsone7245742012-09-05 17:12:55 -07008205
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008208
Jeff Johnsone7245742012-09-05 17:12:55 -07008209
8210 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008213
8214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8219
Jeff Johnsone7245742012-09-05 17:12:55 -07008220
Jeff Johnson295189b2012-06-20 16:38:30 -07008221}/*WDI_ProcessPostAssocReq*/
8222
8223/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008226
8227 @param pWDICtx: pointer to the WLAN DAL context
8228 pEventData: pointer to the event information structure
8229
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 @see
8231 @return Result of the function call
8232*/
8233WDI_Status
8234WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008235(
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 WDI_ControlBlockType* pWDICtx,
8237 WDI_EventInfoType* pEventData
8238)
8239{
8240 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8241 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 wpt_uint16 usDataOffset = 0;
8246 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8249
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8252
8253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 -------------------------------------------------------------------------*/
8256 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8257 ( NULL == pEventData->pCBfnc ))
8258 {
8259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 }
8264
8265 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8266 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8267 /*-------------------------------------------------------------------------
8268 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 -------------------------------------------------------------------------*/
8271 wpalMutexAcquire(&pWDICtx->wptMutex);
8272
8273 /*------------------------------------------------------------------------
8274 Find the BSS for which the request is made and identify WDI session
8275 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8277 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 &macBSSID))
8279 {
8280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8281 "This station does not exist in the WDI Station Table %d");
8282 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 }
8285
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8287 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8290 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8291 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008292
8293 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 }
8296
8297 /*------------------------------------------------------------------------
8298 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 ------------------------------------------------------------------------*/
8301 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8302 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8304 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8305 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008306
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 wpalMutexRelease(&pWDICtx->wptMutex);
8313 /*-----------------------------------------------------------------------
8314 Get message buffer
8315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 sizeof(halDelStaReqMsg.delStaParams),
8318 &pSendBuffer, &usDataOffset, &usSendSize))||
8319 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8320 {
8321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8322 "Unable to get send buffer in start req %x %x %x",
8323 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 }
8327
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8329 wpalMemoryCopy( pSendBuffer+usDataOffset,
8330 &halDelStaReqMsg.delStaParams,
8331 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008332
8333 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008335
8336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8341
8342}/*WDI_ProcessDelSTAReq*/
8343
8344
8345/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008347==========================================================================*/
8348/**
8349 @brief Process Set BSS Key Request function (called when Main FSM
8350 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008351
8352 @param pWDICtx: pointer to the WLAN DAL context
8353 pEventData: pointer to the event information structure
8354
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 @see
8356 @return Result of the function call
8357*/
8358WDI_Status
8359WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008360(
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 WDI_ControlBlockType* pWDICtx,
8362 WDI_EventInfoType* pEventData
8363)
8364{
8365 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8366 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 wpt_uint16 usDataOffset = 0;
8371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8374 wpt_uint8 keyIndex = 0;
8375
8376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8377
8378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 -------------------------------------------------------------------------*/
8381 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8382 ( NULL == pEventData->pCBfnc ))
8383 {
8384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 }
8389
8390 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8391 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8392 /*-------------------------------------------------------------------------
8393 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 -------------------------------------------------------------------------*/
8396 wpalMutexAcquire(&pWDICtx->wptMutex);
8397
8398 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8402 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8403 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 {
8407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8409 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008410
8411 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 }
8414
8415 /*------------------------------------------------------------------------
8416 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 ------------------------------------------------------------------------*/
8419 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8420 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8422 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8423 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 }
8429
8430
8431 wpalMutexRelease(&pWDICtx->wptMutex);
8432 /*-----------------------------------------------------------------------
8433 Get message buffer
8434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8437 &pSendBuffer, &usDataOffset, &usSendSize))||
8438 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8439 {
8440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8441 "Unable to get send buffer in set bss key req %x %x %x",
8442 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 }
8446
8447 /*-----------------------------------------------------------------------
8448 Copy the Key parameters into the HAL message
8449 -----------------------------------------------------------------------*/
8450
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8455
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8458
8459 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8460 keyIndex++)
8461 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8464 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8465 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8466 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8467 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8468 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8475 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 WDI_MAX_KEY_LENGTH);
8478 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008479
8480 wpalMemoryCopy( pSendBuffer+usDataOffset,
8481 &halSetBssKeyReqMsg.setBssKeyParams,
8482 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008483
8484 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008486
8487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8491 wdiSetBSSKeyRspCb, pEventData->pUserData,
8492 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008493
8494}/*WDI_ProcessSetBssKeyReq*/
8495
8496/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008499
8500 @param pWDICtx: pointer to the WLAN DAL context
8501 pEventData: pointer to the event information structure
8502
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 @see
8504 @return Result of the function call
8505*/
8506WDI_Status
8507WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008508(
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WDI_ControlBlockType* pWDICtx,
8510 WDI_EventInfoType* pEventData
8511)
8512{
8513 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8514 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 wpt_uint16 usDataOffset = 0;
8519 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8523
8524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 -------------------------------------------------------------------------*/
8527 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8528 ( NULL == pEventData->pCBfnc ))
8529 {
8530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 }
8535
8536 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8537 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8538 /*-------------------------------------------------------------------------
8539 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 -------------------------------------------------------------------------*/
8542 wpalMutexAcquire(&pWDICtx->wptMutex);
8543
8544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8548 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8549 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008550
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 {
8553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8555 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008556
8557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 }
8560
8561 /*------------------------------------------------------------------------
8562 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 ------------------------------------------------------------------------*/
8565 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8566 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8568 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8569 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008570
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
8576
8577 wpalMutexRelease(&pWDICtx->wptMutex);
8578
8579 /*-----------------------------------------------------------------------
8580 Get message buffer
8581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8584 &pSendBuffer, &usDataOffset, &usSendSize))||
8585 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8586 {
8587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8588 "Unable to get send buffer in set bss key req %x %x %x",
8589 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 }
8593 /*-----------------------------------------------------------------------
8594 Copy the Key parameters into the HAL message
8595 -----------------------------------------------------------------------*/
8596 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8597
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8600
8601 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8605
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 wpalMemoryCopy( pSendBuffer+usDataOffset,
8607 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8608 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008619}/*WDI_ProcessRemoveBssKeyReq*/
8620
8621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008624
8625 @param pWDICtx: pointer to the WLAN DAL context
8626 pEventData: pointer to the event information structure
8627
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 @see
8629 @return Result of the function call
8630*/
8631WDI_Status
8632WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008633(
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 WDI_ControlBlockType* pWDICtx,
8635 WDI_EventInfoType* pEventData
8636)
8637{
8638 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8639 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8640 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 wpt_uint16 usDataOffset = 0;
8643 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8648 wpt_uint8 keyIndex = 0;
8649
8650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8651
8652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 -------------------------------------------------------------------------*/
8655 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8656 ( NULL == pEventData->pCBfnc ))
8657 {
8658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 }
8663
8664 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8665 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8666 /*-------------------------------------------------------------------------
8667 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 -------------------------------------------------------------------------*/
8670 wpalMutexAcquire(&pWDICtx->wptMutex);
8671
8672 /*------------------------------------------------------------------------
8673 Find the BSS for which the request is made and identify WDI session
8674 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8676 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 &macBSSID))
8678 {
8679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8680 "This station does not exist in the WDI Station Table %d");
8681 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 }
8684
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8686 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8689 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8690 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008691
8692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008695
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 /*------------------------------------------------------------------------
8697 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 ------------------------------------------------------------------------*/
8700 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8701 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8703 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8704 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008705
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 }
8710
8711
8712 wpalMutexRelease(&pWDICtx->wptMutex);
8713 /*-----------------------------------------------------------------------
8714 Get message buffer
8715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8718 &pSendBuffer, &usDataOffset, &usSendSize))||
8719 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8720 {
8721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8722 "Unable to get send buffer in set bss key req %x %x %x",
8723 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727 /*-----------------------------------------------------------------------
8728 Copy the STA Key parameters into the HAL message
8729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8732
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8735
8736 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8737
8738 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8739
8740 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8741
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8743 keyIndex++)
8744 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8747 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8748 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8749 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8750 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8751 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8758 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 WDI_MAX_KEY_LENGTH);
8761 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008762
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 wpalMemoryCopy( pSendBuffer+usDataOffset,
8764 &halSetStaKeyReqMsg.setStaKeyParams,
8765 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008766
8767 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769
8770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8774 wdiSetSTAKeyRspCb, pEventData->pUserData,
8775 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008776
8777}/*WDI_ProcessSetSTAKeyReq*/
8778
8779/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008782
8783 @param pWDICtx: pointer to the WLAN DAL context
8784 pEventData: pointer to the event information structure
8785
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 @see
8787 @return Result of the function call
8788*/
8789WDI_Status
8790WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008791(
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 WDI_ControlBlockType* pWDICtx,
8793 WDI_EventInfoType* pEventData
8794)
8795{
8796 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8797 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8798 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 wpt_uint16 usDataOffset = 0;
8801 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 wpt_macAddr macBSSID;
8804 wpt_uint8 ucCurrentBSSSesIdx;
8805 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8807
8808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 -------------------------------------------------------------------------*/
8811 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8812 ( NULL == pEventData->pCBfnc ))
8813 {
8814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 }
8819
8820 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8821 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8822 /*-------------------------------------------------------------------------
8823 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 -------------------------------------------------------------------------*/
8826 wpalMutexAcquire(&pWDICtx->wptMutex);
8827
8828 /*------------------------------------------------------------------------
8829 Find the BSS for which the request is made and identify WDI session
8830 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8832 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 &macBSSID))
8834 {
8835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8836 "This station does not exist in the WDI Station Table %d");
8837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 }
8840
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8842 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8845 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8846 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008847
8848 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008851
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 /*------------------------------------------------------------------------
8853 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 ------------------------------------------------------------------------*/
8856 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8857 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8859 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8860 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008861
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 }
8866
8867
8868
8869 wpalMutexRelease(&pWDICtx->wptMutex);
8870 /*-----------------------------------------------------------------------
8871 Get message buffer
8872 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8875 &pSendBuffer, &usDataOffset, &usSendSize))||
8876 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8877 {
8878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8879 "Unable to get send buffer in set bss key req %x %x %x",
8880 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 }
8884
8885 /*-----------------------------------------------------------------------
8886 Copy the Key parameters into the HAL message
8887 -----------------------------------------------------------------------*/
8888
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8891
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8894
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8897
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8900
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 wpalMemoryCopy( pSendBuffer+usDataOffset,
8902 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8903 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008904
8905 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907
8908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008914
8915}/*WDI_ProcessRemoveSTAKeyReq*/
8916
8917/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008920
8921 @param pWDICtx: pointer to the WLAN DAL context
8922 pEventData: pointer to the event information structure
8923
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 @see
8925 @return Result of the function call
8926*/
8927WDI_Status
8928WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008929(
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 WDI_ControlBlockType* pWDICtx,
8931 WDI_EventInfoType* pEventData
8932)
8933{
8934 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8935 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8936 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 wpt_uint16 usDataOffset = 0;
8939 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8944 wpt_uint8 keyIndex = 0;
8945
8946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8947
8948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 -------------------------------------------------------------------------*/
8951 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8952 ( NULL == pEventData->pCBfnc ))
8953 {
8954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8961 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8962 /*-------------------------------------------------------------------------
8963 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 -------------------------------------------------------------------------*/
8966 wpalMutexAcquire(&pWDICtx->wptMutex);
8967
8968 /*------------------------------------------------------------------------
8969 Find the BSS for which the request is made and identify WDI session
8970 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8972 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 &macBSSID))
8974 {
8975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8976 "This station does not exist in the WDI Station Table %d");
8977 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 }
8980
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8982 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 {
8984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8986 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008987
8988 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008991
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 /*------------------------------------------------------------------------
8993 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 ------------------------------------------------------------------------*/
8996 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8997 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8999 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9000 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009001
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 }
9006
9007
9008 wpalMutexRelease(&pWDICtx->wptMutex);
9009 /*-----------------------------------------------------------------------
9010 Get message buffer
9011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9014 &pSendBuffer, &usDataOffset, &usSendSize))||
9015 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9018 "Unable to get send buffer in set bss key req %x %x %x",
9019 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023 /*-----------------------------------------------------------------------
9024 Copy the STA Key parameters into the HAL message
9025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9028
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9031
9032 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9033
9034 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9035
9036 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9037
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9039 keyIndex++)
9040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9043 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9044 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9045 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9046 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9047 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9054 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 WDI_MAX_KEY_LENGTH);
9057 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009058
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 wpalMemoryCopy( pSendBuffer+usDataOffset,
9060 &halSetStaKeyReqMsg.setStaKeyParams,
9061 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009062
9063 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009065
9066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9070 wdiSetSTAKeyRspCb, pEventData->pUserData,
9071 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009072
9073}/*WDI_ProcessSetSTABcastKeyReq*/
9074
9075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009078
9079 @param pWDICtx: pointer to the WLAN DAL context
9080 pEventData: pointer to the event information structure
9081
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 @see
9083 @return Result of the function call
9084*/
9085WDI_Status
9086WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009087(
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 WDI_ControlBlockType* pWDICtx,
9089 WDI_EventInfoType* pEventData
9090)
9091{
9092 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9093 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9094 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 wpt_uint16 usDataOffset = 0;
9097 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 wpt_macAddr macBSSID;
9100 wpt_uint8 ucCurrentBSSSesIdx;
9101 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9103
9104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 -------------------------------------------------------------------------*/
9107 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9108 ( NULL == pEventData->pCBfnc ))
9109 {
9110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 }
9115
9116 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9117 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9118 /*-------------------------------------------------------------------------
9119 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 -------------------------------------------------------------------------*/
9122 wpalMutexAcquire(&pWDICtx->wptMutex);
9123
9124 /*------------------------------------------------------------------------
9125 Find the BSS for which the request is made and identify WDI session
9126 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9128 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 &macBSSID))
9130 {
9131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9132 "This station does not exist in the WDI Station Table %d");
9133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
9136
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9138 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9141 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9142 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009143
9144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009147
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 /*------------------------------------------------------------------------
9149 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 ------------------------------------------------------------------------*/
9152 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9153 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9155 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9156 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 }
9162
9163
9164
9165 wpalMutexRelease(&pWDICtx->wptMutex);
9166 /*-----------------------------------------------------------------------
9167 Get message buffer
9168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9171 &pSendBuffer, &usDataOffset, &usSendSize))||
9172 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9173 {
9174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9175 "Unable to get send buffer in set bss key req %x %x %x",
9176 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 }
9180
9181 /*-----------------------------------------------------------------------
9182 Copy the Key parameters into the HAL message
9183 -----------------------------------------------------------------------*/
9184
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9187
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9190
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9193
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9196
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 wpalMemoryCopy( pSendBuffer+usDataOffset,
9198 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9199 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009200
9201 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009203
9204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009210
9211}/*WDI_ProcessRemoveSTABcastKeyReq*/
9212
9213/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009215==========================================================================*/
9216/**
9217 @brief Process Add TSpec Request function (called when Main FSM
9218 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009219
9220 @param pWDICtx: pointer to the WLAN DAL context
9221 pEventData: pointer to the event information structure
9222
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 @see
9224 @return Result of the function call
9225*/
9226WDI_Status
9227WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009228(
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 WDI_ControlBlockType* pWDICtx,
9230 WDI_EventInfoType* pEventData
9231)
9232{
9233 WDI_AddTSReqParamsType* pwdiAddTSParams;
9234 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 wpt_uint16 usDataOffset = 0;
9239 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 wpt_macAddr macBSSID;
9242 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009243
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9245
9246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 -------------------------------------------------------------------------*/
9249 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9250 ( NULL == pEventData->pCBfnc ))
9251 {
9252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 }
9257
9258 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9259 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9260 /*-------------------------------------------------------------------------
9261 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 -------------------------------------------------------------------------*/
9264 wpalMutexAcquire(&pWDICtx->wptMutex);
9265
9266 /*------------------------------------------------------------------------
9267 Find the BSS for which the request is made and identify WDI session
9268 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9270 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 &macBSSID))
9272 {
9273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9274 "This station does not exist in the WDI Station Table %d");
9275 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 }
9278
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9280 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9283 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9284 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009285
9286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009289
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 /*------------------------------------------------------------------------
9291 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 ------------------------------------------------------------------------*/
9294 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9295 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9297 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9298 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009299
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 }
9304
9305 wpalMutexRelease(&pWDICtx->wptMutex);
9306 /*-----------------------------------------------------------------------
9307 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9311 sizeof(halAddTsParams),
9312 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 &usSendSize))||
9314 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9315 {
9316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9317 "Unable to get send buffer in set bss key req %x %x %x",
9318 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
9322
9323 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9324 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9325
9326 //TSPEC IE
9327 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9328 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9359
9360 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9375
9376 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9381
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 wpalMemoryCopy( pSendBuffer+usDataOffset,
9383 &halAddTsParams,
9384 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
9386 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009388
9389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009395}/*WDI_ProcessAddTSpecReq*/
9396
9397
9398/**
9399 @brief Process Del TSpec Request function (called when Main FSM
9400 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009401
9402 @param pWDICtx: pointer to the WLAN DAL context
9403 pEventData: pointer to the event information structure
9404
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 @see
9406 @return Result of the function call
9407*/
9408WDI_Status
9409WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009410(
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 WDI_ControlBlockType* pWDICtx,
9412 WDI_EventInfoType* pEventData
9413)
9414{
9415 WDI_DelTSReqParamsType* pwdiDelTSParams;
9416 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 wpt_uint16 usDataOffset = 0;
9421 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9424
9425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 -------------------------------------------------------------------------*/
9428 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9429 ( NULL == pEventData->pCBfnc ))
9430 {
9431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 }
9436
9437 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9438 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9439
9440 /*-------------------------------------------------------------------------
9441 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 -------------------------------------------------------------------------*/
9444 wpalMutexAcquire(&pWDICtx->wptMutex);
9445
9446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9450 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9451 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009452
Jeff Johnsone7245742012-09-05 17:12:55 -07009453 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9456 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9457 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9458
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 }
9462
9463 /*------------------------------------------------------------------------
9464 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 ------------------------------------------------------------------------*/
9467 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9470 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9471 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
9477
9478
9479 wpalMutexRelease(&pWDICtx->wptMutex);
9480 /*-----------------------------------------------------------------------
9481 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9486 &pSendBuffer, &usDataOffset, &usSendSize))||
9487 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9488 {
9489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9490 "Unable to get send buffer in set bss key req %x %x %x",
9491 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 }
9495
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 wpalMemoryCopy( pSendBuffer+usDataOffset,
9497 &pwdiDelTSParams->wdiDelTSInfo,
9498 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009499
9500 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009502
9503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9507 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009508}/*WDI_ProcessDelTSpecReq*/
9509
9510/**
9511 @brief Process Update EDCA Params Request function (called when
9512 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009513
9514 @param pWDICtx: pointer to the WLAN DAL context
9515 pEventData: pointer to the event information structure
9516
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 @see
9518 @return Result of the function call
9519*/
9520WDI_Status
9521WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009522(
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 WDI_ControlBlockType* pWDICtx,
9524 WDI_EventInfoType* pEventData
9525)
9526{
9527 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9528 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 wpt_uint16 usDataOffset = 0;
9533 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9536
9537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 -------------------------------------------------------------------------*/
9540 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9541 ( NULL == pEventData->pCBfnc ))
9542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 }
9548
9549 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9550 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9551 /*-------------------------------------------------------------------------
9552 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 -------------------------------------------------------------------------*/
9555 wpalMutexAcquire(&pWDICtx->wptMutex);
9556
9557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9561 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9562 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009563
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 {
9566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9568 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009569
9570 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 }
9573
9574 /*------------------------------------------------------------------------
9575 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 ------------------------------------------------------------------------*/
9578 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9579 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9581 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9582 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009583
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 }
9588
9589
9590 wpalMutexRelease(&pWDICtx->wptMutex);
9591 /*-----------------------------------------------------------------------
9592 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9597 &pSendBuffer, &usDataOffset, &usSendSize))||
9598 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9599 {
9600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9601 "Unable to get send buffer in set bss key req %x %x %x",
9602 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 }
9606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 wpalMemoryCopy( pSendBuffer+usDataOffset,
9608 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9609 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009610
9611 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009613
9614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9618 wdiUpdateEDCARspCb, pEventData->pUserData,
9619 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009620}/*WDI_ProcessUpdateEDCAParamsReq*/
9621
9622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009625
9626 @param pWDICtx: pointer to the WLAN DAL context
9627 pEventData: pointer to the event information structure
9628
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 @see
9630 @return Result of the function call
9631*/
9632WDI_Status
9633WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009634(
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_ControlBlockType* pWDICtx,
9636 WDI_EventInfoType* pEventData
9637)
9638{
9639 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9640 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 wpt_uint16 usDataOffset = 0;
9645 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 wpt_macAddr macBSSID;
9648
9649 tAddBASessionReqMsg halAddBASessionReq;
9650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9651
9652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 -------------------------------------------------------------------------*/
9655 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9656 ( NULL == pEventData->pCBfnc ))
9657 {
9658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 }
9663
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9668 /*-------------------------------------------------------------------------
9669 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 -------------------------------------------------------------------------*/
9672 wpalMutexAcquire(&pWDICtx->wptMutex);
9673
9674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9678 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 &macBSSID))
9680 {
9681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9682 "This station does not exist in the WDI Station Table %d");
9683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 }
9686
9687
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9693 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9694 __func__, MAC_ADDR_ARRAY(macBSSID));
9695
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 }
9699
9700 /*------------------------------------------------------------------------
9701 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 ------------------------------------------------------------------------*/
9704 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9705 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9707 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9708 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009709
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 }
9714
9715
9716 wpalMutexRelease(&pWDICtx->wptMutex);
9717 /*-----------------------------------------------------------------------
9718 Get message buffer
9719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9721 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 sizeof(halAddBASessionReq.addBASessionParams),
9723 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9726 {
9727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9728 "Unable to get send buffer in Add BA session req %x %x %x",
9729 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 }
9733
9734 halAddBASessionReq.addBASessionParams.staIdx =
9735 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9736 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9737 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9738 WDI_MAC_ADDR_LEN);
9739 halAddBASessionReq.addBASessionParams.baTID =
9740 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9741 halAddBASessionReq.addBASessionParams.baPolicy =
9742 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9743 halAddBASessionReq.addBASessionParams.baBufferSize =
9744 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9745 halAddBASessionReq.addBASessionParams.baTimeout =
9746 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9747 halAddBASessionReq.addBASessionParams.baSSN =
9748 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9749 halAddBASessionReq.addBASessionParams.baDirection =
9750 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9751
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 wpalMemoryCopy( pSendBuffer+usDataOffset,
9753 &halAddBASessionReq.addBASessionParams,
9754 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009755
9756 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009758
9759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9763 wdiAddBASessionRspCb, pEventData->pUserData,
9764 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009765}/*WDI_ProcessAddBASessionReq*/
9766
9767/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009768 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009770
9771 @param pWDICtx: pointer to the WLAN DAL context
9772 pEventData: pointer to the event information structure
9773
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 @see
9775 @return Result of the function call
9776*/
9777WDI_Status
9778WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009779(
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 WDI_ControlBlockType* pWDICtx,
9781 WDI_EventInfoType* pEventData
9782)
9783{
9784 WDI_DelBAReqParamsType* pwdiDelBAParams;
9785 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 wpt_uint16 usDataOffset = 0;
9790 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 wpt_macAddr macBSSID;
9793 tDelBAParams halDelBAparam;
9794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9795
9796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 -------------------------------------------------------------------------*/
9799 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9800 ( NULL == pEventData->pCBfnc ))
9801 {
9802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9809 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9810 /*-------------------------------------------------------------------------
9811 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -------------------------------------------------------------------------*/
9814 wpalMutexAcquire(&pWDICtx->wptMutex);
9815
9816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9820 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 &macBSSID))
9822 {
9823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9824 "This station does not exist in the WDI Station Table %d");
9825 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 }
9828
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009830
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9834 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9835 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009836
9837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 }
9840
9841 /*------------------------------------------------------------------------
9842 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009843 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009844 ------------------------------------------------------------------------*/
9845 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9846 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9848 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9849 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009850
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 }
9855
9856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 sizeof(halDelBAparam),
9859 &pSendBuffer, &usDataOffset, &usSendSize))||
9860 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9861 {
9862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9863 "Unable to get send buffer for DEL BA req %x %x %x",
9864 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 }
9868
9869 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9870 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9871 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9872
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 wpalMemoryCopy( pSendBuffer+usDataOffset,
9874 &halDelBAparam,
9875 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009876
9877 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879
9880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9884 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009885}/*WDI_ProcessDelBAReq*/
9886
9887#ifdef FEATURE_WLAN_CCX
9888
9889WDI_Status
9890WDI_ProcessTSMStatsReq
9891(
9892 WDI_ControlBlockType* pWDICtx,
9893 WDI_EventInfoType* pEventData
9894)
9895{
9896 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9897 WDI_TsmRspCb wdiTSMRspCb;
9898 wpt_uint8 ucCurrentBSSSesIdx = 0;
9899 WDI_BSSSessionType* pBSSSes = NULL;
9900 wpt_uint8* pSendBuffer = NULL;
9901 wpt_uint16 usDataOffset = 0;
9902 wpt_uint16 usSendSize = 0;
9903 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9904 tTsmStatsParams halTsmStatsReqParams = {0};
9905
9906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9907
9908 /*-------------------------------------------------------------------------
9909 Sanity check
9910 -------------------------------------------------------------------------*/
9911 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9912 ( NULL == pEventData->pCBfnc ))
9913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 WDI_ASSERT(0);
9917 return WDI_STATUS_E_FAILURE;
9918 }
9919
9920 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9921 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9922 /*-------------------------------------------------------------------------
9923 Check to see if we are in the middle of an association, if so queue, if
9924 not it means it is free to process request
9925 -------------------------------------------------------------------------*/
9926 wpalMutexAcquire(&pWDICtx->wptMutex);
9927
9928 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9929 if ( NULL == pBSSSes )
9930 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9932 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9933 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009934
9935 wpalMutexRelease(&pWDICtx->wptMutex);
9936 return WDI_STATUS_E_NOT_ALLOWED;
9937 }
9938
9939 /*------------------------------------------------------------------------
9940 Check if this BSS is being currently processed or queued,
9941 if queued - queue the new request as well
9942 ------------------------------------------------------------------------*/
9943 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9944 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9946 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9947 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009948
9949 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9950 wpalMutexRelease(&pWDICtx->wptMutex);
9951 return wdiStatus;
9952 }
9953
9954 wpalMutexRelease(&pWDICtx->wptMutex);
9955 /*-----------------------------------------------------------------------
9956 Get message buffer
9957 ! TO DO : proper conversion into the HAL Message Request Format
9958 -----------------------------------------------------------------------*/
9959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9960 sizeof(halTsmStatsReqParams),
9961 &pSendBuffer, &usDataOffset, &usSendSize))||
9962 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9963 {
9964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9965 "Unable to get send buffer in set bss key req %x %x %x",
9966 pEventData, pwdiTSMParams, wdiTSMRspCb);
9967 WDI_ASSERT(0);
9968 return WDI_STATUS_E_FAILURE;
9969 }
9970
9971 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9972 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9973 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9974 WDI_MAC_ADDR_LEN);
9975 wpalMemoryCopy( pSendBuffer+usDataOffset,
9976 &halTsmStatsReqParams,
9977 sizeof(halTsmStatsReqParams));
9978
9979 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9980 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9981
9982 /*-------------------------------------------------------------------------
9983 Send TSM Stats Request to HAL
9984 -------------------------------------------------------------------------*/
9985 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9986 wdiTSMRspCb, pEventData->pUserData,
9987 WDI_TSM_STATS_RESP);
9988}/*WDI_ProcessTSMStatsReq*/
9989
9990#endif
9991
9992
9993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009996
9997 @param pWDICtx: pointer to the WLAN DAL context
9998 pEventData: pointer to the event information structure
9999
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 @see
10001 @return Result of the function call
10002*/
10003WDI_Status
10004WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010005(
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 WDI_ControlBlockType* pWDICtx,
10007 WDI_EventInfoType* pEventData
10008)
10009{
10010 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10011 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 wpt_uint16 usDataOffset = 0;
10014 wpt_uint16 usSendSize = 0;
10015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10016
10017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 -------------------------------------------------------------------------*/
10020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10021 ( NULL == pEventData->pCBfnc ))
10022 {
10023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 }
10028
10029 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10030 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10031 /*-----------------------------------------------------------------------
10032 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10037 &pSendBuffer, &usDataOffset, &usSendSize))||
10038 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10039 {
10040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "Unable to get send buffer in set bss key req %x %x %x",
10042 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 }
10046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 wpalMemoryCopy( pSendBuffer+usDataOffset,
10048 &pwdiFlushAcParams->wdiFlushAcInfo,
10049 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010050
10051 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010053
10054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10058 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010059}/*WDI_ProcessFlushAcReq*/
10060
10061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010064
10065 @param pWDICtx: pointer to the WLAN DAL context
10066 pEventData: pointer to the event information structure
10067
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 @see
10069 @return Result of the function call
10070*/
10071WDI_Status
10072WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010073(
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 WDI_ControlBlockType* pWDICtx,
10075 WDI_EventInfoType* pEventData
10076)
10077{
10078 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10079 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 wpt_uint16 usDataOffset = 0;
10082 wpt_uint16 usSendSize = 0;
10083
10084 tBtAmpEventMsg haltBtAmpEventMsg;
10085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10086
10087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 -------------------------------------------------------------------------*/
10090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10091 ( NULL == pEventData->pCBfnc ))
10092 {
10093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 }
10098
10099 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10100 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10101 /*-----------------------------------------------------------------------
10102 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10107 &pSendBuffer, &usDataOffset, &usSendSize))||
10108 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10109 {
10110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10111 "Unable to get send buffer in BT AMP event req %x %x %x",
10112 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 }
10116
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 wpalMemoryCopy( pSendBuffer+usDataOffset,
10120 &haltBtAmpEventMsg.btAmpEventParams,
10121 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010122
10123 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010125
10126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10130 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010131}/*WDI_ProcessBtAmpEventReq*/
10132
10133/**
10134 @brief Process Add STA self Request function (called when Main FSM
10135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010136
10137 @param pWDICtx: pointer to the WLAN DAL context
10138 pEventData: pointer to the event information structure
10139
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 @see
10141 @return Result of the function call
10142*/
10143WDI_Status
10144WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010145(
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 WDI_ControlBlockType* pWDICtx,
10147 WDI_EventInfoType* pEventData
10148)
10149{
10150 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10151 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 wpt_uint16 usDataOffset = 0;
10154 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10157
10158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 -------------------------------------------------------------------------*/
10161 if (( NULL == pEventData ) ||
10162 ( NULL == pEventData->pEventData) ||
10163 ( NULL == pEventData->pCBfnc))
10164 {
10165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 }
10170
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10175 /*-----------------------------------------------------------------------
10176 Get message buffer
10177 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10179 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 sizeof(tAddStaSelfParams),
10181 &pSendBuffer, &usDataOffset, &usSendSize))||
10182 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10183 {
10184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10185 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10186 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 }
10190
10191 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10194
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10197
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10199 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
10201 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203
10204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10208 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10209 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010210}/*WDI_ProcessAddSTASelfReq*/
10211
10212
10213
10214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010217
10218 @param pWDICtx: pointer to the WLAN DAL context
10219 pEventData: pointer to the event information structure
10220
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 @see
10222 @return Result of the function call
10223*/
10224WDI_Status
10225WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010226(
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 WDI_ControlBlockType* pWDICtx,
10228 WDI_EventInfoType* pEventData
10229)
10230{
10231 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10232 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 wpt_uint16 usDataOffset = 0;
10235 wpt_uint16 usSendSize = 0;
10236 tDelStaSelfParams halSetDelSelfSTAParams;
10237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10238
10239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 -------------------------------------------------------------------------*/
10242 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10243 ( NULL == pEventData->pCBfnc ))
10244 {
10245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 }
10250
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10253 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10254
10255 /*-----------------------------------------------------------------------
10256 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10261 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10264 {
10265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10266 "Unable to get send buffer in Del Sta Self req %x %x %x",
10267 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010270 }
10271
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10274
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10276 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010277
10278 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
10281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10285 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 WDI_DEL_STA_SELF_RESP);
10287
10288}
10289
Jeff Johnsone7245742012-09-05 17:12:55 -070010290#ifdef FEATURE_OEM_DATA_SUPPORT
10291/**
10292 @brief Process Start Oem Data Request function (called when Main
10293 FSM allows it)
10294
10295 @param pWDICtx: pointer to the WLAN DAL context
10296 pEventData: pointer to the event information structure
10297
10298 @see
10299 @return Result of the function call
10300*/
10301WDI_Status
10302WDI_ProcessStartOemDataReq
10303(
10304 WDI_ControlBlockType* pWDICtx,
10305 WDI_EventInfoType* pEventData
10306)
10307{
10308 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10309 WDI_oemDataRspCb wdiOemDataRspCb;
10310 wpt_uint8* pSendBuffer = NULL;
10311 wpt_uint16 usDataOffset = 0;
10312 wpt_uint16 usSendSize = 0;
10313 wpt_uint16 reqLen;
10314 tStartOemDataReqParams* halStartOemDataReqParams;
10315
10316 /*-------------------------------------------------------------------------
10317 Sanity check
10318 -------------------------------------------------------------------------*/
10319 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10320 ( NULL == pEventData->pCBfnc ))
10321 {
10322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010323 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 WDI_ASSERT(0);
10325 return WDI_STATUS_E_FAILURE;
10326 }
10327
10328 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10329 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10330
10331 /*-----------------------------------------------------------------------
10332 Get message buffer
10333 -----------------------------------------------------------------------*/
10334
10335 reqLen = sizeof(tStartOemDataReqParams);
10336
10337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10338 WDI_START_OEM_DATA_REQ, reqLen,
10339 &pSendBuffer, &usDataOffset, &usSendSize))||
10340 (usSendSize < (usDataOffset + reqLen)))
10341 {
10342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10343 "Unable to get send buffer in Start Oem Data req %x %x %x",
10344 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10345 WDI_ASSERT(0);
10346 return WDI_STATUS_E_FAILURE;
10347 }
10348
10349 //copying WDI OEM DATA REQ PARAMS to shared memory
10350 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10351
10352 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10353 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10354
10355 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10356 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10357
10358 /*-------------------------------------------------------------------------
10359 Send Start Request to HAL
10360 -------------------------------------------------------------------------*/
10361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10362 wdiOemDataRspCb, pEventData->pUserData,
10363 WDI_START_OEM_DATA_RESP);
10364}/*WDI_ProcessStartOemDataReq*/
10365#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010366
10367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010370
10371 @param pWDICtx: pointer to the WLAN DAL context
10372 pEventData: pointer to the event information structure
10373
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 @see
10375 @return Result of the function call
10376*/
10377WDI_Status
10378WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010379(
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 WDI_ControlBlockType* pWDICtx,
10381 WDI_EventInfoType* pEventData
10382)
10383{
10384 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10385 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 wpt_uint16 usDataOffset = 0;
10388 wpt_uint16 usSendSize = 0;
10389 tHalWlanHostResumeReqParam halResumeReqParams;
10390
10391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10392
10393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 -------------------------------------------------------------------------*/
10396 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10397 ( NULL == pEventData->pCBfnc ))
10398 {
10399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010400 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 }
10404
10405 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10406 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10407
10408 /*-----------------------------------------------------------------------
10409 Get message buffer
10410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10413 &pSendBuffer, &usDataOffset, &usSendSize))||
10414 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10415 {
10416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 }
10422
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010425
10426 wpalMemoryCopy( pSendBuffer+usDataOffset,
10427 &halResumeReqParams,
10428 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010429
10430 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010432
10433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10437 wdiHostResumeRspCb, pEventData->pUserData,
10438 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010439}/*WDI_ProcessHostResumeReq*/
10440
10441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010444
10445 @param pWDICtx: pointer to the WLAN DAL context
10446 pEventData: pointer to the event information structure
10447
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 @see
10449 @return Result of the function call
10450*/
10451WDI_Status
10452WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010453(
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 WDI_ControlBlockType* pWDICtx,
10455 WDI_EventInfoType* pEventData
10456)
10457{
10458 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10459 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 wpt_uint16 usDataOffset = 0;
10462 wpt_uint16 usSendSize = 0;
10463 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10465
10466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 -------------------------------------------------------------------------*/
10469 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10470 ( NULL == pEventData->pCBfnc ))
10471 {
10472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010473 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 }
10477
10478 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10479 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010480
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 /*-----------------------------------------------------------------------
10482 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 sizeof(halTxPerTrackingReqParam),
10487 &pSendBuffer, &usDataOffset, &usSendSize))||
10488 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10489 {
10490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10491 "Unable to get send buffer in set tx per tracking req %x %x %x",
10492 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010496
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10498 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10499 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10500 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010501
10502 wpalMemoryCopy( pSendBuffer+usDataOffset,
10503 &halTxPerTrackingReqParam,
10504 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010505
10506 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010508
10509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10513 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010514}/*WDI_ProcessSetTxPerTrackingReq*/
10515
10516/*=========================================================================
10517 Indications
10518=========================================================================*/
10519
10520/**
10521 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010522
10523 @param pWDICtx: pointer to the WLAN DAL context
10524 pEventData: pointer to the event information structure
10525
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 @see
10527 @return Result of the function call
10528*/
10529WDI_Status
10530WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010531(
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 WDI_ControlBlockType* pWDICtx,
10533 WDI_EventInfoType* pEventData
10534)
10535{
10536 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 wpt_uint16 usDataOffset = 0;
10539 wpt_uint16 usSendSize = 0;
10540 WDI_Status wdiStatus;
10541 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10543
10544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 -------------------------------------------------------------------------*/
10547 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010550 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010553 }
10554
10555 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10556
10557 /*-----------------------------------------------------------------------
10558 Get message buffer
10559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10561 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 sizeof(halWlanSuspendIndparams),
10563 &pSendBuffer, &usDataOffset, &usSendSize))||
10564 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10565 {
10566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10567 "Unable to get send buffer in Suspend Ind ");
10568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 }
10571
10572 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10573 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10574
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010576 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010577
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10579 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010580
10581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 -------------------------------------------------------------------------*/
10584 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010586
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010588 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10589}/*WDI_ProcessHostSuspendInd*/
10590
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010591
10592
10593/**
10594 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10595
10596 @param pWDICtx: pointer to the WLAN DAL context
10597 pEventData: pointer to the event information structure
10598
10599 @see
10600 @return Result of the function call
10601*/
10602WDI_Status
10603WDI_ProcessTrafficStatsInd
10604(
10605 WDI_ControlBlockType* pWDICtx,
10606 WDI_EventInfoType* pEventData
10607)
10608{
10609 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10610 wpt_uint8* pSendBuffer = NULL;
10611 wpt_uint16 usDataOffset = 0;
10612 wpt_uint16 usSendSize = 0;
10613 WDI_Status wdiStatus;
10614 tStatsClassBIndParams* pStatsClassBIndParams;
10615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10616
10617 /*-------------------------------------------------------------------------
10618 Sanity check
10619 -------------------------------------------------------------------------*/
10620 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10621 {
10622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10623 "%s: Invalid parameters in Traffic Stats ind",__func__);
10624 WDI_ASSERT(0);
10625 return WDI_STATUS_E_FAILURE;
10626 }
10627
10628 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10629
10630 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10631 {
10632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10633 "%s: Invalid parameters in Traffic Stats ind",__func__);
10634 WDI_ASSERT(0);
10635 return WDI_STATUS_E_FAILURE;
10636 }
10637
10638 /*-----------------------------------------------------------------------
10639 Get message buffer
10640 -----------------------------------------------------------------------*/
10641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10642 WDI_TRAFFIC_STATS_IND,
10643 sizeof(tStatsClassBIndParams),
10644 &pSendBuffer, &usDataOffset, &usSendSize))||
10645 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10646 {
10647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10648 "Unable to get send buffer in Traffic Stats Ind ");
10649 WDI_ASSERT(0);
10650 return WDI_STATUS_E_FAILURE;
10651 }
10652
10653 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10654
10655 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10656
10657 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10658 pTrafficStatsIndParams->pTrafficStats,
10659 pTrafficStatsIndParams->length);
10660
10661 /*-------------------------------------------------------------------------
10662 Send Suspend Request to HAL
10663 -------------------------------------------------------------------------*/
10664 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10665 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10666
10667 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10668 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10669}/*WDI_ProcessTrafficStatsInd*/
10670
Chet Lanctota96bb432013-03-18 10:26:30 -070010671#ifdef WLAN_FEATURE_11W
10672/**
10673 @brief Process Exclude Unencrypted Indications function (called
10674 when Main FSM allows it)
10675
10676 @param pWDICtx: pointer to the WLAN DAL context
10677 pEventData: pointer to the event information structure
10678
10679 @see
10680 @return Result of the function call
10681*/
10682WDI_Status
10683WDI_ProcessExcludeUnencryptInd
10684(
10685 WDI_ControlBlockType* pWDICtx,
10686 WDI_EventInfoType* pEventData
10687)
10688{
10689 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10690 wpt_uint8* pSendBuffer = NULL;
10691 wpt_uint16 usDataOffset = 0;
10692 wpt_uint16 usSendSize = 0;
10693 WDI_Status wdiStatus;
10694 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10696
10697 /*-------------------------------------------------------------------------
10698 Sanity check
10699 -------------------------------------------------------------------------*/
10700 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10701 {
10702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10703 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10704 WDI_ASSERT(0);
10705 return WDI_STATUS_E_FAILURE;
10706 }
10707
10708 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10709
10710 /*-----------------------------------------------------------------------
10711 Get message buffer
10712 -----------------------------------------------------------------------*/
10713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10714 WDI_EXCLUDE_UNENCRYPTED_IND,
10715 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10716 &pSendBuffer, &usDataOffset, &usSendSize))||
10717 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10718 {
10719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10720 "Unable to get send buffer in Exclude Unencrypted Ind ");
10721 WDI_ASSERT(0);
10722 return WDI_STATUS_E_FAILURE;
10723 }
10724
10725 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10726
10727 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10728
10729 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10730 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10731
10732 /*-------------------------------------------------------------------------
10733 Send Suspend Request to HAL
10734 -------------------------------------------------------------------------*/
10735 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10736 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10737
10738 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10739 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10740}/*WDI_ProcessExcludeUnencryptInd*/
10741#endif
10742
Jeff Johnson295189b2012-06-20 16:38:30 -070010743/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010745==========================================================================*/
10746/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010749
10750 @param pWDICtx: pointer to the WLAN DAL context
10751 pEventData: pointer to the event information structure
10752
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 @see
10754 @return Result of the function call
10755*/
10756WDI_Status
10757WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010758(
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 WDI_ControlBlockType* pWDICtx,
10760 WDI_EventInfoType* pEventData
10761)
10762{
10763 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10764 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 wpt_uint16 usDataOffset = 0;
10767 wpt_uint16 usSendSize = 0;
10768 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10770
10771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 -------------------------------------------------------------------------*/
10774 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10775 ( NULL == pEventData->pCBfnc ))
10776 {
10777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 }
10782
10783 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10784 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10785 /*-----------------------------------------------------------------------
10786 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 sizeof(halSwitchChannelReq.switchChannelParams),
10791 &pSendBuffer, &usDataOffset, &usSendSize))||
10792 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10795 "Unable to get send buffer in channel switch req %x %x %x",
10796 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 }
10800
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010803#ifndef WLAN_FEATURE_VOWIFI
10804 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10806#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10809
10810#ifdef WLAN_FEATURE_VOWIFI
10811 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10814 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10815 WDI_MAC_ADDR_LEN);
10816 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10817 pwdiSwitchChParams->wdiChInfo.macBSSId,
10818 WDI_MAC_ADDR_LEN);
10819#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 wpalMemoryCopy( pSendBuffer+usDataOffset,
10821 &halSwitchChannelReq.switchChannelParams,
10822 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010823
10824 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010826
10827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10831 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010832}/*WDI_ProcessChannelSwitchReq*/
10833
10834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010837
10838 @param pWDICtx: pointer to the WLAN DAL context
10839 pEventData: pointer to the event information structure
10840
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 @see
10842 @return Result of the function call
10843*/
10844WDI_Status
10845WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010846(
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 WDI_ControlBlockType* pWDICtx,
10848 WDI_EventInfoType* pEventData
10849)
10850{
10851 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10852 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 wpt_uint16 usDataOffset = 0;
10857 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010859
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 tConfigStaReqMsg halConfigStaReqMsg;
10861 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10863
10864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 -------------------------------------------------------------------------*/
10867 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10868 ( NULL == pEventData->pCBfnc ))
10869 {
10870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 }
10875
10876 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10877 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10878 /*-------------------------------------------------------------------------
10879 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 -------------------------------------------------------------------------*/
10882 wpalMutexAcquire(&pWDICtx->wptMutex);
10883
10884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10888 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10889 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10894 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10895 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010896
10897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 }
10900
10901 /*------------------------------------------------------------------------
10902 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 ------------------------------------------------------------------------*/
10905 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10906 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10908 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10909 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010910
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
10916 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010917
10918 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10919#ifdef WLAN_FEATURE_11AC
10920 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010921 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 else
10923#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010924 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010925
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 /*-----------------------------------------------------------------------
10927 Get message buffer
10928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10930 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 {
10934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10935 "Unable to get send buffer in config sta req %x %x %x",
10936 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 }
10940
10941 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 &pwdiConfigSTAParams->wdiReqInfo);
10944
10945 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10946 {
10947 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 WDI_STATableFindStaidByAddr(pWDICtx,
10950 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 {
10953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10954 "This station does not exist in the WDI Station Table %d");
10955 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010956 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 }
10959 }
10960 else
10961 {
10962 /* Need to fill in the STA Index to invalid, since at this point we have not
10963 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070010964 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 }
10966
10967 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010969
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 wpalMemoryCopy( pSendBuffer+usDataOffset,
10971 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010972 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010973
10974 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010976
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10978 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 sizeof(pWDICtx->wdiCachedConfigStaReq));
10980
10981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10985 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010986}/*WDI_ProcessConfigStaReq*/
10987
10988
10989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010992
10993 @param pWDICtx: pointer to the WLAN DAL context
10994 pEventData: pointer to the event information structure
10995
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 @see
10997 @return Result of the function call
10998*/
10999WDI_Status
11000WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011001(
Jeff Johnson295189b2012-06-20 16:38:30 -070011002 WDI_ControlBlockType* pWDICtx,
11003 WDI_EventInfoType* pEventData
11004)
11005{
11006 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11007 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 wpt_uint16 usDataOffset = 0;
11012 wpt_uint16 usSendSize = 0;
11013 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11016
11017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 -------------------------------------------------------------------------*/
11020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11021 ( NULL == pEventData->pCBfnc ))
11022 {
11023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 }
11028
11029 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11030 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11031 /*-------------------------------------------------------------------------
11032 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 -------------------------------------------------------------------------*/
11035 wpalMutexAcquire(&pWDICtx->wptMutex);
11036
11037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11041 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11042 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011043
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011047 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11048 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 }
11050 else
11051 {
11052 /*------------------------------------------------------------------------
11053 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 ------------------------------------------------------------------------*/
11056 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11057 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11059 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11060 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11061
11062 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 }
11066 }
11067 /* If the link is set to enter IDLE - the Session allocated for this BSS
11068 will be deleted on the Set Link State response coming from HAL
11069 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11072
11073 wpalMutexRelease(&pWDICtx->wptMutex);
11074 /*-----------------------------------------------------------------------
11075 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011078
11079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 sizeof(halLinkStateReqMsg),
11081 &pSendBuffer, &usDataOffset, &usSendSize))||
11082 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11083 {
11084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11085 "Unable to get send buffer in set bss key req %x %x %x",
11086 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 }
11090
11091 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11092 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11093
11094 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11095 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11096
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011098 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11099
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 wpalMemoryCopy( pSendBuffer+usDataOffset,
11101 &halLinkStateReqMsg,
11102 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011103
11104 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011105 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011106
11107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011108 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11111 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011112}/*WDI_ProcessSetLinkStateReq*/
11113
11114
11115/**
11116 @brief Process Get Stats Request function (called when Main FSM
11117 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011118
11119 @param pWDICtx: pointer to the WLAN DAL context
11120 pEventData: pointer to the event information structure
11121
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 @see
11123 @return Result of the function call
11124*/
11125WDI_Status
11126WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011127(
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 WDI_ControlBlockType* pWDICtx,
11129 WDI_EventInfoType* pEventData
11130)
11131{
11132 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11133 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 wpt_uint16 usDataOffset = 0;
11136 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 WDI_BSSSessionType* pBSSSes = NULL;
11139 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 tHalStatsReqMsg halStatsReqMsg;
11142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11143
11144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 -------------------------------------------------------------------------*/
11147 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11148 ( NULL == pEventData->pCBfnc ) )
11149 {
11150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 }
11155
11156 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11157 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11158
11159 /*-------------------------------------------------------------------------
11160 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 -------------------------------------------------------------------------*/
11163 wpalMutexAcquire(&pWDICtx->wptMutex);
11164
11165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11169 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 &macBSSID))
11171 {
11172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11173 "This station does not exist in the WDI Station Table %d");
11174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 }
11177
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11179 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11182 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11183 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011184
11185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 }
11188
11189 /*------------------------------------------------------------------------
11190 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 ------------------------------------------------------------------------*/
11193 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11194 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11196 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11197 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011198
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 }
11203
11204
11205 wpalMutexRelease(&pWDICtx->wptMutex);
11206
11207 /*-----------------------------------------------------------------------
11208 Get message buffer
11209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 sizeof(halStatsReqMsg.statsReqParams),
11212 &pSendBuffer, &usDataOffset, &usSendSize))||
11213 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11214 {
11215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11216 "Unable to get send buffer in set bss key req %x %x %x",
11217 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 }
11221
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 wpalMemoryCopy( pSendBuffer+usDataOffset,
11227 &halStatsReqMsg.statsReqParams,
11228 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011229
11230 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232
11233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11237 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011238}/*WDI_ProcessGetStatsReq*/
11239
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011240#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11241/**
11242 @brief Process Get Roam Rssi Request function (called when Main FSM
11243 allows it)
11244
11245 @param pWDICtx: pointer to the WLAN DAL context
11246 pEventData: pointer to the event information structure
11247
11248 @see
11249 @return Result of the function call
11250*/
11251WDI_Status
11252WDI_ProcessGetRoamRssiReq
11253(
11254 WDI_ControlBlockType* pWDICtx,
11255 WDI_EventInfoType* pEventData
11256)
11257{
11258 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11259 WDI_GetStatsRspCb wdiGetStatsRspCb;
11260 wpt_uint8* pSendBuffer = NULL;
11261 wpt_uint16 usDataOffset = 0;
11262 wpt_uint16 usSendSize = 0;
11263 wpt_uint8 ucCurrentBSSSesIdx = 0;
11264 WDI_BSSSessionType* pBSSSes = NULL;
11265 wpt_macAddr macBSSID;
11266 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11267 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11269 /*-------------------------------------------------------------------------
11270 Sanity check
11271 -------------------------------------------------------------------------*/
11272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11273 ( NULL == pEventData->pCBfnc ) )
11274 {
11275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11276 "%s: Invalid parameters", __func__);
11277 WDI_ASSERT(0);
11278 return WDI_STATUS_E_FAILURE;
11279 }
11280
11281 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11282 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11283
11284 /*-------------------------------------------------------------------------
11285 Check to see if we are in the middle of an association, if so queue, if
11286 not it means it is free to process request
11287 -------------------------------------------------------------------------*/
11288 wpalMutexAcquire(&pWDICtx->wptMutex);
11289
11290 /*------------------------------------------------------------------------
11291 Find the BSS for which the request is made
11292 ------------------------------------------------------------------------*/
11293 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11294 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11295 &macBSSID))
11296 {
11297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11298 "This station does not exist in the WDI Station Table %d");
11299 wpalMutexRelease(&pWDICtx->wptMutex);
11300 return WDI_STATUS_E_FAILURE;
11301 }
11302
11303 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11304 if ( NULL == pBSSSes )
11305 {
11306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11307 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11308 __func__, MAC_ADDR_ARRAY(macBSSID));
11309
11310 wpalMutexRelease(&pWDICtx->wptMutex);
11311 return WDI_STATUS_E_NOT_ALLOWED;
11312 }
11313
11314 /*------------------------------------------------------------------------
11315 Check if this BSS is being currently processed or queued,
11316 if queued - queue the new request as well
11317 ------------------------------------------------------------------------*/
11318 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11321 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11322 __func__, MAC_ADDR_ARRAY(macBSSID));
11323
11324 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11325 wpalMutexRelease(&pWDICtx->wptMutex);
11326 return wdiStatus;
11327 }
11328
11329 wpalMutexRelease(&pWDICtx->wptMutex);
11330
11331 /*-----------------------------------------------------------------------
11332 Get message buffer
11333 -----------------------------------------------------------------------*/
11334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11335 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11336 &pSendBuffer, &usDataOffset, &usSendSize))||
11337 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11338 {
11339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11340 "Unable to get send buffer in set bss key req %x %x %x",
11341 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11342 WDI_ASSERT(0);
11343 return WDI_STATUS_E_FAILURE;
11344 }
11345
11346 halRssiRoamReqMsg.roamRssiReqParams.staId =
11347 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11348 wpalMemoryCopy( pSendBuffer+usDataOffset,
11349 &halRssiRoamReqMsg.roamRssiReqParams,
11350 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11351
11352 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11353 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11354
11355 /*-------------------------------------------------------------------------
11356 Send Get STA Request to HAL
11357 -------------------------------------------------------------------------*/
11358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11359 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11360}/*WDI_ProcessGetRoamRssiReq*/
11361#endif
11362
Jeff Johnson295189b2012-06-20 16:38:30 -070011363/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011364 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011366
11367 @param pWDICtx: pointer to the WLAN DAL context
11368 pEventData: pointer to the event information structure
11369
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 @see
11371 @return Result of the function call
11372*/
11373WDI_Status
11374WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011375(
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 WDI_ControlBlockType* pWDICtx,
11377 WDI_EventInfoType* pEventData
11378)
11379{
11380 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11381 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11382
Jeff Johnsone7245742012-09-05 17:12:55 -070011383 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 wpt_uint16 usDataOffset = 0;
11385 wpt_uint16 usSendSize = 0;
11386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11387
11388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 -------------------------------------------------------------------------*/
11391 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11392 ( NULL == pEventData->pCBfnc))
11393 {
11394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 }
11399
11400 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11401 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11402
11403 /*-----------------------------------------------------------------------
11404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 -----------------------------------------------------------------------*/
11407
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011409 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11410 &pSendBuffer, &usDataOffset, &usSendSize))||
11411 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11412 {
11413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11414 "Unable to get send buffer in set bss key req %x %x %x",
11415 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011418 }
11419
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 wpalMemoryCopy( pSendBuffer+usDataOffset,
11421 &pwdiUpdateCfgParams->uConfigBufferLen,
11422 sizeof(wpt_uint32));
11423 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11424 pwdiUpdateCfgParams->pConfigBuffer,
11425 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011426
11427 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011429
11430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011432 -------------------------------------------------------------------------*/
11433
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11435 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011436
11437}/*WDI_ProcessUpdateCfgReq*/
11438
11439
11440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011443
11444 @param pWDICtx: pointer to the WLAN DAL context
11445 pEventData: pointer to the event information structure
11446
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 @see
11448 @return Result of the function call
11449*/
11450WDI_Status
11451WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011452(
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 WDI_ControlBlockType* pWDICtx,
11454 WDI_EventInfoType* pEventData
11455)
11456{
11457 WDI_AddBAReqParamsType* pwdiAddBAParams;
11458 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 wpt_uint16 usDataOffset = 0;
11463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 wpt_macAddr macBSSID;
11466
11467 tAddBAReqMsg halAddBAReq;
11468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11469
11470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 -------------------------------------------------------------------------*/
11473 if (( NULL == pEventData ) ||
11474 ( NULL == pEventData->pEventData) ||
11475 ( NULL == pEventData->pCBfnc ))
11476 {
11477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 }
11482
11483 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11484 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11485
11486 /*-------------------------------------------------------------------------
11487 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 -------------------------------------------------------------------------*/
11490 wpalMutexAcquire(&pWDICtx->wptMutex);
11491
11492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11496 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 &macBSSID))
11498 {
11499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11500 "This station does not exist in the WDI Station Table %d");
11501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 }
11504
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11506 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11509 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11510 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011511
11512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 }
11515
11516 /*------------------------------------------------------------------------
11517 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 ------------------------------------------------------------------------*/
11520 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11521 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11523 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11524 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011525
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 }
11530
11531
11532 wpalMutexRelease(&pWDICtx->wptMutex);
11533 /*-----------------------------------------------------------------------
11534 Get message buffer
11535 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011536 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 sizeof(halAddBAReq.addBAParams),
11538 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11541 {
11542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11543 "Unable to get send buffer in Add BA req %x %x %x",
11544 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 }
11548
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11551 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11552#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11555#endif
11556
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 wpalMemoryCopy( pSendBuffer+usDataOffset,
11558 &halAddBAReq.addBAParams,
11559 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011560
11561 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011563
11564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11568 wdiAddBARspCb, pEventData->pUserData,
11569 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011570}/*WDI_ProcessAddBAReq*/
11571
11572
11573
11574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011577
11578 @param pWDICtx: pointer to the WLAN DAL context
11579 pEventData: pointer to the event information structure
11580
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 @see
11582 @return Result of the function call
11583*/
11584WDI_Status
11585WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011586(
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 WDI_ControlBlockType* pWDICtx,
11588 WDI_EventInfoType* pEventData
11589)
11590{
11591 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11592 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 wpt_uint16 usDataOffset = 0;
11597 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 wpt_uint16 index;
11600 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011601
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 tTriggerBAReqMsg halTriggerBAReq;
11603 tTriggerBaReqCandidate* halTriggerBACandidate;
11604 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11606
11607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 -------------------------------------------------------------------------*/
11610 if (( NULL == pEventData ) ||
11611 ( NULL == pEventData->pEventData ) ||
11612 ( NULL == pEventData->pCBfnc ))
11613 {
11614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 }
11619
11620 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11621 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11622 /*-------------------------------------------------------------------------
11623 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 -------------------------------------------------------------------------*/
11626 wpalMutexAcquire(&pWDICtx->wptMutex);
11627
11628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11632 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 &macBSSID))
11634 {
11635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11636 "This station does not exist in the WDI Station Table %d");
11637 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 }
11640
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11642 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11645 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11646 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011647
11648 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 }
11651
11652 /*------------------------------------------------------------------------
11653 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 ------------------------------------------------------------------------*/
11656 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11659 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11660 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011661
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 }
11666
11667
11668 wpalMutexRelease(&pWDICtx->wptMutex);
11669 /*-----------------------------------------------------------------------
11670 Get message buffer
11671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11673 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11677 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11682 {
11683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11684 "Unable to get send buffer in Trigger BA req %x %x %x",
11685 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 }
11689
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011691 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11694
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 wpalMemoryCopy( pSendBuffer+usDataOffset,
11696 &halTriggerBAReq.triggerBAParams,
11697 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011698
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11701 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11702 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011703
11704 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 index++)
11706 {
11707 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11708 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11709 halTriggerBACandidate++;
11710 wdiTriggerBACandidate++;
11711 }
11712
11713 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011715
11716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11720 wdiTriggerBARspCb, pEventData->pUserData,
11721 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011722}/*WDI_ProcessTriggerBAReq*/
11723
11724
11725
11726/**
11727 @brief Process Update Beacon Params Request function (called when Main FSM
11728 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011729
11730 @param pWDICtx: pointer to the WLAN DAL context
11731 pEventData: pointer to the event information structure
11732
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 @see
11734 @return Result of the function call
11735*/
11736WDI_Status
11737WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011738(
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 WDI_ControlBlockType* pWDICtx,
11740 WDI_EventInfoType* pEventData
11741)
11742{
11743 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11744 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 wpt_uint16 usDataOffset = 0;
11747 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11750
11751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011753 -------------------------------------------------------------------------*/
11754 if (( NULL == pEventData ) ||
11755 ( NULL == pEventData->pEventData) ||
11756 ( NULL == pEventData->pCBfnc))
11757 {
11758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 }
11763
11764 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11765 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11766 /*-----------------------------------------------------------------------
11767 Get message buffer
11768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 sizeof(halUpdateBeaconParams),
11771 &pSendBuffer, &usDataOffset, &usSendSize))||
11772 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11773 {
11774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11775 "Unable to get send buffer in set bss key req %x %x %x",
11776 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 }
11780
11781 /*BSS Index of the BSS*/
11782 halUpdateBeaconParams.bssIdx =
11783 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11784 /*shortPreamble mode. HAL should update all the STA rates when it
11785 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11788 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11791 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11794
11795 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11808 halUpdateBeaconParams.fRIFSMode =
11809 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011810 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11812
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11814 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011815
11816 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011818
11819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11823 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011824}/*WDI_ProcessUpdateBeaconParamsReq*/
11825
11826
11827
11828/**
11829 @brief Process Send Beacon template Request function (called when Main FSM
11830 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011831
11832 @param pWDICtx: pointer to the WLAN DAL context
11833 pEventData: pointer to the event information structure
11834
Jeff Johnson295189b2012-06-20 16:38:30 -070011835 @see
11836 @return Result of the function call
11837*/
11838WDI_Status
11839WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011840(
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 WDI_ControlBlockType* pWDICtx,
11842 WDI_EventInfoType* pEventData
11843)
11844{
11845 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11846 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 wpt_uint16 usDataOffset = 0;
11849 wpt_uint16 usSendSize = 0;
11850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11851
11852 tSendBeaconReqMsg halSendBeaconReq;
11853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 -------------------------------------------------------------------------*/
11856 if (( NULL == pEventData ) ||
11857 ( NULL == pEventData->pEventData ) ||
11858 ( NULL == pEventData->pCBfnc ))
11859 {
11860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 }
11865
11866 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11867 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11868 /*-----------------------------------------------------------------------
11869 Get message buffer
11870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 sizeof(halSendBeaconReq.sendBeaconParam),
11873 &pSendBuffer, &usDataOffset, &usSendSize))||
11874 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11875 {
11876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11877 "Unable to get send buffer in send beacon req %x %x %x",
11878 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 }
11882
11883 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11884 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11885 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11888 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11889 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11890 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011893 /* usP2PIeOffset should be atleast greater than timIeOffset */
11894 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11895 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11896 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11897 {
11898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11899 "Invalid usP2PIeOffset %hu",
11900 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11901 WDI_ASSERT(0);
11902 return WDI_STATUS_E_FAILURE;
11903 }
11904
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011906 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011907
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 wpalMemoryCopy( pSendBuffer+usDataOffset,
11909 &halSendBeaconReq.sendBeaconParam,
11910 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011911
11912 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914
11915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11919 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011920}/*WDI_ProcessSendBeaconParamsReq*/
11921
11922/**
11923 @brief Process Update Beacon Params Request function (called when Main FSM
11924 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011925
11926 @param pWDICtx: pointer to the WLAN DAL context
11927 pEventData: pointer to the event information structure
11928
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 @see
11930 @return Result of the function call
11931*/
11932WDI_Status
11933WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011934(
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 WDI_ControlBlockType* pWDICtx,
11936 WDI_EventInfoType* pEventData
11937)
11938{
11939 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11940 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 wpt_uint16 usDataOffset = 0;
11943 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11946
11947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 -------------------------------------------------------------------------*/
11950 if (( NULL == pEventData ) ||
11951 ( NULL == pEventData->pEventData) ||
11952 ( NULL == pEventData->pCBfnc))
11953 {
11954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 }
11959
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11964 /*-----------------------------------------------------------------------
11965 Get message buffer
11966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 sizeof(halUpdateProbeRspTmplParams),
11969 &pSendBuffer, &usDataOffset, &usSendSize))||
11970 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11971 {
11972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11973 "Unable to get send buffer in set bss key req %x %x %x",
11974 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 }
11978
11979 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 WDI_MAC_ADDR_LEN);
11982
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11985
11986 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11987 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011989
11990
11991 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11992 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11993 WDI_PROBE_REQ_BITMAP_IE_LEN);
11994
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 wpalMemoryCopy( pSendBuffer+usDataOffset,
11996 &halUpdateProbeRspTmplParams,
11997 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011998
11999 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012001
12002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12006 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12007 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012008}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12009
12010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012013
12014 @param pWDICtx: pointer to the WLAN DAL context
12015 pEventData: pointer to the event information structure
12016
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 @see
12018 @return Result of the function call
12019*/
12020WDI_Status
12021WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012022(
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 WDI_ControlBlockType* pWDICtx,
12024 WDI_EventInfoType* pEventData
12025)
12026{
12027
12028 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12029 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12030
12031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 -------------------------------------------------------------------------*/
12034 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12039 {
12040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012041 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 }
12045
12046 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12049
12050 /*cache the wdi nv request message here if the the first fragment
12051 * To issue the request to HAL for the next fragment */
12052 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12053 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12055 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12057
12058 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12059 pWDICtx->pRspCBUserData = pEventData->pUserData;
12060 }
12061
12062 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12063}
12064
12065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012068
12069 @param pWDICtx: pointer to the WLAN DAL context
12070 pEventData: pointer to the event information structure
12071
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 @see
12073 @return Result of the function call
12074*/
12075WDI_Status WDI_ProcessSetMaxTxPowerReq
12076(
12077 WDI_ControlBlockType* pWDICtx,
12078 WDI_EventInfoType* pEventData
12079)
12080{
12081 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12082 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 wpt_uint16 usDataOffset = 0;
12085 wpt_uint16 usSendSize = 0;
12086 tSetMaxTxPwrReq halSetMaxTxPower;
12087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12088
12089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 -------------------------------------------------------------------------*/
12092 if (( NULL == pEventData ) ||
12093 ( NULL == pEventData->pEventData ) ||
12094 ( NULL == pEventData->pCBfnc ))
12095 {
12096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12105
12106 /*-----------------------------------------------------------------------
12107 Get message buffer
12108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012109if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12111 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012113)))
12114 {
12115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12116 "Unable to get Set Max Tx Power req %x %x %x",
12117 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 }
12121
12122 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12123 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12124 WDI_MAC_ADDR_LEN);
12125
12126 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12127 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12128 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012131
12132 wpalMemoryCopy( pSendBuffer+usDataOffset,
12133 &halSetMaxTxPower.setMaxTxPwrParams,
12134 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012135
12136 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138
12139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12143 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12144 WDI_SET_MAX_TX_POWER_RESP);
12145
Jeff Johnson295189b2012-06-20 16:38:30 -070012146}
12147
schangd82195a2013-03-13 18:41:24 -070012148/**
12149 @brief Process Set Tx Power Request function (called when Main
12150 FSM allows it)
12151
12152 @param pWDICtx: pointer to the WLAN DAL context
12153 pEventData: pointer to the event information structure
12154
12155 @see
12156 @return Result of the function call
12157*/
12158WDI_Status WDI_ProcessSetTxPowerReq
12159(
12160 WDI_ControlBlockType* pWDICtx,
12161 WDI_EventInfoType* pEventData
12162)
12163{
12164 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12165 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12166 wpt_uint8* pSendBuffer = NULL;
12167 wpt_uint16 usDataOffset = 0;
12168 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012169 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12171
12172 /*-------------------------------------------------------------------------
12173 Sanity check
12174 -------------------------------------------------------------------------*/
12175 if (( NULL == pEventData ) ||
12176 ( NULL == pEventData->pEventData ) ||
12177 ( NULL == pEventData->pCBfnc ))
12178 {
12179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12180 "%s: Invalid parameters", __func__);
12181 WDI_ASSERT(0);
12182 return WDI_STATUS_E_FAILURE;
12183 }
12184
12185 pwdiSetTxPowerParams =
12186 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12187 wdiSetTxPowerRspCb =
12188 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12189
12190 /*-----------------------------------------------------------------------
12191 Get message buffer
12192 -----------------------------------------------------------------------*/
12193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12194 sizeof(tSetTxPwrReqParams),
12195 &pSendBuffer, &usDataOffset, &usSendSize))||
12196 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12197 )))
12198 {
12199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12200 "Unable to get Set Max Tx Power req %x %x %x",
12201 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12202 WDI_ASSERT(0);
12203 return WDI_STATUS_E_FAILURE;
12204 }
12205
Leo Changa37e2a92013-03-25 17:39:58 -070012206 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12207 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12208 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012209
12210 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12211 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12212
12213 /*-------------------------------------------------------------------------
12214 Send Set Tx Power Request to HAL
12215 -------------------------------------------------------------------------*/
12216 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12217 wdiSetTxPowerRspCb, pEventData->pUserData,
12218 WDI_SET_TX_POWER_RESP);
12219}
Jeff Johnson295189b2012-06-20 16:38:30 -070012220
12221/**
12222 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12223 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012224
12225 @param pWDICtx: pointer to the WLAN DAL context
12226 pEventData: pointer to the event information structure
12227
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 @see
12229 @return Result of the function call
12230*/
12231WDI_Status
12232WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012233(
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 WDI_ControlBlockType* pWDICtx,
12235 WDI_EventInfoType* pEventData
12236)
12237{
12238 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12239 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 wpt_uint16 usDataOffset = 0;
12242 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12245
12246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 -------------------------------------------------------------------------*/
12249 if (( NULL == pEventData ) ||
12250 ( NULL == pEventData->pEventData) ||
12251 ( NULL == pEventData->pCBfnc))
12252 {
12253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 }
12258
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012261 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12263 /*-----------------------------------------------------------------------
12264 Get message buffer
12265 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12267 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 sizeof(halSetP2PGONOAParams),
12269 &pSendBuffer, &usDataOffset, &usSendSize))||
12270 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12271 {
12272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12273 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12274 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 }
12278
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12283 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12292
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 wpalMemoryCopy( pSendBuffer+usDataOffset,
12294 &halSetP2PGONOAParams,
12295 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012296
12297 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299
12300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12304 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12305 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012306}/*WDI_ProcessP2PGONOAReq*/
12307
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012308#ifdef FEATURE_WLAN_TDLS
12309
12310/**
12311 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12312 allows it)
12313
12314 @param pWDICtx: pointer to the WLAN DAL context
12315 pEventData: pointer to the event information structure
12316
12317 @see
12318 @return Result of the function call
12319*/
12320WDI_Status
12321WDI_ProcessTdlsLinkEstablishReq
12322(
12323 WDI_ControlBlockType* pWDICtx,
12324 WDI_EventInfoType* pEventData
12325)
12326{
12327 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12328 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12329 wpt_uint8* pSendBuffer = NULL;
12330 wpt_uint16 usDataOffset = 0;
12331 wpt_uint16 usSendSize = 0;
12332
12333 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12335
12336 /*-------------------------------------------------------------------------
12337 Sanity check
12338 -------------------------------------------------------------------------*/
12339 if (( NULL == pEventData ) ||
12340 ( NULL == pEventData->pEventData) ||
12341 ( NULL == pEventData->pCBfnc))
12342 {
12343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12344 "%s: Invalid parameters", __func__);
12345 WDI_ASSERT(0);
12346 return WDI_STATUS_E_FAILURE;
12347 }
12348 pwdiTDLSLinkEstablishReqParams =
12349 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12350 wdiTDLSLinkEstablishReqRspCb =
12351 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12352
12353
12354 /*-----------------------------------------------------------------------
12355 Get message buffer
12356 -----------------------------------------------------------------------*/
12357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12358 WDI_TDLS_LINK_ESTABLISH_REQ,
12359 sizeof(halSetTDLSLinkEstablishParams),
12360 &pSendBuffer, &usDataOffset, &usSendSize))||
12361 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12362 {
12363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12364 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12365 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12366 WDI_ASSERT(0);
12367 return WDI_STATUS_E_FAILURE;
12368 }
12369
12370 halSetTDLSLinkEstablishParams.staIdx =
12371 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12372 halSetTDLSLinkEstablishParams.bIsResponder =
12373 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12374 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12375 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12376 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12377 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12378 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12379 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12380 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12381 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12382 halSetTDLSLinkEstablishParams.aAck = 0;
12383 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12384 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12385 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12386
12387 wpalMemoryCopy( pSendBuffer+usDataOffset,
12388 &halSetTDLSLinkEstablishParams,
12389 sizeof(halSetTDLSLinkEstablishParams));
12390
12391 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12392 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12393
12394 /*-------------------------------------------------------------------------
12395 Send Update Probe Resp Template Request to HAL
12396 -------------------------------------------------------------------------*/
12397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12398 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12399 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12400 return 0;
12401}/*WDI_ProcessTdlsLinkEstablishReq*/
12402
12403
12404#endif
12405
Jeff Johnson295189b2012-06-20 16:38:30 -070012406
12407
12408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 @param None
12412
12413 @see
12414 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012415*/
12416void
12417WDI_SetPowerStateCb
12418(
12419 wpt_status status,
12420 unsigned int dxePhyAddr,
12421 void *pContext
12422)
12423{
12424 wpt_status wptStatus;
12425 WDI_ControlBlockType *pCB = NULL;
12426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12427 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12428 {
12429 //it shouldn't happen, put an error msg
12430 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 /*
12432 * Trigger the event to bring the Enter BMPS req function to come
12433 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012434*/
12435 if( NULL != pContext )
12436 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 }
12439 else
12440 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 pCB = &gWDICb;
12443 }
12444 pCB->dxePhyAddr = dxePhyAddr;
12445 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12446 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12447 {
12448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12449 "Failed to set an event");
12450
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 }
12453 return;
12454}
12455
12456
12457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012460
12461 @param pWDICtx: pointer to the WLAN DAL context
12462 pEventData: pointer to the event information structure
12463
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 @see
12465 @return Result of the function call
12466*/
12467WDI_Status
12468WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012469(
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 WDI_ControlBlockType* pWDICtx,
12471 WDI_EventInfoType* pEventData
12472)
12473{
Jeff Johnson43971f52012-07-17 12:26:56 -070012474 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 wpt_uint16 usDataOffset = 0;
12478 wpt_uint16 usSendSize = 0;
12479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12480
12481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 -------------------------------------------------------------------------*/
12484 if (( NULL == pEventData ) ||
12485 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12486 {
12487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012490 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
12493 /*-----------------------------------------------------------------------
12494 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 0,
12499 &pSendBuffer, &usDataOffset, &usSendSize))||
12500 ( usSendSize < (usDataOffset )))
12501 {
12502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12503 "Unable to get send buffer in Enter IMPS req %x %x",
12504 pEventData, wdiEnterImpsRspCb);
12505 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012506 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 }
12508
12509 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012510 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12511 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 {
12513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12514 "WDI Init failed to reset an event");
12515
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012517 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 }
12519
12520 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012521 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12522 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12524 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12525 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012526 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012527 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
12529 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012532 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12533 WDI_SET_POWER_STATE_TIMEOUT);
12534 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 {
12536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12537 "WDI Init failed to wait on an event");
12538
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012540 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 }
12542
12543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12547 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012548
12549fail:
12550 // Release the message buffer so we don't leak
12551 wpalMemoryFree(pSendBuffer);
12552
12553failRequest:
12554 //WDA should have failure check to avoid the memory leak
12555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012556}/*WDI_ProcessEnterImpsReq*/
12557
12558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012561
12562 @param pWDICtx: pointer to the WLAN DAL context
12563 pEventData: pointer to the event information structure
12564
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 @see
12566 @return Result of the function call
12567*/
12568WDI_Status
12569WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012570(
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 WDI_ControlBlockType* pWDICtx,
12572 WDI_EventInfoType* pEventData
12573)
12574{
12575 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 wpt_uint16 usDataOffset = 0;
12578 wpt_uint16 usSendSize = 0;
12579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12580
12581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 -------------------------------------------------------------------------*/
12584 if (( NULL == pEventData ) ||
12585 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12586 {
12587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 }
12592
12593 /*-----------------------------------------------------------------------
12594 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 0,
12599 &pSendBuffer, &usDataOffset, &usSendSize))||
12600 ( usSendSize < (usDataOffset )))
12601 {
12602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12603 "Unable to get send buffer in Exit IMPS req %x %x",
12604 pEventData, wdiExitImpsRspCb);
12605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 }
12608
12609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12613 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012614}/*WDI_ProcessExitImpsReq*/
12615
12616/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012619
12620 @param pWDICtx: pointer to the WLAN DAL context
12621 pEventData: pointer to the event information structure
12622
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 @see
12624 @return Result of the function call
12625*/
12626WDI_Status
12627WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012628(
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 WDI_ControlBlockType* pWDICtx,
12630 WDI_EventInfoType* pEventData
12631)
12632{
12633 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12634 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 wpt_uint16 usDataOffset = 0;
12637 wpt_uint16 usSendSize = 0;
12638 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012639 wpt_status wptStatus;
12640
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12642
12643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 -------------------------------------------------------------------------*/
12646 if (( NULL == pEventData ) ||
12647 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12648 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12649 {
12650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012653 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 }
12655
12656 /*-----------------------------------------------------------------------
12657 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 sizeof(enterBmpsReq),
12662 &pSendBuffer, &usDataOffset, &usSendSize))||
12663 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12664 {
12665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12666 "Unable to get send buffer in Enter BMPS req %x %x %x",
12667 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12668 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012669 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 }
12671
12672 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012673 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12674 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 {
12676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12677 "WDI Init failed to reset an event");
12678
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012680 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 }
12682
12683 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012684 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12685 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12686 {
12687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12688 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12689 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012690 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012691 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012692
12693/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012696 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12697 WDI_SET_POWER_STATE_TIMEOUT);
12698 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 {
12700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12701 "WDI Init failed to wait on an event");
12702
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012704 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 }
12706
12707 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12708
12709 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12710 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12711 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12712 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12713
12714 // For CCX and 11R Roaming
12715 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12716 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12717 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12718
12719 wpalMemoryCopy( pSendBuffer+usDataOffset,
12720 &enterBmpsReq,
12721 sizeof(enterBmpsReq));
12722
12723 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012725
12726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12730 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012731
12732fail:
12733 // Release the message buffer so we don't leak
12734 wpalMemoryFree(pSendBuffer);
12735
12736failRequest:
12737 //WDA should have failure check to avoid the memory leak
12738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012739}/*WDI_ProcessEnterBmpsReq*/
12740
12741/**
12742 @brief Process Exit BMPS Request function (called when Main FSM
12743 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012744
12745 @param pWDICtx: pointer to the WLAN DAL context
12746 pEventData: pointer to the event information structure
12747
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 @see
12749 @return Result of the function call
12750*/
12751WDI_Status
12752WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012753(
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 WDI_ControlBlockType* pWDICtx,
12755 WDI_EventInfoType* pEventData
12756)
12757{
12758 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12759 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 wpt_uint16 usDataOffset = 0;
12762 wpt_uint16 usSendSize = 0;
12763 tHalExitBmpsReqParams exitBmpsReq;
12764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12765
12766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 -------------------------------------------------------------------------*/
12769 if (( NULL == pEventData ) ||
12770 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12771 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12772 {
12773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 }
12778
12779 /*-----------------------------------------------------------------------
12780 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 sizeof(exitBmpsReq),
12785 &pSendBuffer, &usDataOffset, &usSendSize))||
12786 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12787 {
12788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12789 "Unable to get send buffer in Exit BMPS req %x %x %x",
12790 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 }
12794 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12795
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12797
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 wpalMemoryCopy( pSendBuffer+usDataOffset,
12799 &exitBmpsReq,
12800 sizeof(exitBmpsReq));
12801
12802 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804
12805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12809 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810}/*WDI_ProcessExitBmpsReq*/
12811
12812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012815
12816 @param pWDICtx: pointer to the WLAN DAL context
12817 pEventData: pointer to the event information structure
12818
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 @see
12820 @return Result of the function call
12821*/
12822WDI_Status
12823WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012824(
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 WDI_ControlBlockType* pWDICtx,
12826 WDI_EventInfoType* pEventData
12827)
12828{
12829 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12830 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 wpt_uint16 usDataOffset = 0;
12833 wpt_uint16 usSendSize = 0;
12834 tUapsdReqParams enterUapsdReq;
12835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12836
12837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 -------------------------------------------------------------------------*/
12840 if (( NULL == pEventData ) ||
12841 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12842 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12843 {
12844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 }
12849
12850 /*-----------------------------------------------------------------------
12851 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 sizeof(enterUapsdReq),
12856 &pSendBuffer, &usDataOffset, &usSendSize))||
12857 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12858 {
12859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12860 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12861 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 }
12865
12866 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12867 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12868 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12869 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12870 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12871 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12872 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12873 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 wpalMemoryCopy( pSendBuffer+usDataOffset,
12877 &enterUapsdReq,
12878 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012879
12880 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012882
12883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12887 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012888}/*WDI_ProcessEnterUapsdReq*/
12889
12890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012893
12894 @param pWDICtx: pointer to the WLAN DAL context
12895 pEventData: pointer to the event information structure
12896
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 @see
12898 @return Result of the function call
12899*/
12900WDI_Status
12901WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012902(
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 WDI_ControlBlockType* pWDICtx,
12904 WDI_EventInfoType* pEventData
12905)
12906{
12907 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 wpt_uint16 usDataOffset = 0;
12910 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012911 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12912 wpt_uint8 bssIdx = 0;
12913
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12915
12916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 -------------------------------------------------------------------------*/
12919 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012920 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12922 {
12923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 }
12928
12929 /*-----------------------------------------------------------------------
12930 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012931 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012934 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012936 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 {
12938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12939 "Unable to get send buffer in Exit UAPSD req %x %x",
12940 pEventData, wdiExitUapsdRspCb);
12941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 }
12944
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012945 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12946
12947 wpalMemoryCopy( pSendBuffer+usDataOffset,
12948 &bssIdx,
12949 sizeof(wpt_uint8));
12950
12951 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12952 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12953
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12958 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012959}/*WDI_ProcessExitUapsdReq*/
12960
12961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012964
12965 @param pWDICtx: pointer to the WLAN DAL context
12966 pEventData: pointer to the event information structure
12967
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 @see
12969 @return Result of the function call
12970*/
12971WDI_Status
12972WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012973(
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 WDI_ControlBlockType* pWDICtx,
12975 WDI_EventInfoType* pEventData
12976)
12977{
12978 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12979 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 wpt_uint16 usDataOffset = 0;
12982 wpt_uint16 usSendSize = 0;
12983 tUapsdInfo uapsdAcParamsReq;
12984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12985
12986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 -------------------------------------------------------------------------*/
12989 if (( NULL == pEventData ) ||
12990 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12991 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12992 {
12993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 }
12998
12999 /*-----------------------------------------------------------------------
13000 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 sizeof(uapsdAcParamsReq),
13005 &pSendBuffer, &usDataOffset, &usSendSize))||
13006 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13007 {
13008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13009 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13010 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 }
13014
13015 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13016 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13017 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13018 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13019 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13020 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13021
Jeff Johnsone7245742012-09-05 17:12:55 -070013022 wpalMemoryCopy( pSendBuffer+usDataOffset,
13023 &uapsdAcParamsReq,
13024 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013025
13026 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013028
13029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013031 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13033 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013034}/*WDI_ProcessSetUapsdAcParamsReq*/
13035
13036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013039
13040 @param pWDICtx: pointer to the WLAN DAL context
13041 pEventData: pointer to the event information structure
13042
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 @see
13044 @return Result of the function call
13045*/
13046WDI_Status
13047WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013048(
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 WDI_ControlBlockType* pWDICtx,
13050 WDI_EventInfoType* pEventData
13051)
13052{
13053 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13054 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 wpt_uint16 usDataOffset = 0;
13057 wpt_uint16 usSendSize = 0;
13058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13059
13060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 -------------------------------------------------------------------------*/
13063 if (( NULL == pEventData ) ||
13064 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13065 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13066 {
13067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 }
13072
13073 /*-----------------------------------------------------------------------
13074 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13079 &pSendBuffer, &usDataOffset, &usSendSize))||
13080 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13081 {
13082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13083 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13084 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 }
13088
Jeff Johnsone7245742012-09-05 17:12:55 -070013089 wpalMemoryCopy( pSendBuffer+usDataOffset,
13090 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13091 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013092
13093 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095
13096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13100 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013101}/*WDI_ProcessUpdateUapsdParamsReq*/
13102
13103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013106
13107 @param pWDICtx: pointer to the WLAN DAL context
13108 pEventData: pointer to the event information structure
13109
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 @see
13111 @return Result of the function call
13112*/
13113WDI_Status
13114WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013115(
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 WDI_ControlBlockType* pWDICtx,
13117 WDI_EventInfoType* pEventData
13118)
13119{
13120 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13121 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 wpt_uint16 usDataOffset = 0;
13124 wpt_uint16 usSendSize = 0;
13125 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13126
13127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13128
13129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 -------------------------------------------------------------------------*/
13132 if (( NULL == pEventData ) ||
13133 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13134 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13135 {
13136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 }
13141
13142 /*-----------------------------------------------------------------------
13143 Get message buffer
13144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 sizeof(halRxpFilterParams),
13147 &pSendBuffer, &usDataOffset, &usSendSize))||
13148 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13149 {
13150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13151 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13152 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013155 }
13156
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13161
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 wpalMemoryCopy( pSendBuffer+usDataOffset,
13163 &halRxpFilterParams,
13164 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013165
13166 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013168
13169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13173 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013174}/*WDI_ProcessConfigureRxpFilterReq*/
13175
13176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013179
13180 @param pWDICtx: pointer to the WLAN DAL context
13181 pEventData: pointer to the event information structure
13182
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 @see
13184 @return Result of the function call
13185*/
13186WDI_Status
13187WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013188(
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 WDI_ControlBlockType* pWDICtx,
13190 WDI_EventInfoType* pEventData
13191)
13192{
13193 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13194 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 wpt_uint16 usDataOffset = 0;
13197 wpt_uint16 usSendSize = 0;
13198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13199
13200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 -------------------------------------------------------------------------*/
13203 if (( NULL == pEventData ) ||
13204 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13205 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13206 {
13207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 }
13212
13213 /*-----------------------------------------------------------------------
13214 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13219 &pSendBuffer, &usDataOffset, &usSendSize))||
13220 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13221 {
13222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13223 "Unable to get send buffer in Set beacon filter req %x %x %x",
13224 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 }
13228
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 wpalMemoryCopy( pSendBuffer+usDataOffset,
13230 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13231 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13232 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13233 &pwdiBeaconFilterParams->aFilters[0],
13234 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013235
13236 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013238
13239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13243 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013244}/*WDI_ProcessSetBeaconFilterReq*/
13245
13246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013249
13250 @param pWDICtx: pointer to the WLAN DAL context
13251 pEventData: pointer to the event information structure
13252
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 @see
13254 @return Result of the function call
13255*/
13256WDI_Status
13257WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013258(
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 WDI_ControlBlockType* pWDICtx,
13260 WDI_EventInfoType* pEventData
13261)
13262{
13263 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13264 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 wpt_uint16 usDataOffset = 0;
13267 wpt_uint16 usSendSize = 0;
13268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13269
13270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 -------------------------------------------------------------------------*/
13273 if (( NULL == pEventData ) ||
13274 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13275 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13276 {
13277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
13283 /*-----------------------------------------------------------------------
13284 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13289 &pSendBuffer, &usDataOffset, &usSendSize))||
13290 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13291 {
13292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13293 "Unable to get send buffer in remove beacon filter req %x %x %x",
13294 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 }
13298
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 wpalMemoryCopy( pSendBuffer+usDataOffset,
13300 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13301 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013302
13303 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013305
13306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13310 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013311}
13312
13313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013316
13317 @param pWDICtx: pointer to the WLAN DAL context
13318 pEventData: pointer to the event information structure
13319
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 @see
13321 @return Result of the function call
13322*/
13323WDI_Status
13324WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013325(
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 WDI_ControlBlockType* pWDICtx,
13327 WDI_EventInfoType* pEventData
13328)
13329{
13330 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13331 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 wpt_uint16 usDataOffset = 0;
13334 wpt_uint16 usSendSize = 0;
13335 tHalRSSIThresholds rssiThresholdsReq;
13336 WDI_Status ret_status = 0;
13337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13338
13339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 -------------------------------------------------------------------------*/
13342 if (( NULL == pEventData ) ||
13343 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13344 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13345 {
13346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 }
13351
13352 /*-----------------------------------------------------------------------
13353 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 sizeof(rssiThresholdsReq),
13358 &pSendBuffer, &usDataOffset, &usSendSize))||
13359 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13360 {
13361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13362 "Unable to get send buffer in remove beacon filter req %x %x %x",
13363 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 }
13367
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13388
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 wpalMemoryCopy( pSendBuffer+usDataOffset,
13390 &rssiThresholdsReq,
13391 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013392
13393 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
13396 /*-------------------------------------------------------------------------
13397 Send Set threshold req to HAL
13398 -------------------------------------------------------------------------*/
13399 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13400 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13401 {
13402 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13403 // req. Then as a result of processing the threshold cross ind, we trigger
13404 // a Set threshold req, then we need to indicate to WDI that it needs to
13405 // go to busy state as a result of the indication as we sent a req in the
13406 // same WDI context.
13407 // Hence expected state transition is to busy.
13408 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13409 }
13410
13411 return ret_status;
13412}
13413
13414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013417
13418 @param pWDICtx: pointer to the WLAN DAL context
13419 pEventData: pointer to the event information structure
13420
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 @see
13422 @return Result of the function call
13423*/
13424WDI_Status
13425WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013426(
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 WDI_ControlBlockType* pWDICtx,
13428 WDI_EventInfoType* pEventData
13429)
13430{
13431 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13432 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 wpt_uint16 usDataOffset = 0;
13435 wpt_uint16 usSendSize = 0;
13436 tHalHostOffloadReq hostOffloadParams;
13437 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013438 wpt_uint8 ucCurrentBSSSesIdx = 0;
13439 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013440
13441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13442
13443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 -------------------------------------------------------------------------*/
13446 if (( NULL == pEventData ) ||
13447 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13448 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13449 {
13450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013453 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 }
13455
13456 /*-----------------------------------------------------------------------
13457 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13462 &pSendBuffer, &usDataOffset, &usSendSize))||
13463 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13464 {
13465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13466 "Unable to get send buffer in host offload req %x %x %x",
13467 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13468 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013469 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 }
13471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013472 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13473 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13474 &pBSSSes);
13475 if ( NULL == pBSSSes )
13476 {
13477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013478 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13479 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013480 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013481 }
13482
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13484 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13487 {
13488 // ARP Offload
13489 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13490 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13491 4);
13492 }
13493 else
13494 {
13495 // NS Offload
13496 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13497 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13498 16);
13499
13500#ifdef WLAN_NS_OFFLOAD
13501 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13502 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13503 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13504 16);
13505 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13506 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13507 16);
13508 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13509 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13510 16);
13511 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13512 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13513 16);
13514 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13515 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13516 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013517 nsOffloadParams.srcIPv6AddrValid =
13518 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13519
13520 nsOffloadParams.targetIPv6Addr1Valid =
13521 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13522
13523 nsOffloadParams.targetIPv6Addr2Valid =
13524 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13525
13526 nsOffloadParams.slotIndex =
13527 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528
Jeff Johnson295189b2012-06-20 16:38:30 -070013529#endif // WLAN_NS_OFFLOAD
13530 }
13531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013532 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13533
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 // copy hostOffloadParams into pSendBuffer
13535 wpalMemoryCopy( pSendBuffer+usDataOffset,
13536 &hostOffloadParams,
13537 sizeof(hostOffloadParams));
13538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013539 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013541 // copy nsOffloadParams into pSendBuffer
13542 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 &nsOffloadParams,
13544 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013545 }
13546 else
13547 {
13548#ifdef WLAN_NS_OFFLOAD
13549 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13550 {
13551 // copy nsOffloadParams into pSendBuffer
13552 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13553 &nsOffloadParams,
13554 sizeof(nsOffloadParams));
13555 }
13556#endif
13557 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013558
13559 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013561
13562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13566 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013567
13568fail:
13569 // Release the message buffer so we don't leak
13570 wpalMemoryFree(pSendBuffer);
13571
13572failRequest:
13573 //WDA should have failure check to avoid the memory leak
13574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013575}/*WDI_ProcessHostOffloadReq*/
13576
13577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013579 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013580
13581 @param pWDICtx: pointer to the WLAN DAL context
13582 pEventData: pointer to the event information structure
13583
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 @see
13585 @return Result of the function call
13586*/
13587WDI_Status
13588WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013589(
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 WDI_ControlBlockType* pWDICtx,
13591 WDI_EventInfoType* pEventData
13592)
13593{
13594 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13595 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 wpt_uint16 usDataOffset = 0;
13598 wpt_uint16 usSendSize = 0;
13599 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013600 wpt_uint8 ucCurrentBSSSesIdx = 0;
13601 WDI_BSSSessionType* pBSSSes = NULL;
13602
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13604
13605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 -------------------------------------------------------------------------*/
13608 if (( NULL == pEventData ) ||
13609 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13610 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13611 {
13612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13613 "Invalid parameters in Keep Alive req");
13614 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013615 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 }
13617
13618 /*-----------------------------------------------------------------------
13619 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 sizeof(keepAliveReq),
13624 &pSendBuffer, &usDataOffset, &usSendSize))||
13625 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13626 {
13627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13628 "Unable to get send buffer in keep alive req %x %x %x",
13629 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13630 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013631 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 }
13633
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13635 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13636 &pBSSSes);
13637 if ( NULL == pBSSSes )
13638 {
13639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013640 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013641 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013642 }
13643
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13645 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13646
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013647 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013648
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13650 {
13651 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13652 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13653 HAL_IPV4_ADDR_LEN);
13654 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13655 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 wpalMemoryCopy(keepAliveReq.destMacAddr,
13658 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13659 HAL_MAC_ADDR_LEN);
13660 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013661
13662 wpalMemoryCopy( pSendBuffer+usDataOffset,
13663 &keepAliveReq,
13664 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013665
13666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13667 "Process keep alive req %d",sizeof(keepAliveReq));
13668
13669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13670 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13671
13672 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013674
13675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13676 "Sending keep alive req to HAL");
13677
13678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13682 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013683
13684fail:
13685 // Release the message buffer so we don't leak
13686 wpalMemoryFree(pSendBuffer);
13687
13688failRequest:
13689 //WDA should have failure check to avoid the memory leak
13690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013691}/*WDI_ProcessKeepAliveReq*/
13692
13693
13694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013697
13698 @param pWDICtx: pointer to the WLAN DAL context
13699 pEventData: pointer to the event information structure
13700
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 @see
13702 @return Result of the function call
13703*/
13704WDI_Status
13705WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013706(
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 WDI_ControlBlockType* pWDICtx,
13708 WDI_EventInfoType* pEventData
13709)
13710{
13711 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13712 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 wpt_uint16 usDataOffset = 0;
13715 wpt_uint16 usSendSize = 0;
13716 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013717 wpt_uint8 ucCurrentBSSSesIdx = 0;
13718 WDI_BSSSessionType* pBSSSes = NULL;
13719
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13721
13722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 -------------------------------------------------------------------------*/
13725 if (( NULL == pEventData ) ||
13726 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13727 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13728 {
13729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013732 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 }
13734
13735 /*-----------------------------------------------------------------------
13736 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 sizeof(wowlAddBcPtrnReq),
13741 &pSendBuffer, &usDataOffset, &usSendSize))||
13742 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13743 {
13744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13745 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13746 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13747 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013748 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013751 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13752 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13753 &pBSSSes);
13754 if ( NULL == pBSSSes )
13755 {
13756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013757 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013758 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013759 }
13760
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13769
13770 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13771 {
13772 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13773 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13774 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13775 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13776 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13777 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13778 }
13779 else
13780 {
13781 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13782 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13783 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13784 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13785 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13786 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13787
13788 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13789 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13790 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13791 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13792 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13793 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13794 }
13795
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013796 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13797
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 wpalMemoryCopy( pSendBuffer+usDataOffset,
13799 &wowlAddBcPtrnReq,
13800 sizeof(wowlAddBcPtrnReq));
13801
13802 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804
13805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13809 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013810fail:
13811 // Release the message buffer so we don't leak
13812 wpalMemoryFree(pSendBuffer);
13813
13814failRequest:
13815 //WDA should have failure check to avoid the memory leak
13816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817}/*WDI_ProcessWowlAddBcPtrnReq*/
13818
13819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013822
13823 @param pWDICtx: pointer to the WLAN DAL context
13824 pEventData: pointer to the event information structure
13825
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 @see
13827 @return Result of the function call
13828*/
13829WDI_Status
13830WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013831(
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 WDI_ControlBlockType* pWDICtx,
13833 WDI_EventInfoType* pEventData
13834)
13835{
13836 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13837 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 wpt_uint16 usDataOffset = 0;
13840 wpt_uint16 usSendSize = 0;
13841 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013842 wpt_uint8 ucCurrentBSSSesIdx = 0;
13843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13845
13846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 -------------------------------------------------------------------------*/
13849 if (( NULL == pEventData ) ||
13850 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13851 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13852 {
13853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013856 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 }
13858
13859 /*-----------------------------------------------------------------------
13860 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 sizeof(wowlDelBcPtrnReq),
13865 &pSendBuffer, &usDataOffset, &usSendSize))||
13866 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13867 {
13868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13869 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13870 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13871 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013872 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 }
13874
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013875 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13876 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13877 &pBSSSes);
13878 if ( NULL == pBSSSes )
13879 {
13880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013881 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013882 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013883 }
13884
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013887
13888 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13889
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 wpalMemoryCopy( pSendBuffer+usDataOffset,
13891 &wowlDelBcPtrnReq,
13892 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013893
13894 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013896
13897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13901 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013902
13903fail:
13904 // Release the message buffer so we don't leak
13905 wpalMemoryFree(pSendBuffer);
13906
13907failRequest:
13908 //WDA should have failure check to avoid the memory leak
13909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013910}/*WDI_ProcessWowlDelBcPtrnReq*/
13911
13912/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013914 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013915
13916 @param pWDICtx: pointer to the WLAN DAL context
13917 pEventData: pointer to the event information structure
13918
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 @see
13920 @return Result of the function call
13921*/
13922WDI_Status
13923WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013924(
Jeff Johnson295189b2012-06-20 16:38:30 -070013925 WDI_ControlBlockType* pWDICtx,
13926 WDI_EventInfoType* pEventData
13927)
13928{
13929 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13930 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 wpt_uint16 usDataOffset = 0;
13933 wpt_uint16 usSendSize = 0;
13934 tHalWowlEnterParams wowlEnterReq;
13935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13936
13937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 -------------------------------------------------------------------------*/
13940 if (( NULL == pEventData ) ||
13941 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13942 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13943 {
13944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 }
13949
13950 /*-----------------------------------------------------------------------
13951 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 sizeof(wowlEnterReq),
13956 &pSendBuffer, &usDataOffset, &usSendSize))||
13957 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13960 "Unable to get send buffer in Wowl enter req %x %x %x",
13961 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 }
13965
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13982
13983#ifdef WLAN_WAKEUP_EVENTS
13984 wowlEnterReq.ucWoWEAPIDRequestEnable =
13985 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13986
13987 wowlEnterReq.ucWoWEAPOL4WayEnable =
13988 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13989
13990 wowlEnterReq.ucWowNetScanOffloadMatch =
13991 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13992
13993 wowlEnterReq.ucWowGTKRekeyError =
13994 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13995
13996 wowlEnterReq.ucWoWBSSConnLoss =
13997 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13998#endif // WLAN_WAKEUP_EVENTS
13999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014000 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14001
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14003 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14004 sizeof(tSirMacAddr));
14005
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 wpalMemoryCopy( pSendBuffer+usDataOffset,
14007 &wowlEnterReq,
14008 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014009
14010 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014012
14013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14017 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014018}/*WDI_ProcessWowlEnterReq*/
14019
14020/**
14021 @brief Process Wowl exit Request function (called when Main FSM
14022 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014023
14024 @param pWDICtx: pointer to the WLAN DAL context
14025 pEventData: pointer to the event information structure
14026
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 @see
14028 @return Result of the function call
14029*/
14030WDI_Status
14031WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014032(
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 WDI_ControlBlockType* pWDICtx,
14034 WDI_EventInfoType* pEventData
14035)
14036{
14037 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014038 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 wpt_uint16 usDataOffset = 0;
14041 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014042 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14044
14045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 -------------------------------------------------------------------------*/
14048 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014049 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14051 {
14052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014053 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 }
14057
14058 /*-----------------------------------------------------------------------
14059 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014063 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014065 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 {
14067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14068 "Unable to get send buffer in Wowl Exit req %x %x",
14069 pEventData, wdiWowlExitCb);
14070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 }
14073
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014074 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14075
14076 wpalMemoryCopy( pSendBuffer+usDataOffset,
14077 &wowlExitparams,
14078 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14083 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014084}/*WDI_ProcessWowlExitReq*/
14085
14086/**
14087 @brief Process Configure Apps Cpu Wakeup State Request function
14088 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014089
14090 @param pWDICtx: pointer to the WLAN DAL context
14091 pEventData: pointer to the event information structure
14092
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 @see
14094 @return Result of the function call
14095*/
14096WDI_Status
14097WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014098(
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 WDI_ControlBlockType* pWDICtx,
14100 WDI_EventInfoType* pEventData
14101)
14102{
14103 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14104 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 wpt_uint16 usDataOffset = 0;
14107 wpt_uint16 usSendSize = 0;
14108 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14110
14111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 -------------------------------------------------------------------------*/
14114 if (( NULL == pEventData ) ||
14115 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14116 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14117 {
14118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 }
14123
14124 /*-----------------------------------------------------------------------
14125 Get message buffer
14126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 sizeof(halCfgAppsCpuWakeupStateReqParams),
14129 &pSendBuffer, &usDataOffset, &usSendSize))||
14130 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14131 {
14132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14133 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14134 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 }
14138
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14141
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 wpalMemoryCopy( pSendBuffer+usDataOffset,
14143 &halCfgAppsCpuWakeupStateReqParams,
14144 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014145
14146 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014148
14149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14153 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14154 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014155}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14156
14157#ifdef WLAN_FEATURE_VOWIFI_11R
14158/**
14159 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14160 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014161
14162 @param pWDICtx: pointer to the WLAN DAL context
14163 pEventData: pointer to the event information structure
14164
Jeff Johnson295189b2012-06-20 16:38:30 -070014165 @see
14166 @return Result of the function call
14167*/
14168WDI_Status
14169WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014170(
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 WDI_ControlBlockType* pWDICtx,
14172 WDI_EventInfoType* pEventData
14173)
14174{
14175 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14176 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 wpt_uint16 usDataOffset = 0;
14181 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 wpt_macAddr macBSSID;
14184 tAggrAddTsReq halAggrAddTsReq;
14185 int i;
14186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14187
14188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 -------------------------------------------------------------------------*/
14191 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14192 ( NULL == pEventData->pCBfnc ))
14193 {
14194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 }
14199 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14200 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14201 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14202 /*-------------------------------------------------------------------------
14203 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 -------------------------------------------------------------------------*/
14206 wpalMutexAcquire(&pWDICtx->wptMutex);
14207
14208 /*------------------------------------------------------------------------
14209 Find the BSS for which the request is made and identify WDI session
14210 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14212 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 &macBSSID))
14214 {
14215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14216 "This station does not exist in the WDI Station Table %d");
14217 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 }
14220
Jeff Johnsone7245742012-09-05 17:12:55 -070014221 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14222 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14225 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14226 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014227
14228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014231
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 /*------------------------------------------------------------------------
14233 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 ------------------------------------------------------------------------*/
14236 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14237 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14239 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14240 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014241
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 }
14246
14247 wpalMutexRelease(&pWDICtx->wptMutex);
14248 /*-----------------------------------------------------------------------
14249 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 sizeof(tAggrAddTsParams),
14254 &pSendBuffer, &usDataOffset, &usSendSize))||
14255 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14256 {
14257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14258 "Unable to get send buffer in set bss key req %x %x %x",
14259 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 }
14263
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14268
14269 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14270 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014275 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14277 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14280 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14283 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14286 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14289 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14292 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14295 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14298 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303
14304
14305 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014333 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014334 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14335 }
14336
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 wpalMemoryCopy( pSendBuffer+usDataOffset,
14338 &halAggrAddTsReq,
14339 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014340
14341 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343
14344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014350}/*WDI_ProcessAggrAddTSpecReq*/
14351#endif /* WLAN_FEATURE_VOWIFI_11R */
14352
14353/**
14354 @brief Process Shutdown Request function (called when Main FSM
14355 allows it)
14356
14357 @param pWDICtx: pointer to the WLAN DAL context
14358 pEventData: pointer to the event information structure
14359
14360 @see
14361 @return Result of the function call
14362*/
14363WDI_Status
14364WDI_ProcessShutdownReq
14365(
14366 WDI_ControlBlockType* pWDICtx,
14367 WDI_EventInfoType* pEventData
14368 )
14369{
14370 wpt_status wptStatus;
14371
14372
14373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14374
14375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 -------------------------------------------------------------------------*/
14378 if ( NULL == pEventData )
14379 {
14380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 WDI_ASSERT(0);
14383 return WDI_STATUS_E_FAILURE;
14384 }
14385
14386 wpalMutexAcquire(&pWDICtx->wptMutex);
14387
14388
14389 gWDIInitialized = eWLAN_PAL_FALSE;
14390 /*! TO DO: stop the data services */
14391 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14392 {
14393 /*Stop the STA Table !UT- check this logic again
14394 It is safer to do it here than on the response - because a stop is imminent*/
14395 WDI_STATableStop(pWDICtx);
14396
14397 /* Stop Transport Driver, DXE */
14398 WDTS_Stop(pWDICtx);
14399 }
14400
14401 /*Clear all pending request*/
14402 WDI_ClearPendingRequests(pWDICtx);
14403 /* Close Data transport*/
14404 /* FTM mode does not open Data Path */
14405 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14406 {
14407 WDTS_Close(pWDICtx);
14408 }
14409 /*Close the STA Table !UT- check this logic again*/
14410 WDI_STATableClose(pWDICtx);
14411 /*close the PAL */
14412 wptStatus = wpalClose(pWDICtx->pPALContext);
14413 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14414 {
14415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14416 "Failed to wpal Close %d", wptStatus);
14417 WDI_ASSERT(0);
14418 }
14419
14420 /*Transition back to init state*/
14421 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14422
14423 wpalMutexRelease(&pWDICtx->wptMutex);
14424
14425 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427
14428
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014430}/*WDI_ProcessShutdownReq*/
14431
14432/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014434========================================================================*/
14435
14436/**
14437 @brief Process Start Response function (called when a response
14438 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014439
14440 @param pWDICtx: pointer to the WLAN DAL context
14441 pEventData: pointer to the event information structure
14442
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 @see
14444 @return Result of the function call
14445*/
14446WDI_Status
14447WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014448(
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 WDI_ControlBlockType* pWDICtx,
14450 WDI_EventInfoType* pEventData
14451)
14452{
14453 WDI_StartRspParamsType wdiRspParams;
14454 WDI_StartRspCb wdiStartRspCb = NULL;
14455
14456 tHalMacStartRspParams* startRspParams;
14457
14458#ifndef HAL_SELF_STA_PER_BSS
14459 WDI_AddStaParams wdiAddSTAParam = {0};
14460#endif
14461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14462
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 -------------------------------------------------------------------------*/
14467 if (( NULL == pEventData ) ||
14468 ( NULL == pEventData->pEventData) ||
14469 ( NULL == wdiStartRspCb ))
14470 {
14471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 }
14476
14477 /*-------------------------------------------------------------------------
14478 Extract response and send it to UMAC
14479 -------------------------------------------------------------------------*/
14480 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14481 {
14482 // not enough data was received
14483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14484 "Invalid response length in Start Resp Expect %x Rcvd %x",
14485 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 }
14489
14490 /*-------------------------------------------------------------------------
14491 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 -------------------------------------------------------------------------*/
14494 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14495
14496 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14497 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14498 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14499 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14500 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14501 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14502 wdiRspParams.wlanReportedVersion.major =
14503 startRspParams->wcnssWlanVersion.major;
14504 wdiRspParams.wlanReportedVersion.minor =
14505 startRspParams->wcnssWlanVersion.minor;
14506 wdiRspParams.wlanReportedVersion.version =
14507 startRspParams->wcnssWlanVersion.version;
14508 wdiRspParams.wlanReportedVersion.revision =
14509 startRspParams->wcnssWlanVersion.revision;
14510 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14511 startRspParams->wcnssCrmVersionString,
14512 sizeof(wdiRspParams.wcnssSoftwareVersion));
14513 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14514 startRspParams->wcnssWlanVersionString,
14515 sizeof(wdiRspParams.wcnssHardwareVersion));
14516 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14517
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014518 /*Save the HAL Version*/
14519 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14520
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 wpalMutexAcquire(&pWDICtx->wptMutex);
14522 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14523 {
14524 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14525
14526 /*Cache the start response for further use*/
14527 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014528 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 sizeof(pWDICtx->wdiCachedStartRspParams));
14530
14531 }
14532 else
14533 {
14534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14535 "Failed to start device with status %s(%d)",
14536 WDI_getHALStatusMsgString(startRspParams->status),
14537 startRspParams->status);
14538
14539 /*Set the expected state transition to stopped - because the start has
14540 failed*/
14541 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14542
14543 wpalMutexRelease(&pWDICtx->wptMutex);
14544
14545 /*Notify UMAC*/
14546 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014547
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14549
14550 /*Although the response is an error - it was processed by our function
14551 so as far as the caller is concerned this is a succesful reponse processing*/
14552 return WDI_STATUS_SUCCESS;
14553 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014554
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 wpalMutexRelease(&pWDICtx->wptMutex);
14556
14557 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14558 {
14559 /* FTM mode does not need to execute below */
14560 /* Notify UMAC */
14561 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14562 return WDI_STATUS_SUCCESS;
14563 }
14564
14565 /* START the Data transport */
14566 WDTS_startTransport(pWDICtx);
14567
14568 /*Start the STA Table !- check this logic again*/
14569 WDI_STATableStart(pWDICtx);
14570
14571#ifndef HAL_SELF_STA_PER_BSS
14572 /* Store the Self STA Index */
14573 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14574
14575 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14576 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14577 WDI_MAC_ADDR_LEN);
14578
14579 /* At this point add the self-STA */
14580
14581 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14582 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14583 /*! TO DO: wdiAddSTAParam.dpuSig */
14584 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14585 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14586 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14587
14588 //all DPU indices are the same for self STA
14589 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14590 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014591 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14593 WDI_MAC_ADDR_LEN);
14594 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14595 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14596
14597 /* Note: Since we don't get an explicit config STA request for self STA, we
14598 add the self STA upon receiving the Start response message. But the
14599 self STA entry in the table is deleted when WDI gets an explicit delete STA
14600 request */
14601 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14602#endif
14603
14604 /*Notify UMAC*/
14605 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14606
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608}/*WDI_ProcessStartRsp*/
14609
14610
14611/**
14612 @brief Process Stop Response function (called when a response
14613 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014614
14615 @param pWDICtx: pointer to the WLAN DAL context
14616 pEventData: pointer to the event information structure
14617
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 @see
14619 @return Result of the function call
14620*/
14621WDI_Status
14622WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014623(
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 WDI_ControlBlockType* pWDICtx,
14625 WDI_EventInfoType* pEventData
14626)
14627{
14628 WDI_Status wdiStatus;
14629 WDI_StopRspCb wdiStopRspCb = NULL;
14630
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14633
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 -------------------------------------------------------------------------*/
14638 if (( NULL == pEventData ) ||
14639 ( NULL == pEventData->pEventData) ||
14640 ( NULL == wdiStopRspCb ))
14641 {
14642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 }
14647
14648 /*-------------------------------------------------------------------------
14649 Extract response and send it to UMAC
14650 -------------------------------------------------------------------------*/
14651 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14652 {
14653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14654 "Invalid response length in Stop Resp %x %x",
14655 pEventData->uEventDataSize);
14656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 }
14659
14660 /*-------------------------------------------------------------------------
14661 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14665 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 sizeof(halMacStopRspMsg.stopRspParams));
14667
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669
14670 wpalMutexAcquire(&pWDICtx->wptMutex);
14671
14672 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 --------------------------------------------------------------------------*/
14675 if ( WDI_STATUS_SUCCESS != wdiStatus )
14676 {
14677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14678 "Failed to stop the device with status %s (%d)",
14679 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14680 halMacStopRspMsg.stopRspParams.status);
14681
Jeff Johnsone7245742012-09-05 17:12:55 -070014682 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14683
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014687
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14689
14690 /*Transition now as WDI may get preempted imediately after it sends
14691 up the Stop Response and it will not get to process the state transition
14692 from Main Rsp function*/
14693 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14694 wpalMutexRelease(&pWDICtx->wptMutex);
14695
14696 /*! TO DO: - STOP the Data transport */
14697
14698 /*Notify UMAC*/
14699 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14700
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014702}/*WDI_ProcessStopRsp*/
14703
14704/**
14705 @brief Process Close Rsp function (called when a response
14706 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014707
14708 @param pWDICtx: pointer to the WLAN DAL context
14709 pEventData: pointer to the event information structure
14710
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 @see
14712 @return Result of the function call
14713*/
14714WDI_Status
14715WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014716(
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 WDI_ControlBlockType* pWDICtx,
14718 WDI_EventInfoType* pEventData
14719)
14720{
14721 /*There is no close response comming from HAL - function just kept for
14722 simmetry */
14723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014725}/*WDI_ProcessCloseRsp*/
14726
14727
14728/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014730============================================================================*/
14731
14732/**
14733 @brief Process Init Scan Rsp function (called when a response
14734 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014735
14736 @param pWDICtx: pointer to the WLAN DAL context
14737 pEventData: pointer to the event information structure
14738
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 @see
14740 @return Result of the function call
14741*/
14742WDI_Status
14743WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014744(
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 WDI_ControlBlockType* pWDICtx,
14746 WDI_EventInfoType* pEventData
14747)
14748{
14749 WDI_Status wdiStatus;
14750 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014752 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14754
14755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 -------------------------------------------------------------------------*/
14758 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14759 ( NULL == pEventData->pEventData))
14760 {
14761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 }
14766
14767 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14768 if( NULL == wdiInitScanRspCb)
14769 {
14770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014771 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 }
14775
14776 /*-------------------------------------------------------------------------
14777 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14781 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 sizeof(halInitScanRspMsg.initScanRspParams));
14783
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014785
14786 if ( pWDICtx->bInBmps )
14787 {
14788 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014789 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14790 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14792 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14793 WDI_ASSERT(0);
14794 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 }
14796
14797 /*Notify UMAC*/
14798 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14799
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014801}/*WDI_ProcessInitScanRsp*/
14802
14803
14804/**
14805 @brief Process Start Scan Rsp function (called when a response
14806 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014807
14808 @param pWDICtx: pointer to the WLAN DAL context
14809 pEventData: pointer to the event information structure
14810
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 @see
14812 @return Result of the function call
14813*/
14814WDI_Status
14815WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014816(
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 WDI_ControlBlockType* pWDICtx,
14818 WDI_EventInfoType* pEventData
14819)
14820{
14821 WDI_StartScanRspParamsType wdiStartScanParams;
14822 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014823
14824 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14826
14827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 -------------------------------------------------------------------------*/
14830 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14831 ( NULL == pEventData->pEventData))
14832 {
14833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014834 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 }
14838
14839 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14840 if( NULL == wdiStartScanRspCb)
14841 {
14842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014843 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 }
14847
14848 /*-------------------------------------------------------------------------
14849 Extract response and send it to UMAC
14850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14852 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 sizeof(halStartScanRspMsg.startScanRspParams));
14854
14855 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14856 halStartScanRspMsg.startScanRspParams.status);
14857#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 halStartScanRspMsg.startScanRspParams.startTSF,
14862 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014863#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014864
14865 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14866 {
14867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14868 "Start scan failed with status %s (%d)",
14869 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14870 halStartScanRspMsg.startScanRspParams.status);
14871 /* send the status to UMAC, don't return from here*/
14872 }
14873
14874 /*Notify UMAC*/
14875 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14876
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878
14879}/*WDI_ProcessStartScanRsp*/
14880
14881
14882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014885
14886 @param pWDICtx: pointer to the WLAN DAL context
14887 pEventData: pointer to the event information structure
14888
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 @see
14890 @return Result of the function call
14891*/
14892WDI_Status
14893WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014894(
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 WDI_ControlBlockType* pWDICtx,
14896 WDI_EventInfoType* pEventData
14897)
14898{
14899 WDI_Status wdiStatus;
14900 tHalEndScanRspMsg halEndScanRspMsg;
14901 WDI_EndScanRspCb wdiEndScanRspCb;
14902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14903
14904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 -------------------------------------------------------------------------*/
14907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14908 ( NULL == pEventData->pEventData))
14909 {
14910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 }
14915
14916 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14917
14918 /*-------------------------------------------------------------------------
14919 Extract response and send it to UMAC
14920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14922 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 sizeof(halEndScanRspMsg.endScanRspParams));
14924
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014926
14927 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14928 {
14929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14930 "End Scan failed with status %s (%d )",
14931 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14932 halEndScanRspMsg.endScanRspParams.status);
14933 /* send the status to UMAC, don't return from here*/
14934 }
14935
14936 /*Notify UMAC*/
14937 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14938
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940}/*WDI_ProcessEndScanRsp*/
14941
14942
14943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014946
14947 @param pWDICtx: pointer to the WLAN DAL context
14948 pEventData: pointer to the event information structure
14949
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 @see
14951 @return Result of the function call
14952*/
14953WDI_Status
14954WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014955(
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 WDI_ControlBlockType* pWDICtx,
14957 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014958)
Jeff Johnson295189b2012-06-20 16:38:30 -070014959{
14960 WDI_Status wdiStatus;
14961 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014962
14963 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14965
14966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 -------------------------------------------------------------------------*/
14969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14970 ( NULL == pEventData->pEventData))
14971 {
14972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 }
14977
14978 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14979
14980 /*-------------------------------------------------------------------------
14981 Extract response and send it to UMAC
14982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14984 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14986
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014988
14989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 halFinishScanRspMsg.finishScanRspParams.status);
14992
14993 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14994 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14997 "Finish Scan failed with status %s (%d)",
14998 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14999 halFinishScanRspMsg.finishScanRspParams.status);
15000 /* send the status to UMAC, don't return from here*/
15001 }
15002
15003 /*Notify UMAC*/
15004 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15005
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015007}/*WDI_ProcessFinishScanRsp*/
15008
15009/**
15010 @brief Process Join Response function (called when a response
15011 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015012
15013 @param pWDICtx: pointer to the WLAN DAL context
15014 pEventData: pointer to the event information structure
15015
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 @see
15017 @return Result of the function call
15018*/
15019WDI_Status
15020WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015021(
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 WDI_ControlBlockType* pWDICtx,
15023 WDI_EventInfoType* pEventData
15024)
15025{
15026 WDI_Status wdiStatus;
15027 WDI_JoinRspCb wdiJoinRspCb;
15028 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015029
15030 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15032
15033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 -------------------------------------------------------------------------*/
15036 if (( NULL == pWDICtx ) ||
15037 ( NULL == pWDICtx->pfncRspCB ) ||
15038 ( NULL == pEventData ) ||
15039 ( NULL == pEventData->pEventData))
15040 {
15041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 }
15046
15047 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15048
15049 /*-------------------------------------------------------------------------
15050 Extract response and send it to UMAC
15051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15053 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 sizeof(halJoinRspMsg.joinRspParams));
15055
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015057
15058 wpalMutexAcquire(&pWDICtx->wptMutex);
15059
15060 /*-----------------------------------------------------------------------
15061 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15066 {
15067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15069 "association no longer in progress %d - mysterious HAL response",
15070 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015071
Jeff Johnsone7245742012-09-05 17:12:55 -070015072 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 }
15076
15077 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15078
15079 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -----------------------------------------------------------------------*/
15082 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15083 {
15084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15085 "Join only allowed in Joining state - failure state is %d "
15086 "strange HAL response", pBSSSes->wdiAssocState);
15087
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15089
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 }
15093
15094
15095 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 -----------------------------------------------------------------------*/
15098 if ( WDI_STATUS_SUCCESS != wdiStatus )
15099 {
15100 /*Association was failed by HAL - remove session*/
15101 WDI_DeleteSession(pWDICtx, pBSSSes);
15102
15103 /*Association no longer in progress */
15104 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15105
15106 /*Association no longer in progress - prepare pending assoc for processing*/
15107 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015108
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 }
15110 else
15111 {
15112 /*Transition to state Joining - this may be redundant as we are supposed
15113 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 }
15116
15117 wpalMutexRelease(&pWDICtx->wptMutex);
15118
15119 /*Notify UMAC*/
15120 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15121
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015123}/*WDI_ProcessJoinRsp*/
15124
15125
15126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015129
15130 @param pWDICtx: pointer to the WLAN DAL context
15131 pEventData: pointer to the event information structure
15132
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 @see
15134 @return Result of the function call
15135*/
15136WDI_Status
15137WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015138(
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 WDI_ControlBlockType* pWDICtx,
15140 WDI_EventInfoType* pEventData
15141)
15142{
15143 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15144 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 WDI_BSSSessionType* pBSSSes = NULL;
15147
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15150 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015151
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15153
15154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 -------------------------------------------------------------------------*/
15157 if (( NULL == pEventData ) ||
15158 ( NULL == pEventData->pEventData))
15159 {
15160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 }
15165
15166 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15167
15168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 sizeof(halConfigBssRspMsg.configBssRspParams));
15174
15175 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15176 halConfigBssRspMsg.configBssRspParams.status);
15177 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15178 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15181 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015182
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015184
15185 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015187
15188 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015190
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15196 #endif
15197 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15198 halConfigBssRspMsg.configBssRspParams.staMac,
15199 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 wpalMutexAcquire(&pWDICtx->wptMutex);
15202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15206 wdiConfigBSSParams.macBSSID,
15207 &pBSSSes);
15208
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 /*-----------------------------------------------------------------------
15210 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 -----------------------------------------------------------------------*/
15213 if ( NULL == pBSSSes )
15214 {
15215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15216 "Association sequence for this BSS does not yet exist "
15217 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015218
15219 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15220
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015224
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 /*Save data for this BSS*/
15226 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15227 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015232 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15238 pBSSSes->bcastStaIdx =
15239 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015240
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015242
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 /*-------------------------------------------------------------------------
15244 Add Peer STA
15245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15248 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 wdiAddSTAParam.ucHTCapable =
15254 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15255 wdiAddSTAParam.ucStaType =
15256 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15257
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15260 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015262
15263 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15264 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15265 WDI_MAC_ADDR_LEN);
15266
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015280
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15282 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015283
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15285 /*-------------------------------------------------------------------------
15286 Add Broadcast STA only in AP mode
15287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 WDI_BSS_OPERATIONAL_MODE_AP )
15290 {
15291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15292 "Add BCAST STA to table for index: %d",
15293 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015294
15295 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015297
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15299 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15300 }
15301 wpalMutexRelease(&pWDICtx->wptMutex);
15302 }
15303 else
15304 {
15305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15306 "Config BSS RSP failed with status : %s(%d)",
15307 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 halConfigBssRspMsg.configBssRspParams.status);
15310
Jeff Johnsone7245742012-09-05 17:12:55 -070015311
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 /*Association was failed by HAL - remove session*/
15313 WDI_DeleteSession(pWDICtx, pBSSSes);
15314
15315 /*Association no longer in progress */
15316 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15317
15318 /*Association no longer in progress - prepare pending assoc for processing*/
15319 WDI_DequeueAssocRequest(pWDICtx);
15320
15321 }
15322
15323 /*Notify UMAC*/
15324 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15325
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015327}/*WDI_ProcessConfigBSSRsp*/
15328
15329
15330/**
15331 @brief Process Del BSS Response function (called when a response
15332 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015333
15334 @param pWDICtx: pointer to the WLAN DAL context
15335 pEventData: pointer to the event information structure
15336
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 @see
15338 @return Result of the function call
15339*/
15340WDI_Status
15341WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015342(
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 WDI_ControlBlockType* pWDICtx,
15344 WDI_EventInfoType* pEventData
15345)
15346{
15347 WDI_DelBSSRspParamsType wdiDelBSSParams;
15348 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 WDI_BSSSessionType* pBSSSes = NULL;
15351
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15354
15355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 -------------------------------------------------------------------------*/
15358 if (( NULL == pEventData ) ||
15359 ( NULL == pEventData->pEventData))
15360 {
15361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 }
15366
15367 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15368
15369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15373 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 sizeof(halDelBssRspMsg.deleteBssRspParams));
15375
15376
15377 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015379
15380 wpalMutexAcquire(&pWDICtx->wptMutex);
15381
15382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15386 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15387 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015388
15389 /*-----------------------------------------------------------------------
15390 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 -----------------------------------------------------------------------*/
15393 if ( NULL == pBSSSes )
15394 {
15395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15396 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015397 "association no longer in progress - mysterious HAL response");
15398
15399 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15400
15401 wpalMutexRelease(&pWDICtx->wptMutex);
15402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015404
15405 /*Extract BSSID for the response to UMAC*/
15406 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15407 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15408
15409 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15410
15411 /*-----------------------------------------------------------------------
15412 The current session will be deleted
15413 -----------------------------------------------------------------------*/
15414 WDI_DeleteSession(pWDICtx, pBSSSes);
15415
15416
15417 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15418 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015420 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015421 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015422
15423 /* Delete the STA's in this BSS */
15424 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15425
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 wpalMutexRelease(&pWDICtx->wptMutex);
15427
15428 /*Notify UMAC*/
15429 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15430
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015432}/*WDI_ProcessDelBSSRsp*/
15433
15434/**
15435 @brief Process Post Assoc Rsp function (called when a response
15436 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015437
15438 @param pWDICtx: pointer to the WLAN DAL context
15439 pEventData: pointer to the event information structure
15440
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 @see
15442 @return Result of the function call
15443*/
15444WDI_Status
15445WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015446(
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 WDI_ControlBlockType* pWDICtx,
15448 WDI_EventInfoType* pEventData
15449)
15450{
15451 WDI_PostAssocRspParamsType wdiPostAssocParams;
15452 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15457
15458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 -------------------------------------------------------------------------*/
15461 if (( NULL == pEventData ) ||
15462 ( NULL == pEventData->pEventData))
15463 {
15464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 }
15469
15470 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15471
15472 /*-------------------------------------------------------------------------
15473 Extract response and send it to UMAC
15474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 sizeof(halPostAssocRspMsg.postAssocRspParams));
15478
15479 /*Extract the Post Assoc STA Params */
15480
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15487
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 wdiPostAssocParams.wdiStatus =
15489 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015490
15491 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15492 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15494 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 WDI_MAC_ADDR_LEN);
15496
15497 /* Extract Post Assoc BSS Params */
15498
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15500 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15501 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015502
15503 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15504 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15507 .macSTA, WDI_MAC_ADDR_LEN);
15508
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15511
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15514
15515 wdiPostAssocParams.bssParams.ucBSSIdx =
15516 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15517
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15520
15521 wpalMutexAcquire(&pWDICtx->wptMutex);
15522
15523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015529
15530 /*-----------------------------------------------------------------------
15531 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 -----------------------------------------------------------------------*/
15534 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15537 {
15538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15539 "Association sequence for this BSS does not yet exist or "
15540 "association no longer in progress - mysterious HAL response");
15541
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15543
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 }
15547
15548 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015550 -----------------------------------------------------------------------*/
15551 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15552 {
15553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15554 "Post Assoc not allowed before JOIN - failing request "
15555 "strange HAL response");
15556
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15558
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 }
15562
15563 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 -----------------------------------------------------------------------*/
15566 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15567 {
15568 /*Association was failed by HAL - remove session*/
15569 WDI_DeleteSession(pWDICtx, pBSSSes);
15570 }
15571 else
15572 {
15573 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015575
15576 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15585
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15588 }
15589
15590 /*Association no longer in progress */
15591 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15592
15593 /*Association no longer in progress - prepare pending assoc for processing*/
15594 WDI_DequeueAssocRequest(pWDICtx);
15595
15596 wpalMutexRelease(&pWDICtx->wptMutex);
15597
15598 /*Notify UMAC*/
15599 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15600
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015602}/*WDI_ProcessPostAssocRsp*/
15603
15604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015607
15608 @param pWDICtx: pointer to the WLAN DAL context
15609 pEventData: pointer to the event information structure
15610
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 @see
15612 @return Result of the function call
15613*/
15614WDI_Status
15615WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015616(
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 WDI_ControlBlockType* pWDICtx,
15618 WDI_EventInfoType* pEventData
15619)
15620{
15621 WDI_DelSTARspParamsType wdiDelSTARsp;
15622 WDI_DelSTARspCb wdiDelSTARspCb;
15623 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15626
15627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 -------------------------------------------------------------------------*/
15630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15631 ( NULL == pEventData->pEventData))
15632 {
15633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 }
15638
15639 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15640
15641 /*-------------------------------------------------------------------------
15642 Extract response and send it to UMAC
15643 -------------------------------------------------------------------------*/
15644 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 sizeof(halDelStaRspMsg.delStaRspParams));
15647
15648 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 wdiDelSTARsp.wdiStatus =
15650 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015651
15652 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15653
15654 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15655 if(staType == WDI_STA_ENTRY_SELF)
15656 {
15657 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15658
15659 /* At this point add the self-STA */
15660
15661 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15662 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15663 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15664
15665#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15666#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15667
15668 //all DPU indices are the same for self STA
15669 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15670 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15671 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15672 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15673 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15674 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015675
15676 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 }
15678 else
15679 {
15680 //Delete the station in the table
15681 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15682 }
15683
15684 /*Notify UMAC*/
15685 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15686
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688}/*WDI_ProcessDelSTARsp*/
15689
15690
15691/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015692 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015693==========================================================================*/
15694
15695/**
15696 @brief Process Set BSS Key Rsp function (called when a response
15697 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015698
15699 @param pWDICtx: pointer to the WLAN DAL context
15700 pEventData: pointer to the event information structure
15701
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 @see
15703 @return Result of the function call
15704*/
15705WDI_Status
15706WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015707(
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 WDI_ControlBlockType* pWDICtx,
15709 WDI_EventInfoType* pEventData
15710)
15711{
15712 WDI_Status wdiStatus;
15713 eHalStatus halStatus;
15714 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15716
15717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 -------------------------------------------------------------------------*/
15720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15721 ( NULL == pEventData->pEventData))
15722 {
15723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 }
15728
15729 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15730
15731 /*-------------------------------------------------------------------------
15732 Extract response and send it to UMAC
15733 -------------------------------------------------------------------------*/
15734 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015736
15737 if ( eHAL_STATUS_SUCCESS != halStatus )
15738 {
15739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15740 "Set BSS Key failed with status %s (%d)",
15741 WDI_getHALStatusMsgString(halStatus),
15742 halStatus);
15743 /* send the status to UMAC, don't return from here*/
15744 }
15745
15746 /*Notify UMAC*/
15747 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15748
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015750}/*WDI_ProcessSetBssKeyRsp*/
15751
15752/**
15753 @brief Process Remove BSS Key Rsp function (called when a response
15754 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015755
15756 @param pWDICtx: pointer to the WLAN DAL context
15757 pEventData: pointer to the event information structure
15758
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 @see
15760 @return Result of the function call
15761*/
15762WDI_Status
15763WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015764(
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_ControlBlockType* pWDICtx,
15766 WDI_EventInfoType* pEventData
15767)
15768{
15769 WDI_Status wdiStatus;
15770 eHalStatus halStatus;
15771 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15773
15774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 -------------------------------------------------------------------------*/
15777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15778 ( NULL == pEventData->pEventData))
15779 {
15780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 }
15785
15786 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15787
15788 /*-------------------------------------------------------------------------
15789 Extract response and send it to UMAC
15790 -------------------------------------------------------------------------*/
15791 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793
15794 if ( eHAL_STATUS_SUCCESS != halStatus )
15795 {
15796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15797 "Remove BSS Key failed with status %s (%d )",
15798 WDI_getHALStatusMsgString(halStatus),
15799 halStatus);
15800 /* send the status to UMAC, don't return from here*/
15801 }
15802
15803 /*Notify UMAC*/
15804 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15805
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015807}/*WDI_ProcessSetBssKeyRsp*/
15808
15809
15810/**
15811 @brief Process Set STA Key Rsp function (called when a response
15812 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015813
15814 @param pWDICtx: pointer to the WLAN DAL context
15815 pEventData: pointer to the event information structure
15816
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 @see
15818 @return Result of the function call
15819*/
15820WDI_Status
15821WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015822(
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 WDI_ControlBlockType* pWDICtx,
15824 WDI_EventInfoType* pEventData
15825)
15826{
15827 WDI_Status wdiStatus;
15828 eHalStatus halStatus;
15829 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15831
15832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 -------------------------------------------------------------------------*/
15835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15836 ( NULL == pEventData->pEventData))
15837 {
15838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 }
15843
15844 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15845
15846 /*-------------------------------------------------------------------------
15847 Extract response and send it to UMAC
15848 -------------------------------------------------------------------------*/
15849 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015851
15852 if ( eHAL_STATUS_SUCCESS != halStatus )
15853 {
15854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15855 "Set STA Key failed with status %s (%d)",
15856 WDI_getHALStatusMsgString(halStatus),
15857 halStatus);
15858 /* send the status to UMAC, don't return from here*/
15859 }
15860
15861 /*Notify UMAC*/
15862 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15863
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015865}/*WDI_ProcessSetSTAKeyRsp*/
15866
15867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015870
15871 @param pWDICtx: pointer to the WLAN DAL context
15872 pEventData: pointer to the event information structure
15873
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 @see
15875 @return Result of the function call
15876*/
15877WDI_Status
15878WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015879(
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 WDI_ControlBlockType* pWDICtx,
15881 WDI_EventInfoType* pEventData
15882)
15883{
15884 WDI_Status wdiStatus;
15885 eHalStatus halStatus;
15886 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15888
15889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 -------------------------------------------------------------------------*/
15892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15893 ( NULL == pEventData->pEventData))
15894 {
15895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 }
15900
15901 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15902
15903 /*-------------------------------------------------------------------------
15904 Extract response and send it to UMAC
15905 -------------------------------------------------------------------------*/
15906 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015908
15909 if ( eHAL_STATUS_SUCCESS != halStatus )
15910 {
15911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15912 "Remove STA Key failed with status %s (%d)",
15913 WDI_getHALStatusMsgString(halStatus),
15914 halStatus);
15915 /* send the status to UMAC, don't return from here*/
15916 }
15917
15918 /*Notify UMAC*/
15919 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15920
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015922}/*WDI_ProcessRemoveStaKeyRsp*/
15923
15924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015927
15928 @param pWDICtx: pointer to the WLAN DAL context
15929 pEventData: pointer to the event information structure
15930
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 @see
15932 @return Result of the function call
15933*/
15934WDI_Status
15935WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015936(
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 WDI_ControlBlockType* pWDICtx,
15938 WDI_EventInfoType* pEventData
15939)
15940{
15941 WDI_Status wdiStatus;
15942 eHalStatus halStatus;
15943 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15945
15946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 -------------------------------------------------------------------------*/
15949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15950 ( NULL == pEventData->pEventData))
15951 {
15952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 }
15957
15958 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15959
15960 /*-------------------------------------------------------------------------
15961 Extract response and send it to UMAC
15962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 wpalMemoryCopy( &halStatus,
15964 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 sizeof(halStatus));
15966
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015968
15969 if ( eHAL_STATUS_SUCCESS != halStatus )
15970 {
15971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15972 "Set STA Key failed with status %s (%d)",
15973 WDI_getHALStatusMsgString(halStatus),
15974 halStatus);
15975 /* send the status to UMAC, don't return from here*/
15976 }
15977
15978 /*Notify UMAC*/
15979 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15980
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015982}/*WDI_ProcessSetSTABcastKeyRsp*/
15983
15984/**
15985 @brief Process Remove STA Bcast Key Rsp function (called when a
15986 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015987
15988 @param pWDICtx: pointer to the WLAN DAL context
15989 pEventData: pointer to the event information structure
15990
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 @see
15992 @return Result of the function call
15993*/
15994WDI_Status
15995WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015996(
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 WDI_ControlBlockType* pWDICtx,
15998 WDI_EventInfoType* pEventData
15999)
16000{
16001 WDI_Status wdiStatus;
16002 eHalStatus halStatus;
16003 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16005
16006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 -------------------------------------------------------------------------*/
16009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16010 ( NULL == pEventData->pEventData))
16011 {
16012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 }
16017
16018 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16019
16020 /*-------------------------------------------------------------------------
16021 Extract response and send it to UMAC
16022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 wpalMemoryCopy( &halStatus,
16024 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 sizeof(halStatus));
16026
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
16029 if ( eHAL_STATUS_SUCCESS != halStatus )
16030 {
16031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16032 "Remove STA Key failed with status %s (%d)",
16033 WDI_getHALStatusMsgString(halStatus),
16034 halStatus);
16035 /* send the status to UMAC, don't return from here*/
16036 }
16037
16038 /*Notify UMAC*/
16039 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16040
Jeff Johnsone7245742012-09-05 17:12:55 -070016041 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016042}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16043
16044
16045/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016046 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016047==========================================================================*/
16048
16049/**
16050 @brief Process Add TSpec Rsp function (called when a response
16051 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016052
16053 @param pWDICtx: pointer to the WLAN DAL context
16054 pEventData: pointer to the event information structure
16055
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 @see
16057 @return Result of the function call
16058*/
16059WDI_Status
16060WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016061(
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 WDI_ControlBlockType* pWDICtx,
16063 WDI_EventInfoType* pEventData
16064)
16065{
16066 WDI_Status wdiStatus;
16067 eHalStatus halStatus;
16068 WDI_AddTsRspCb wdiAddTsRspCb;
16069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16070
16071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 -------------------------------------------------------------------------*/
16074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16075 ( NULL == pEventData->pEventData))
16076 {
16077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 }
16082
16083 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16084
16085 /*-------------------------------------------------------------------------
16086 Extract response and send it to UMAC
16087 -------------------------------------------------------------------------*/
16088 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016090
16091 /*Notify UMAC*/
16092 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16093
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016095}/*WDI_ProcessAddTSpecRsp*/
16096
16097
16098/**
16099 @brief Process Del TSpec Rsp function (called when a response
16100 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016101
16102 @param pWDICtx: pointer to the WLAN DAL context
16103 pEventData: pointer to the event information structure
16104
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 @see
16106 @return Result of the function call
16107*/
16108WDI_Status
16109WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016110(
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 WDI_ControlBlockType* pWDICtx,
16112 WDI_EventInfoType* pEventData
16113)
16114{
16115 WDI_Status wdiStatus;
16116 eHalStatus halStatus;
16117 WDI_DelTsRspCb wdiDelTsRspCb;
16118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16119
16120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 -------------------------------------------------------------------------*/
16123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16124 ( NULL == pEventData->pEventData))
16125 {
16126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 }
16131
16132 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16133
16134 /*-------------------------------------------------------------------------
16135 Extract response and send it to UMAC
16136 -------------------------------------------------------------------------*/
16137 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016139
16140 /*Notify UMAC*/
16141 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16142
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016144}/*WDI_ProcessDelTSpecRsp*/
16145
16146/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016149
16150 @param pWDICtx: pointer to the WLAN DAL context
16151 pEventData: pointer to the event information structure
16152
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 @see
16154 @return Result of the function call
16155*/
16156WDI_Status
16157WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016158(
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 WDI_ControlBlockType* pWDICtx,
16160 WDI_EventInfoType* pEventData
16161)
16162{
16163 WDI_Status wdiStatus;
16164 eHalStatus halStatus;
16165 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16167
16168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 -------------------------------------------------------------------------*/
16171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16172 ( NULL == pEventData->pEventData))
16173 {
16174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 }
16179
16180 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16181
16182 /*-------------------------------------------------------------------------
16183 Extract response and send it to UMAC
16184 -------------------------------------------------------------------------*/
16185 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016186 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187
16188 /*Notify UMAC*/
16189 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16190
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192}/*WDI_ProcessUpdateEDCAParamsRsp*/
16193
16194
16195/**
16196 @brief Process Add BA Rsp function (called when a response
16197 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016198
16199 @param pWDICtx: pointer to the WLAN DAL context
16200 pEventData: pointer to the event information structure
16201
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 @see
16203 @return Result of the function call
16204*/
16205WDI_Status
16206WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016207(
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 WDI_ControlBlockType* pWDICtx,
16209 WDI_EventInfoType* pEventData
16210)
16211{
16212 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16213
16214 tAddBASessionRspParams halBASessionRsp;
16215 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16216
Jeff Johnsone7245742012-09-05 17:12:55 -070016217
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16219
16220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 -------------------------------------------------------------------------*/
16223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16224 ( NULL == pEventData->pEventData))
16225 {
16226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 }
16231
16232 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16233
16234 /*-------------------------------------------------------------------------
16235 Extract response and send it to UMAC
16236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 wpalMemoryCopy( &halBASessionRsp,
16238 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016239 sizeof(halBASessionRsp));
16240
16241 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16242
Jeff Johnson43971f52012-07-17 12:26:56 -070016243 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 {
16245 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16246 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16247 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16248 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16249 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16250 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16251 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16252 }
16253
16254 /*Notify UMAC*/
16255 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16256
Jeff Johnsone7245742012-09-05 17:12:55 -070016257 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016258}/*WDI_ProcessAddSessionBARsp*/
16259
16260
16261/**
16262 @brief Process Del BA Rsp function (called when a response
16263 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016264
16265 @param pWDICtx: pointer to the WLAN DAL context
16266 pEventData: pointer to the event information structure
16267
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 @see
16269 @return Result of the function call
16270*/
16271WDI_Status
16272WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016273(
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 WDI_ControlBlockType* pWDICtx,
16275 WDI_EventInfoType* pEventData
16276)
16277{
16278 WDI_Status wdiStatus;
16279 eHalStatus halStatus;
16280 WDI_DelBARspCb wdiDelBARspCb;
16281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16282
16283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 -------------------------------------------------------------------------*/
16286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16287 ( NULL == pEventData->pEventData))
16288 {
16289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 }
16294
16295 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16296
16297 /*-------------------------------------------------------------------------
16298 Extract response and send it to UMAC
16299 -------------------------------------------------------------------------*/
16300 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016302
16303 if ( eHAL_STATUS_SUCCESS == halStatus )
16304 {
16305 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16306 }
16307
16308 /*Notify UMAC*/
16309 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16310
Jeff Johnsone7245742012-09-05 17:12:55 -070016311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016312}/*WDI_ProcessDelBARsp*/
16313
16314#ifdef FEATURE_WLAN_CCX
16315/**
16316 @brief Process TSM Stats Rsp function (called when a response
16317 is being received over the bus from HAL)
16318
16319 @param pWDICtx: pointer to the WLAN DAL context
16320 pEventData: pointer to the event information structure
16321
16322 @see
16323 @return Result of the function call
16324*/
16325WDI_Status
16326WDI_ProcessTsmStatsRsp
16327(
16328 WDI_ControlBlockType* pWDICtx,
16329 WDI_EventInfoType* pEventData
16330)
16331{
16332 WDI_TsmRspCb wdiTsmStatsRspCb;
16333 tTsmStatsRspMsg halTsmStatsRspMsg;
16334 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16336
16337 /*-------------------------------------------------------------------------
16338 Sanity check
16339 -------------------------------------------------------------------------*/
16340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16341 ( NULL == pEventData->pEventData))
16342 {
16343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 WDI_ASSERT(0);
16346 return WDI_STATUS_E_FAILURE;
16347 }
16348
16349 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16350
16351 /*-------------------------------------------------------------------------
16352 Unpack HAL Response Message - the header was already extracted by the
16353 main Response Handling procedure
16354 -------------------------------------------------------------------------*/
16355 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16356 pEventData->pEventData,
16357 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16358
16359 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16360 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16361 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16362 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16363 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16364 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16365 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16366 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16367 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16368 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16369 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16370 halTsmStatsRspMsg.tsmStatsRspParams.status);
16371
16372 /*Notify UMAC*/
16373 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16374
16375 return WDI_STATUS_SUCCESS;
16376}/*WDI_ProcessTsmStatsRsp*/
16377
16378#endif
16379
16380
16381
16382/**
16383 @brief Process Flush AC Rsp function (called when a response
16384 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016385
16386 @param pWDICtx: pointer to the WLAN DAL context
16387 pEventData: pointer to the event information structure
16388
Jeff Johnson295189b2012-06-20 16:38:30 -070016389 @see
16390 @return Result of the function call
16391*/
16392WDI_Status
16393WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016394(
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 WDI_ControlBlockType* pWDICtx,
16396 WDI_EventInfoType* pEventData
16397)
16398{
16399 WDI_Status wdiStatus;
16400 eHalStatus halStatus;
16401 WDI_FlushAcRspCb wdiFlushAcRspCb;
16402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16403
16404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 -------------------------------------------------------------------------*/
16407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16408 ( NULL == pEventData->pEventData))
16409 {
16410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 }
16415
16416 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16417
16418 /*-------------------------------------------------------------------------
16419 Extract response and send it to UMAC
16420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 wpalMemoryCopy( &halStatus,
16422 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016423 sizeof(halStatus));
16424
Jeff Johnsone7245742012-09-05 17:12:55 -070016425 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016426
16427 /*Notify UMAC*/
16428 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16429
Jeff Johnsone7245742012-09-05 17:12:55 -070016430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016431}/*WDI_ProcessFlushAcRsp*/
16432
16433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016436
16437 @param pWDICtx: pointer to the WLAN DAL context
16438 pEventData: pointer to the event information structure
16439
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 @see
16441 @return Result of the function call
16442*/
16443WDI_Status
16444WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016445(
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 WDI_ControlBlockType* pWDICtx,
16447 WDI_EventInfoType* pEventData
16448)
16449{
16450 WDI_Status wdiStatus;
16451 eHalStatus halStatus;
16452 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16454
16455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 -------------------------------------------------------------------------*/
16458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16459 ( NULL == pEventData->pEventData))
16460 {
16461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 }
16466
16467 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16468
16469 /*-------------------------------------------------------------------------
16470 Extract response and send it to UMAC
16471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 wpalMemoryCopy( &halStatus,
16473 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 sizeof(halStatus));
16475
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016477
16478 /*Notify UMAC*/
16479 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16480
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482}/*WDI_ProcessBtAmpEventRsp*/
16483
16484
16485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016488
16489 @param pWDICtx: pointer to the WLAN DAL context
16490 pEventData: pointer to the event information structure
16491
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 @see
16493 @return Result of the function call
16494*/
16495WDI_Status
16496WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016497(
Jeff Johnson295189b2012-06-20 16:38:30 -070016498 WDI_ControlBlockType* pWDICtx,
16499 WDI_EventInfoType* pEventData
16500)
16501{
16502 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16503 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16504 tAddStaSelfRspMsg halAddStaSelfRsp;
16505 WDI_AddStaParams wdiAddSTAParam = {0};
16506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16507
16508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 -------------------------------------------------------------------------*/
16511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16512 ( NULL == pEventData->pEventData))
16513 {
16514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 }
16519
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16522
16523 /*-------------------------------------------------------------------------
16524 Extract response and send it to UMAC
16525 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16527 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16529
16530
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiAddSTASelfParams.wdiStatus =
16532 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016533
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16540
16541 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16542 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16543 WDI_MAC_ADDR_LEN);
16544
16545
16546#ifdef HAL_SELF_STA_PER_BSS
16547
16548 /* At this point add the self-STA */
16549
16550 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16551 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16552 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16553
16554 //all DPU indices are the same for self STA
16555
16556 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16559 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16560 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16561 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16562 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16563
16564 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16565 WDI_MAC_ADDR_LEN);
16566
16567 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16568 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16569
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16572 {
16573 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16574 }
16575#endif
16576
16577 /*Notify UMAC*/
16578 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16579
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016581}/*WDI_ProcessAddSTASelfRsp*/
16582
16583
16584
16585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016588
16589 @param pWDICtx: pointer to the WLAN DAL context
16590 pEventData: pointer to the event information structure
16591
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 @see
16593 @return Result of the function call
16594*/
16595WDI_Status
16596WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016597(
Jeff Johnson295189b2012-06-20 16:38:30 -070016598 WDI_ControlBlockType* pWDICtx,
16599 WDI_EventInfoType* pEventData
16600)
16601{
16602 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16603 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16604 tDelStaSelfRspParams delStaSelfRspParams;
16605 wpt_uint8 ucStaIdx;
16606
16607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16608
16609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 -------------------------------------------------------------------------*/
16612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16613 ( NULL == pEventData->pEventData))
16614 {
16615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 }
16620
16621 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16622
16623 /*-------------------------------------------------------------------------
16624 Extract response and send it to UMAC
16625 -------------------------------------------------------------------------*/
16626
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 (wpt_uint8*)pEventData->pEventData,
16629 sizeof(tDelStaSelfRspParams));
16630
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 wdiDelStaSelfRspParams.wdiStatus =
16632 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016633
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16636 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16637 {
16638 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 delStaSelfRspParams.selfMacAddr,
16641 &ucStaIdx);
16642 if(WDI_STATUS_E_FAILURE == wdiStatus)
16643 {
16644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016645 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 }
16649 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16650 }
16651
16652 /*Notify UMAC*/
16653 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16654
16655 return WDI_STATUS_SUCCESS;
16656}
16657
Jeff Johnsone7245742012-09-05 17:12:55 -070016658#ifdef FEATURE_OEM_DATA_SUPPORT
16659/**
16660 @brief Start Oem Data Rsp function (called when a
16661 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016662
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 @param pWDICtx: pointer to the WLAN DAL context
16664 pEventData: pointer to the event information structure
16665
16666 @see
16667 @return Result of the function call
16668*/
16669#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16670
16671WDI_Status
16672WDI_ProcessStartOemDataRsp
16673(
16674 WDI_ControlBlockType* pWDICtx,
16675 WDI_EventInfoType* pEventData
16676)
16677{
16678 WDI_oemDataRspCb wdiOemDataRspCb;
16679 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16680 tStartOemDataRspParams* halStartOemDataRspParams;
16681
16682 /*-------------------------------------------------------------------------
16683 Sanity check
16684 -------------------------------------------------------------------------*/
16685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16686 ( NULL == pEventData->pEventData))
16687 {
16688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016689 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 WDI_ASSERT(0);
16691 return WDI_STATUS_E_FAILURE;
16692 }
16693
16694 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16695
16696 /*-------------------------------------------------------------------------
16697 Extract response and send it to UMAC
16698 -------------------------------------------------------------------------*/
16699 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16700
16701
16702 //It is the responsibility of the application code to check for failure
16703 //conditions!
16704
16705 //Allocate memory for WDI OEM DATA RSP structure
16706 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16707
16708 if(NULL == wdiOemDataRspParams)
16709 {
16710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16711 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16712 pWDICtx, pEventData, pEventData->pEventData);
16713 WDI_ASSERT(0);
16714 return WDI_STATUS_E_FAILURE;
16715 }
16716
16717 /* Populate WDI structure members */
16718 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16719
16720 /*Notify UMAC*/
16721 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16722
16723 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16724 wpalMemoryFree(wdiOemDataRspParams);
16725
16726 return WDI_STATUS_SUCCESS;
16727}/*WDI_PrcoessStartOemDataRsp*/
16728#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016729
16730/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016732===========================================================================*/
16733
16734/**
16735 @brief Process Channel Switch Rsp function (called when a response
16736 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016737
16738 @param pWDICtx: pointer to the WLAN DAL context
16739 pEventData: pointer to the event information structure
16740
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 @see
16742 @return Result of the function call
16743*/
16744WDI_Status
16745WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016746(
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 WDI_ControlBlockType* pWDICtx,
16748 WDI_EventInfoType* pEventData
16749)
16750{
16751 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16752 WDI_SwitchChRspCb wdiChSwitchRspCb;
16753 tSwitchChannelRspParams halSwitchChannelRsp;
16754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16755
16756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 -------------------------------------------------------------------------*/
16759 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16760 ( NULL == pEventData->pEventData))
16761 {
16762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 }
16767
16768 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16769
16770 /*-------------------------------------------------------------------------
16771 Extract response and send it to UMAC
16772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 (wpt_uint8*)pEventData->pEventData,
16775 sizeof(halSwitchChannelRsp));
16776
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 wdiSwitchChRsp.wdiStatus =
16778 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16780
16781#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016782 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016783#endif
16784
16785 /*Notify UMAC*/
16786 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16787
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016789}/*WDI_ProcessChannelSwitchRsp*/
16790
16791
16792/**
16793 @brief Process Config STA Rsp function (called when a response
16794 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016795
16796 @param pWDICtx: pointer to the WLAN DAL context
16797 pEventData: pointer to the event information structure
16798
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 @see
16800 @return Result of the function call
16801*/
16802WDI_Status
16803WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016804(
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 WDI_ControlBlockType* pWDICtx,
16806 WDI_EventInfoType* pEventData
16807)
16808{
16809 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16810 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16811 WDI_AddStaParams wdiAddSTAParam;
16812
16813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016815
Jeff Johnsone7245742012-09-05 17:12:55 -070016816 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16818
16819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 -------------------------------------------------------------------------*/
16822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16823 ( NULL == pEventData->pEventData))
16824 {
16825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 }
16830
16831 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16832
16833 /*-------------------------------------------------------------------------
16834 Extract response and send it to UMAC
16835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16837 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 sizeof(halConfigStaRsp.configStaRspParams));
16839
16840
16841 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16842 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16843 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16844 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16845 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16846
16847 /* MAC Address of STA - take from cache as it does not come back in the
16848 response*/
16849 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016852
16853 wdiCfgSTAParams.wdiStatus =
16854 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016855
16856 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16857 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16858 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16859
16860 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16861 {
16862 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16863 {
16864 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16867 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016868
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 wdiAddSTAParam.ucHTCapable =
16873 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16874 wdiAddSTAParam.ucStaType =
16875 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16876
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16879 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881
16882 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16883 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16884 WDI_MAC_ADDR_LEN);
16885
16886 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16887 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16888 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016889
16890 if ( NULL == pBSSSes )
16891 {
16892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16893 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016894
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016896 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 }
16898
16899 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 halConfigStaRsp.configStaRspParams.ucBcastSig;
16908 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16909 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016910
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16912 }
16913 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16914 {
16915 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016923 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016928 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016930 halConfigStaRsp.configStaRspParams.ucUcastSig;
16931 }
16932 }
16933
16934 /*Notify UMAC*/
16935 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16936
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016938}/*WDI_ProcessConfigStaRsp*/
16939
16940
16941/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016942 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016944
16945 @param pWDICtx: pointer to the WLAN DAL context
16946 pEventData: pointer to the event information structure
16947
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 @see
16949 @return Result of the function call
16950*/
16951WDI_Status
16952WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016953(
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 WDI_ControlBlockType* pWDICtx,
16955 WDI_EventInfoType* pEventData
16956)
16957{
16958 WDI_Status wdiStatus;
16959 eHalStatus halStatus;
16960 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16961
16962 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16965
16966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 -------------------------------------------------------------------------*/
16969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16970 ( NULL == pEventData->pEventData))
16971 {
16972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 }
16977
16978 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16979
16980 wpalMutexAcquire(&pWDICtx->wptMutex);
16981
16982 /*If the link is being transitioned to idle - the BSS is to be deleted
16983 - this type of ending a session is possible when UMAC has failed an
16984 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16987 {
16988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16992 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16993 &pBSSSes);
16994
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 /*-----------------------------------------------------------------------
16996 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 -----------------------------------------------------------------------*/
16999 if ( NULL == pBSSSes )
17000 {
17001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17002 "Set link response received outside association session");
17003 }
17004 else
17005 {
17006 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17007 will be del BSS coming after this to stop the beaconing & cleaning up the
17008 sessions*/
17009 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17010 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17011 {
17012 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 -----------------------------------------------------------------------*/
17015 WDI_DeleteSession(pWDICtx, pBSSSes);
17016
17017 /*-----------------------------------------------------------------------
17018 Check to see if this association is in progress - if so disable the
17019 flag as this has ended
17020 -----------------------------------------------------------------------*/
17021 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 /*Association no longer in progress */
17024 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17025 /*Association no longer in progress - prepare pending assoc for processing*/
17026 WDI_DequeueAssocRequest(pWDICtx);
17027 }
17028 }
17029 }
17030 }
17031 /* If the link state has been set to POST ASSOC, reset the "association in
17032 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17035 {
17036 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17037 WDI_DequeueAssocRequest(pWDICtx);
17038 }
17039
17040 wpalMutexRelease(&pWDICtx->wptMutex);
17041
17042 /*-------------------------------------------------------------------------
17043 Extract response and send it to UMAC
17044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wpalMemoryCopy( &halStatus,
17046 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 sizeof(halStatus));
17048
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017050
17051 /*Notify UMAC*/
17052 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17053
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017055}/*WDI_ProcessSetLinkStateRsp*/
17056
17057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017060
17061 @param pWDICtx: pointer to the WLAN DAL context
17062 pEventData: pointer to the event information structure
17063
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 @see
17065 @return Result of the function call
17066*/
17067WDI_Status
17068WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017069(
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ControlBlockType* pWDICtx,
17071 WDI_EventInfoType* pEventData
17072)
17073{
17074 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17075 WDI_GetStatsRspCb wdiGetStatsRspCb;
17076 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017077
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17079
17080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 -------------------------------------------------------------------------*/
17083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17084 ( NULL == pEventData->pEventData))
17085 {
17086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 }
17091
17092 /*-------------------------------------------------------------------------
17093 Extract response and send it to UMAC
17094 -------------------------------------------------------------------------*/
17095 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17096
17097 /*allocate the stats response buffer */
17098 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17099 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17100 + sizeof(WDI_GetStatsRspParamsType));
17101
17102 if(NULL == wdiGetStatsRsp)
17103 {
17104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17105 "Failed to allocate memory in Get Stats Response %x %x %x ",
17106 pWDICtx, pEventData, pEventData->pEventData);
17107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 }
17110
17111 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17112
17113 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17114 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17115 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17116 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17117 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17118 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17119
17120 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17121 wpalMemoryCopy(wdiGetStatsRsp + 1,
17122 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17123 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17124
17125 /*Notify UMAC*/
17126 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17127
17128 wpalMemoryFree(wdiGetStatsRsp);
17129
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017131}/*WDI_ProcessGetStatsRsp*/
17132
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017133#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17134/**
17135 @brief Process Get Roam Rssi Rsp function (called when a response is
17136 being received over the bus from HAL)
17137
17138 @param pWDICtx: pointer to the WLAN DAL context
17139 pEventData: pointer to the event information structure
17140
17141 @see
17142 @return Result of the function call
17143*/
17144WDI_Status
17145WDI_ProcessGetRoamRssiRsp
17146(
17147 WDI_ControlBlockType* pWDICtx,
17148 WDI_EventInfoType* pEventData
17149)
17150{
17151 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17152 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17153 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17155
17156 /*-------------------------------------------------------------------------
17157 Sanity check
17158 -------------------------------------------------------------------------*/
17159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17160 ( NULL == pEventData->pEventData))
17161 {
17162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17163 "%s: Invalid parameters", __func__);
17164 WDI_ASSERT(0);
17165 return WDI_STATUS_E_FAILURE;
17166 }
17167
17168 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17169 if(NULL == wdiGetRoamRssiRspCb)
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17172 "%s: call back function is NULL", __func__);
17173 WDI_ASSERT(0);
17174 return WDI_STATUS_E_FAILURE;
17175 }
17176
17177 /*-------------------------------------------------------------------------
17178 Extract response and send it to UMAC
17179 -------------------------------------------------------------------------*/
17180 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17181 pEventData->pEventData,
17182 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17183
17184 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17185 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17186 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17187
17188 /*Notify UMAC*/
17189 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17190
17191 return WDI_STATUS_SUCCESS;
17192}/*WDI_ProcessGetRoamRssiRsp*/
17193#endif
17194
Jeff Johnson295189b2012-06-20 16:38:30 -070017195
17196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017197 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017198 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017199
17200 @param pWDICtx: pointer to the WLAN DAL context
17201 pEventData: pointer to the event information structure
17202
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 @see
17204 @return Result of the function call
17205*/
17206WDI_Status
17207WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017208(
Jeff Johnson295189b2012-06-20 16:38:30 -070017209 WDI_ControlBlockType* pWDICtx,
17210 WDI_EventInfoType* pEventData
17211)
17212{
17213 WDI_Status wdiStatus;
17214 eHalStatus halStatus;
17215 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17217
17218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 -------------------------------------------------------------------------*/
17221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17222 ( NULL == pEventData->pEventData))
17223 {
17224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 }
17229
17230 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17231
17232 /*-------------------------------------------------------------------------
17233 Extract response and send it to UMAC
17234 -------------------------------------------------------------------------*/
17235 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017236 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017237
17238 /*Notify UMAC*/
17239 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17240
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017242}/*WDI_ProcessUpdateCfgRsp*/
17243
17244
17245
17246/**
17247 @brief Process Add BA Rsp function (called when a response
17248 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017249
17250 @param pWDICtx: pointer to the WLAN DAL context
17251 pEventData: pointer to the event information structure
17252
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 @see
17254 @return Result of the function call
17255*/
17256WDI_Status
17257WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017258(
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 WDI_ControlBlockType* pWDICtx,
17260 WDI_EventInfoType* pEventData
17261)
17262{
17263 WDI_AddBARspCb wdiAddBARspCb;
17264
17265 tAddBARspParams halAddBARsp;
17266 WDI_AddBARspinfoType wdiAddBARsp;
17267
17268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17269
17270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 -------------------------------------------------------------------------*/
17273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17274 ( NULL == pEventData->pEventData))
17275 {
17276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 }
17281
17282 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17283
17284 /*-------------------------------------------------------------------------
17285 Extract response and send it to UMAC
17286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 wpalMemoryCopy( &halAddBARsp,
17288 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 sizeof(halAddBARsp));
17290
17291 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17292
Jeff Johnson43971f52012-07-17 12:26:56 -070017293 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 {
17295 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17296 }
17297
17298 /*Notify UMAC*/
17299 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17300
Jeff Johnsone7245742012-09-05 17:12:55 -070017301 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017302}/*WDI_ProcessAddSessionBARsp*/
17303
17304/**
17305 @brief Process Add BA Rsp function (called when a response
17306 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017307
17308 @param pWDICtx: pointer to the WLAN DAL context
17309 pEventData: pointer to the event information structure
17310
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 @see
17312 @return Result of the function call
17313*/
17314WDI_Status
17315WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017316(
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 WDI_ControlBlockType* pWDICtx,
17318 WDI_EventInfoType* pEventData
17319)
17320{
17321 WDI_TriggerBARspCb wdiTriggerBARspCb;
17322
17323 tTriggerBARspParams* halTriggerBARsp;
17324 tTriggerBaRspCandidate* halBaCandidate;
17325 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17326 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17327 wpt_uint16 index;
17328 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017329 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17331
17332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 -------------------------------------------------------------------------*/
17335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17336 ( NULL == pEventData->pEventData))
17337 {
17338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 }
17343
17344 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17345
17346 /*-------------------------------------------------------------------------
17347 Extract response and send it to UMAC
17348 -------------------------------------------------------------------------*/
17349 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17350
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017351 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17352
17353 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17354 {
17355 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017358
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017359 if(NULL == wdiTriggerBARsp)
17360 {
17361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17362 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17363 pWDICtx, pEventData, pEventData->pEventData);
17364 WDI_ASSERT(0);
17365 return WDI_STATUS_E_FAILURE;
17366 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017367
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017368 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17369
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17373
17374 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17375 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17376
17377 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17378 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17381 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17382 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17387 }
17388 wdiTriggerBARspCandidate++;
17389 halBaCandidate++;
17390 }
17391 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017392 else
17393 {
17394 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17395
17396 if(NULL == wdiTriggerBARsp)
17397 {
17398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17399 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17400 pWDICtx, pEventData, pEventData->pEventData);
17401 WDI_ASSERT(0);
17402 return WDI_STATUS_E_FAILURE;
17403 }
17404
17405 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17406
17407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017408
17409 /*Notify UMAC*/
17410 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17411
17412 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414}/*WDI_ProcessAddSessionBARsp*/
17415
17416/**
17417 @brief Process Update Beacon Params Rsp function (called when a response
17418 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017419
17420 @param pWDICtx: pointer to the WLAN DAL context
17421 pEventData: pointer to the event information structure
17422
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 @see
17424 @return Result of the function call
17425*/
17426WDI_Status
17427WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017428(
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 WDI_ControlBlockType* pWDICtx,
17430 WDI_EventInfoType* pEventData
17431)
17432{
17433 WDI_Status wdiStatus;
17434 eHalStatus halStatus;
17435 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17437
17438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 -------------------------------------------------------------------------*/
17441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17442 ( NULL == pEventData->pEventData))
17443 {
17444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 }
17449
17450 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17451
17452 /*-------------------------------------------------------------------------
17453 Extract response and send it to UMAC
17454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wpalMemoryCopy( &halStatus,
17456 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017457 sizeof(halStatus));
17458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017460
17461 /*Notify UMAC*/
17462 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17463
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017465}/*WDI_ProcessUpdateBeaconParamsRsp*/
17466
17467/**
17468 @brief Process Send Beacon template Rsp function (called when a response
17469 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017470
17471 @param pWDICtx: pointer to the WLAN DAL context
17472 pEventData: pointer to the event information structure
17473
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 @see
17475 @return Result of the function call
17476*/
17477WDI_Status
17478WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017479(
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 WDI_ControlBlockType* pWDICtx,
17481 WDI_EventInfoType* pEventData
17482)
17483{
17484 WDI_Status wdiStatus;
17485 eHalStatus halStatus;
17486 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17488
17489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 -------------------------------------------------------------------------*/
17492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17493 ( NULL == pEventData->pEventData))
17494 {
17495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 }
17500
17501 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17502
17503 /*-------------------------------------------------------------------------
17504 Extract response and send it to UMAC
17505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 wpalMemoryCopy( &halStatus,
17507 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 sizeof(halStatus));
17509
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
17512 /*Notify UMAC*/
17513 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17514
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516}/*WDI_ProcessSendBeaconParamsRsp*/
17517
Jeff Johnsone7245742012-09-05 17:12:55 -070017518
Jeff Johnson295189b2012-06-20 16:38:30 -070017519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017522
17523 @param pWDICtx: pointer to the WLAN DAL context
17524 pEventData: pointer to the event information structure
17525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 @see
17527 @return Result of the function call
17528*/
17529WDI_Status
17530WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017531(
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 WDI_ControlBlockType* pWDICtx,
17533 WDI_EventInfoType* pEventData
17534)
17535{
17536 WDI_Status wdiStatus;
17537 eHalStatus halStatus;
17538 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17540
17541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 -------------------------------------------------------------------------*/
17544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17545 ( NULL == pEventData->pEventData))
17546 {
17547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 }
17552
17553 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17554
17555 /*-------------------------------------------------------------------------
17556 Extract response and send it to UMAC
17557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 wpalMemoryCopy( &halStatus,
17559 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 sizeof(halStatus));
17561
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563
17564 /*Notify UMAC*/
17565 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17566
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17569
17570 /**
17571 @brief Process Set Max Tx Power Rsp function (called when a response
17572 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017573
17574 @param pWDICtx: pointer to the WLAN DAL context
17575 pEventData: pointer to the event information structure
17576
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 @see
17578 @return Result of the function call
17579*/
17580WDI_Status
17581WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017582(
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 WDI_ControlBlockType* pWDICtx,
17584 WDI_EventInfoType* pEventData
17585)
17586{
17587 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017588
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017590
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17593
17594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 -------------------------------------------------------------------------*/
17597 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17598 ( NULL == pEventData->pEventData))
17599 {
17600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 }
17605
17606 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17607
17608 /*-------------------------------------------------------------------------
17609 Extract response and send it to UMAC
17610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017611 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17612 pEventData->pEventData,
17613 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017614
17615 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17616 {
17617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17618 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 }
17622
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017625 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017626
17627 /*Notify UMAC*/
17628 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17629
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017631}
17632
schangd82195a2013-03-13 18:41:24 -070017633 /**
17634 @brief Process Set Tx Power Rsp function (called when a response
17635 is being received over the bus from HAL)
17636
17637 @param pWDICtx: pointer to the WLAN DAL context
17638 pEventData: pointer to the event information structure
17639
17640 @see
17641 @return Result of the function call
17642*/
17643WDI_Status
17644WDI_ProcessSetTxPowerRsp
17645(
17646 WDI_ControlBlockType* pWDICtx,
17647 WDI_EventInfoType* pEventData
17648)
17649{
17650 tSetTxPwrRspMsg halTxpowerrsp;
17651 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17652 WDA_SetTxPowerRspCb wdiReqStatusCb;
17653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17654
17655 /*-------------------------------------------------------------------------
17656 Sanity check
17657 -------------------------------------------------------------------------*/
17658 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17659 ( NULL == pEventData->pEventData))
17660 {
17661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17662 "%s: Invalid parameters", __func__);
17663 WDI_ASSERT(0);
17664 return WDI_STATUS_E_FAILURE;
17665 }
17666
17667 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17668
17669 /*-------------------------------------------------------------------------
17670 Extract response and send it to UMAC
17671 -------------------------------------------------------------------------*/
17672 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17673 pEventData->pEventData,
17674 sizeof(halTxpowerrsp.setTxPwrRspParams));
17675
17676 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17677 {
17678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17679 "Error status returned in Set Tx Power Response ");
17680 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17681 return WDI_STATUS_E_FAILURE;
17682 }
17683
17684 wdiSetTxPowerRspMsg.wdiStatus =
17685 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17686
17687 /*Notify UMAC*/
17688 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17689
17690 return WDI_STATUS_SUCCESS;
17691}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017692#ifdef FEATURE_WLAN_TDLS
17693/**
17694 @brief Process TDLS Link Establish Rsp function (called
17695 when a response is being received over the bus from HAL)
17696
17697 @param pWDICtx: pointer to the WLAN DAL context
17698 pEventData: pointer to the event information structure
17699
17700 @see
17701 @return Result of the function call
17702*/
17703WDI_Status
17704WDI_ProcessLinkEstablishReqRsp
17705(
17706 WDI_ControlBlockType* pWDICtx,
17707 WDI_EventInfoType* pEventData
17708)
17709{
17710 WDI_Status wdiStatus;
17711 eHalStatus halStatus;
17712 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
17713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17714
17715 /*-------------------------------------------------------------------------
17716 Sanity check
17717 -------------------------------------------------------------------------*/
17718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17719 ( NULL == pEventData->pEventData))
17720 {
17721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17722 "%s: Invalid parameters", __func__);
17723 WDI_ASSERT(0);
17724 return WDI_STATUS_E_FAILURE;
17725 }
17726
17727 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17728
17729 /*-------------------------------------------------------------------------
17730 Extract response and send it to UMAC
17731 -------------------------------------------------------------------------*/
17732 wpalMemoryCopy( &halStatus,
17733 pEventData->pEventData,
17734 sizeof(halStatus));
17735
17736 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17737
17738 /*Notify UMAC*/
17739 wdiTDLSLinkEstablishReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17740
17741 return WDI_STATUS_SUCCESS;
17742}/*WDI_ProcessLinkEstablishReqRsp*/
17743#endif
schangd82195a2013-03-13 18:41:24 -070017744
Jeff Johnson295189b2012-06-20 16:38:30 -070017745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017746 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017748
17749 @param pWDICtx: pointer to the WLAN DAL context
17750 pEventData: pointer to the event information structure
17751
Jeff Johnson295189b2012-06-20 16:38:30 -070017752 @see
17753 @return Result of the function call
17754*/
17755WDI_Status
17756WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017757(
Jeff Johnson295189b2012-06-20 16:38:30 -070017758 WDI_ControlBlockType* pWDICtx,
17759 WDI_EventInfoType* pEventData
17760)
17761{
17762 WDI_Status wdiStatus;
17763 eHalStatus halStatus;
17764 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17766
17767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 -------------------------------------------------------------------------*/
17770 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17771 ( NULL == pEventData->pEventData))
17772 {
17773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 }
17778
17779 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17780
17781 /*-------------------------------------------------------------------------
17782 Extract response and send it to UMAC
17783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017784 wpalMemoryCopy( &halStatus,
17785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 sizeof(halStatus));
17787
Jeff Johnsone7245742012-09-05 17:12:55 -070017788 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017789
17790 /*Notify UMAC*/
17791 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17792
Jeff Johnsone7245742012-09-05 17:12:55 -070017793 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017794}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017795/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017796 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017797 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017798
17799 @param pWDICtx: pointer to the WLAN DAL context
17800 pEventData: pointer to the event information structure
17801
Jeff Johnson295189b2012-06-20 16:38:30 -070017802 @see
17803 @return Result of the function call
17804*/
17805WDI_Status
17806WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017807(
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 WDI_ControlBlockType* pWDICtx,
17809 WDI_EventInfoType* pEventData
17810)
17811{
17812 WDI_Status wdiStatus;
17813 eHalStatus halStatus;
17814 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017815 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17817
17818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 -------------------------------------------------------------------------*/
17821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17822 ( NULL == pEventData->pEventData))
17823 {
17824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 }
17829
17830 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17831
17832 /*-------------------------------------------------------------------------
17833 Extract response and send it to UMAC
17834 -------------------------------------------------------------------------*/
17835 halStatus = *((eHalStatus*)pEventData->pEventData);
17836
Jeff Johnsone7245742012-09-05 17:12:55 -070017837 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017838
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017839 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17840 * Other module states are taken care by PMC.
17841 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17842 */
17843 if (wdiStatus != WDI_STATUS_SUCCESS) {
17844
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17846 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17847 halStatus);
17848 /* Call Back is not required as we are putting the DXE in FULL
17849 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017850 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17851
17852 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17854 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17855 WDI_ASSERT(0);
17856 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017857 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 /*Notify UMAC*/
17859 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17860
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862}/*WDI_ProcessEnterImpsRsp*/
17863
17864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017867
17868 @param pWDICtx: pointer to the WLAN DAL context
17869 pEventData: pointer to the event information structure
17870
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 @see
17872 @return Result of the function call
17873*/
17874WDI_Status
17875WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017876(
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 WDI_ControlBlockType* pWDICtx,
17878 WDI_EventInfoType* pEventData
17879)
17880{
17881 WDI_Status wdiStatus;
17882 eHalStatus halStatus;
17883 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017884 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17886
17887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 -------------------------------------------------------------------------*/
17890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17891 ( NULL == pEventData->pEventData))
17892 {
17893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 }
17898
17899 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17900
17901 /*-------------------------------------------------------------------------
17902 Extract response and send it to UMAC
17903 -------------------------------------------------------------------------*/
17904 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017906
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053017907 if (halStatus != eHAL_STATUS_SUCCESS)
17908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17909 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
17910
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017912 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17913 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17914 {
17915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17916 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17917 WDI_ASSERT(0);
17918 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 /*Notify UMAC*/
17920 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17921
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017923}/*WDI_ProcessExitImpsRsp*/
17924
17925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017928
17929 @param pWDICtx: pointer to the WLAN DAL context
17930 pEventData: pointer to the event information structure
17931
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 @see
17933 @return Result of the function call
17934*/
17935WDI_Status
17936WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017937(
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 WDI_ControlBlockType* pWDICtx,
17939 WDI_EventInfoType* pEventData
17940)
17941{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017942 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17943 tHalEnterBmpsRspParams halEnterBmpsRsp;
17944 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17945 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017946 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17948
17949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 -------------------------------------------------------------------------*/
17952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17953 ( NULL == pEventData->pEventData))
17954 {
17955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 }
17960
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017962 Extract response and send it to UMAC
17963 -------------------------------------------------------------------------*/
17964 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17965 {
17966 wpalMemoryCopy( &halEnterBmpsRsp,
17967 pEventData->pEventData,
17968 sizeof(halEnterBmpsRsp));
17969
17970 //Used to print debug message
17971 halStatus = halEnterBmpsRsp.status;
17972 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17973 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17974 }
17975 else
17976 {
17977 halStatus = *((eHalStatus*)pEventData->pEventData);
17978 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17979 }
17980
17981 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017983 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17984 * Other module states are taken care by PMC.
17985 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17986 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017987 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17988 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017989
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017991 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17992 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017993 /* Call Back is not required as we are putting the DXE in FULL
17994 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017995 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17996 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17997 {
17998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17999 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18000 WDI_ASSERT(0);
18001 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018002 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018003 }
18004
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018006 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018007
Jeff Johnsone7245742012-09-05 17:12:55 -070018008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018009}/*WDI_ProcessEnterBmpsRsp*/
18010
18011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018014
18015 @param pWDICtx: pointer to the WLAN DAL context
18016 pEventData: pointer to the event information structure
18017
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 @see
18019 @return Result of the function call
18020*/
18021WDI_Status
18022WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018023(
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 WDI_ControlBlockType* pWDICtx,
18025 WDI_EventInfoType* pEventData
18026)
18027{
Jeff Johnson295189b2012-06-20 16:38:30 -070018028 eHalStatus halStatus;
18029 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018030 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018031 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18032 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18034
18035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 -------------------------------------------------------------------------*/
18038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18039 ( NULL == pEventData->pEventData))
18040 {
18041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 }
18046
18047 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18048
18049 /*-------------------------------------------------------------------------
18050 Extract response and send it to UMAC
18051 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018052
18053 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18054 {
18055 wpalMemoryCopy( &halExitBmpsRsp,
18056 pEventData->pEventData,
18057 sizeof(halExitBmpsRsp));
18058
18059 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18060 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18061 }
18062 else
18063 {
18064 halStatus = *((eHalStatus*)pEventData->pEventData);
18065 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18066 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018067
18068 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018069 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18070 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18071 {
18072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18073 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18074 WDI_ASSERT(0);
18075 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18077
18078 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018079 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018080
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018082}/*WDI_ProcessExitBmpsRsp*/
18083
18084/**
18085 @brief Process Enter UAPSD Rsp function (called when a response
18086 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018087
18088 @param pWDICtx: pointer to the WLAN DAL context
18089 pEventData: pointer to the event information structure
18090
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 @see
18092 @return Result of the function call
18093*/
18094WDI_Status
18095WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018096(
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 WDI_ControlBlockType* pWDICtx,
18098 WDI_EventInfoType* pEventData
18099)
18100{
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018102 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018104 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18105
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18107
18108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 -------------------------------------------------------------------------*/
18111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18112 ( NULL == pEventData->pEventData))
18113 {
18114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018115 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018118 }
18119
18120 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18121
18122 /*-------------------------------------------------------------------------
18123 Extract response and send it to UMAC
18124 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018125 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18126 {
18127 wpalMemoryCopy( &halEnterUapsdRsp,
18128 pEventData->pEventData,
18129 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018130
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018131 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18132 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18133 }
18134 else
18135 {
18136 halStatus = *((eHalStatus*)pEventData->pEventData);
18137 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18138 }
18139
18140 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 {
18142 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18143 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18144 // the traffic to decide when to suspend the trigger frames when there is no traffic
18145 // activity on the trigger enabled ACs
18146 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18147
18148#ifdef WLAN_PERF
18149 // Increment the BD signature to refresh the fast path BD utilization
18150 pWDICtx->uBdSigSerialNum++;
18151#endif
18152 }
18153
18154 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018155 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018156
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018158}/*WDI_ProcessEnterUapsdRsp*/
18159
18160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018161 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018163
18164 @param pWDICtx: pointer to the WLAN DAL context
18165 pEventData: pointer to the event information structure
18166
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 @see
18168 @return Result of the function call
18169*/
18170WDI_Status
18171WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018172(
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 WDI_ControlBlockType* pWDICtx,
18174 WDI_EventInfoType* pEventData
18175)
18176{
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 eHalStatus halStatus;
18178 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018179 tHalExitUapsdRspParams halExitUapsdRsp;
18180 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18182
18183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 -------------------------------------------------------------------------*/
18186 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18187 ( NULL == pEventData->pEventData))
18188 {
18189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 }
18194
18195 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18196
18197 /*-------------------------------------------------------------------------
18198 Extract response and send it to UMAC
18199 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018200 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18201 {
18202 wpalMemoryCopy( &halExitUapsdRsp,
18203 pEventData->pEventData,
18204 sizeof(halExitUapsdRsp));
18205
18206 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18207 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18208 }
18209 else
18210 {
18211 halStatus = *((eHalStatus*)pEventData->pEventData);
18212 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18213 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18215 // directly instead of the FW WQ.
18216 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18217
18218#ifdef WLAN_PERF
18219 // Increment the BD signature to refresh the fast path BD utilization
18220 pWDICtx->uBdSigSerialNum++;
18221#endif
18222
18223 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018224 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018225
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018227}/*WDI_ProcessExitUapsdRsp*/
18228
18229/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018230 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018231 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018232
18233 @param pWDICtx: pointer to the WLAN DAL context
18234 pEventData: pointer to the event information structure
18235
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 @see
18237 @return Result of the function call
18238*/
18239WDI_Status
18240WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018241(
Jeff Johnson295189b2012-06-20 16:38:30 -070018242 WDI_ControlBlockType* pWDICtx,
18243 WDI_EventInfoType* pEventData
18244)
18245{
18246 WDI_Status wdiStatus;
18247 eHalStatus halStatus;
18248 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18250
18251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018253 -------------------------------------------------------------------------*/
18254 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18255 ( NULL == pEventData->pEventData))
18256 {
18257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018261 }
18262
18263 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18264
18265 /*-------------------------------------------------------------------------
18266 Extract response and send it to UMAC
18267 -------------------------------------------------------------------------*/
18268 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018270
18271 /*Notify UMAC*/
18272 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18273
Jeff Johnsone7245742012-09-05 17:12:55 -070018274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018275}/*WDI_ProcessSetUapsdAcParamsRsp*/
18276
18277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018280
18281 @param pWDICtx: pointer to the WLAN DAL context
18282 pEventData: pointer to the event information structure
18283
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 @see
18285 @return Result of the function call
18286*/
18287WDI_Status
18288WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018289(
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 WDI_ControlBlockType* pWDICtx,
18291 WDI_EventInfoType* pEventData
18292)
18293{
18294 WDI_Status wdiStatus;
18295 eHalStatus halStatus;
18296 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18298
18299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 -------------------------------------------------------------------------*/
18302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18303 ( NULL == pEventData->pEventData))
18304 {
18305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 }
18310
18311 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18312
18313 /*-------------------------------------------------------------------------
18314 Extract response and send it to UMAC
18315 -------------------------------------------------------------------------*/
18316 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018317 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018318
18319 /*Notify UMAC*/
18320 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18321
Jeff Johnsone7245742012-09-05 17:12:55 -070018322 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018323}/*WDI_ProcessUpdateUapsdParamsRsp*/
18324
18325/**
18326 @brief Process Configure RXP filter Rsp function (called when a
18327 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018328
18329 @param pWDICtx: pointer to the WLAN DAL context
18330 pEventData: pointer to the event information structure
18331
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 @see
18333 @return Result of the function call
18334*/
18335WDI_Status
18336WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018337(
Jeff Johnson295189b2012-06-20 16:38:30 -070018338 WDI_ControlBlockType* pWDICtx,
18339 WDI_EventInfoType* pEventData
18340)
18341{
18342 WDI_Status wdiStatus;
18343 eHalStatus halStatus;
18344 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18346
18347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 -------------------------------------------------------------------------*/
18350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18351 ( NULL == pEventData->pEventData))
18352 {
18353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 }
18358
18359 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18360
18361 /*-------------------------------------------------------------------------
18362 Extract response and send it to UMAC
18363 -------------------------------------------------------------------------*/
18364 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018365 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018366
18367 /*Notify UMAC*/
18368 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18369
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018371}/*WDI_ProcessConfigureRxpFilterRsp*/
18372
18373/**
18374 @brief Process Set beacon filter Rsp function (called when a
18375 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018376
18377 @param pWDICtx: pointer to the WLAN DAL context
18378 pEventData: pointer to the event information structure
18379
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 @see
18381 @return Result of the function call
18382*/
18383WDI_Status
18384WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018385(
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 WDI_ControlBlockType* pWDICtx,
18387 WDI_EventInfoType* pEventData
18388)
18389{
18390 WDI_Status wdiStatus;
18391 eHalStatus halStatus;
18392 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18394
18395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 -------------------------------------------------------------------------*/
18398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18399 ( NULL == pEventData->pEventData))
18400 {
18401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 }
18406
18407 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18408
18409 /*-------------------------------------------------------------------------
18410 Extract response and send it to UMAC
18411 -------------------------------------------------------------------------*/
18412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018414
18415 /*Notify UMAC*/
18416 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18417
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018419}/*WDI_ProcessSetBeaconFilterRsp*/
18420
18421/**
18422 @brief Process remove beacon filter Rsp function (called when a
18423 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018424
18425 @param pWDICtx: pointer to the WLAN DAL context
18426 pEventData: pointer to the event information structure
18427
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 @see
18429 @return Result of the function call
18430*/
18431WDI_Status
18432WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018433(
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 WDI_ControlBlockType* pWDICtx,
18435 WDI_EventInfoType* pEventData
18436)
18437{
18438 WDI_Status wdiStatus;
18439 eHalStatus halStatus;
18440 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18442
18443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 -------------------------------------------------------------------------*/
18446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18447 ( NULL == pEventData->pEventData))
18448 {
18449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 }
18454
18455 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18456
18457 /*-------------------------------------------------------------------------
18458 Extract response and send it to UMAC
18459 -------------------------------------------------------------------------*/
18460 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018462
18463 /*Notify UMAC*/
18464 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18465
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018467}/*WDI_ProcessRemBeaconFilterRsp*/
18468
18469/**
18470 @brief Process set RSSI thresholds Rsp function (called when a
18471 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018472
18473 @param pWDICtx: pointer to the WLAN DAL context
18474 pEventData: pointer to the event information structure
18475
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 @see
18477 @return Result of the function call
18478*/
18479WDI_Status
18480WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018481(
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 WDI_ControlBlockType* pWDICtx,
18483 WDI_EventInfoType* pEventData
18484)
18485{
18486 WDI_Status wdiStatus;
18487 eHalStatus halStatus;
18488 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18490
18491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 -------------------------------------------------------------------------*/
18494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18495 ( NULL == pEventData->pEventData))
18496 {
18497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 }
18502
18503 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18504
18505 /*-------------------------------------------------------------------------
18506 Extract response and send it to UMAC
18507 -------------------------------------------------------------------------*/
18508 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018509 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018510
18511 /*Notify UMAC*/
18512 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18513
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018515}/*WDI_ProcessSetRSSIThresoldsRsp*/
18516
18517/**
18518 @brief Process host offload Rsp function (called when a
18519 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018520
18521 @param pWDICtx: pointer to the WLAN DAL context
18522 pEventData: pointer to the event information structure
18523
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 @see
18525 @return Result of the function call
18526*/
18527WDI_Status
18528WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018529(
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 WDI_ControlBlockType* pWDICtx,
18531 WDI_EventInfoType* pEventData
18532)
18533{
18534 WDI_Status wdiStatus;
18535 eHalStatus halStatus;
18536 WDI_HostOffloadCb wdiHostOffloadCb;
18537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18538
18539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 -------------------------------------------------------------------------*/
18542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18543 ( NULL == pEventData->pEventData))
18544 {
18545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 }
18550
18551 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18552
18553 /*-------------------------------------------------------------------------
18554 Extract response and send it to UMAC
18555 -------------------------------------------------------------------------*/
18556 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018558
18559 /*Notify UMAC*/
18560 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18561
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018563}/*WDI_ProcessHostOffloadRsp*/
18564
18565/**
18566 @brief Process keep alive Rsp function (called when a
18567 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018568
18569 @param pWDICtx: pointer to the WLAN DAL context
18570 pEventData: pointer to the event information structure
18571
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 @see
18573 @return Result of the function call
18574*/
18575WDI_Status
18576WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018577(
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 WDI_ControlBlockType* pWDICtx,
18579 WDI_EventInfoType* pEventData
18580)
18581{
18582 WDI_Status wdiStatus;
18583 eHalStatus halStatus;
18584 WDI_KeepAliveCb wdiKeepAliveCb;
18585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18587 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18588
18589
18590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 -------------------------------------------------------------------------*/
18593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18594 ( NULL == pEventData->pEventData))
18595 {
18596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 }
18601
Jeff Johnsone7245742012-09-05 17:12:55 -070018602 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18603
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 /*-------------------------------------------------------------------------
18605 Extract response and send it to UMAC
18606 -------------------------------------------------------------------------*/
18607 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018609
18610 /*Notify UMAC*/
18611 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18612
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018614}/*WDI_ProcessKeepAliveRsp*/
18615
18616/**
18617 @brief Process wowl add ptrn Rsp function (called when a
18618 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018619
18620 @param pWDICtx: pointer to the WLAN DAL context
18621 pEventData: pointer to the event information structure
18622
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 @see
18624 @return Result of the function call
18625*/
18626WDI_Status
18627WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018628(
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 WDI_ControlBlockType* pWDICtx,
18630 WDI_EventInfoType* pEventData
18631)
18632{
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 eHalStatus halStatus;
18634 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018635 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18636 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18637
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18639
18640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 -------------------------------------------------------------------------*/
18643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18644 ( NULL == pEventData->pEventData))
18645 {
18646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 }
18651
18652 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18653
18654 /*-------------------------------------------------------------------------
18655 Extract response and send it to UMAC
18656 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018657 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18658 {
18659 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18660 pEventData->pEventData,
18661 sizeof(halAddWowlBcastPtrRsp));
18662
18663 wdiWowlAddBcPtrRsp.wdiStatus =
18664 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18665 }
18666 else
18667 {
18668 halStatus = *((eHalStatus*)pEventData->pEventData);
18669 wdiWowlAddBcPtrRsp.wdiStatus =
18670 WDI_HAL_2_WDI_STATUS(halStatus);
18671 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018672
18673 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018674 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018675
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018677}/*WDI_ProcessWowlAddBcPtrnRsp*/
18678
18679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018680 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018681 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018682
18683 @param pWDICtx: pointer to the WLAN DAL context
18684 pEventData: pointer to the event information structure
18685
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 @see
18687 @return Result of the function call
18688*/
18689WDI_Status
18690WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018691(
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 WDI_ControlBlockType* pWDICtx,
18693 WDI_EventInfoType* pEventData
18694)
18695{
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 eHalStatus halStatus;
18697 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018698 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18699 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18701
18702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 -------------------------------------------------------------------------*/
18705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18706 ( NULL == pEventData->pEventData))
18707 {
18708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 }
18713
18714 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18715
18716 /*-------------------------------------------------------------------------
18717 Extract response and send it to UMAC
18718 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018719 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18720 {
18721 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18722 pEventData->pEventData,
18723 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018724
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018725 wdiWowlDelBcstPtrRsp.wdiStatus =
18726 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18727 }
18728 else
18729 {
18730 halStatus = *((eHalStatus*)pEventData->pEventData);
18731 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18732 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018734 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018735
Jeff Johnsone7245742012-09-05 17:12:55 -070018736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018737}/*WDI_ProcessWowlDelBcPtrnRsp*/
18738
18739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018740 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018742
18743 @param pWDICtx: pointer to the WLAN DAL context
18744 pEventData: pointer to the event information structure
18745
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 @see
18747 @return Result of the function call
18748*/
18749WDI_Status
18750WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018751(
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 WDI_ControlBlockType* pWDICtx,
18753 WDI_EventInfoType* pEventData
18754)
18755{
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 eHalStatus halStatus;
18757 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018758 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18759 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18761
18762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 -------------------------------------------------------------------------*/
18765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18766 ( NULL == pEventData->pEventData))
18767 {
18768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018772 }
18773
18774 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18775
18776 /*-------------------------------------------------------------------------
18777 Extract response and send it to UMAC
18778 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018779 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18780 {
18781 wpalMemoryCopy( &halEnterWowlRspParams,
18782 (wpt_uint8*)pEventData->pEventData,
18783 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018784
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018785 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18786 wdiwowlEnterRsp.status =
18787 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18788 }
18789 else
18790 {
18791 halStatus = *((eHalStatus*)pEventData->pEventData);
18792 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18793 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018795 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018796
Jeff Johnsone7245742012-09-05 17:12:55 -070018797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018798}/*WDI_ProcessWowlEnterRsp*/
18799
18800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018801 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018803
18804 @param pWDICtx: pointer to the WLAN DAL context
18805 pEventData: pointer to the event information structure
18806
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 @see
18808 @return Result of the function call
18809*/
18810WDI_Status
18811WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018812(
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 WDI_ControlBlockType* pWDICtx,
18814 WDI_EventInfoType* pEventData
18815)
18816{
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 eHalStatus halStatus;
18818 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018819 tHalExitWowlRspParams halExitWowlRspParams;
18820 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18821
Jeff Johnson295189b2012-06-20 16:38:30 -070018822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18823
18824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 -------------------------------------------------------------------------*/
18827 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18828 ( NULL == pEventData->pEventData))
18829 {
18830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018834 }
18835
18836 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18837
18838 /*-------------------------------------------------------------------------
18839 Extract response and send it to UMAC
18840 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018841 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18842 {
18843 wpalMemoryCopy( &halExitWowlRspParams,
18844 pEventData->pEventData,
18845 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018846
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018847 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18848 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18849
18850 }
18851 else
18852 {
18853 halStatus = *((eHalStatus*)pEventData->pEventData);
18854 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18855 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018857 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018858
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018860}/*WDI_ProcessWowlExitRsp*/
18861
18862/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 (called when a response is being received over the bus
18865 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018866
18867 @param pWDICtx: pointer to the WLAN DAL context
18868 pEventData: pointer to the event information structure
18869
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 @see
18871 @return Result of the function call
18872*/
18873WDI_Status
18874WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018875(
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 WDI_ControlBlockType* pWDICtx,
18877 WDI_EventInfoType* pEventData
18878)
18879{
18880 WDI_Status wdiStatus;
18881 eHalStatus halStatus;
18882 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18884
18885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 -------------------------------------------------------------------------*/
18888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18889 ( NULL == pEventData->pEventData))
18890 {
18891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 }
18896
18897 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18898
18899 /*-------------------------------------------------------------------------
18900 Extract response and send it to UMAC
18901 -------------------------------------------------------------------------*/
18902 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018903 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018904
18905 /*Notify UMAC*/
18906 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18907
Jeff Johnsone7245742012-09-05 17:12:55 -070018908 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018909}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18910
18911
18912/**
18913 @brief Process Nv download(called when a response
18914 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018915
18916 @param pWDICtx: pointer to the WLAN DAL context
18917 pEventData: pointer to the event information structure
18918
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 @see
18920 @return Result of the function call
18921*/
18922WDI_Status
18923WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018924(
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 WDI_ControlBlockType* pWDICtx,
18926 WDI_EventInfoType* pEventData
18927)
18928{
18929
18930 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18931 tHalNvImgDownloadRspParams halNvDownloadRsp;
18932 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18933
18934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 -------------------------------------------------------------------------*/
18937 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18938 ( NULL == pEventData->pEventData))
18939 {
18940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 }
18945
18946 /*-------------------------------------------------------------------------
18947 Extract response and send it to UMAC
18948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 wpalMemoryCopy( &halNvDownloadRsp,
18950 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 sizeof(halNvDownloadRsp));
18952
18953 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18954
18955 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18957 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 {
18959 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 }
18962 else
18963 {
18964 /*Reset the Nv related global information in WDI context information */
18965 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18966 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18967 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18968 /*call WDA callback function for last fragment */
18969 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18970 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18971 }
18972
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018974}
18975#ifdef WLAN_FEATURE_VOWIFI_11R
18976/**
18977 @brief Process Add TSpec Rsp function (called when a response
18978 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018979
18980 @param pWDICtx: pointer to the WLAN DAL context
18981 pEventData: pointer to the event information structure
18982
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 @see
18984 @return Result of the function call
18985*/
18986WDI_Status
18987WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018988(
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 WDI_ControlBlockType* pWDICtx,
18990 WDI_EventInfoType* pEventData
18991)
18992{
18993 WDI_Status wdiStatus;
18994 tAggrAddTsRspParams aggrAddTsRsp;
18995 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18997
18998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019000 -------------------------------------------------------------------------*/
19001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19002 ( NULL == pEventData->pEventData))
19003 {
19004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 }
19009
19010 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19011
19012 /*-------------------------------------------------------------------------
19013 Extract response and send it to UMAC
19014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 wpalMemoryCopy( &aggrAddTsRsp,
19016 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 sizeof(aggrAddTsRsp));
19018
19019 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019021
19022 /*Notify UMAC*/
19023 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19024
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019026}/*WDI_ProcessAddTSpecRsp*/
19027#endif /* WLAN_FEATURE_VOWIFI_11R */
19028
19029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019030 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019032
19033 @param pWDICtx: pointer to the WLAN DAL context
19034 pEventData: pointer to the event information structure
19035
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 @see
19037 @return Result of the function call
19038*/
19039WDI_Status
19040WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019041(
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 WDI_ControlBlockType* pWDICtx,
19043 WDI_EventInfoType* pEventData
19044)
19045{
19046 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19047 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19048 tHalHostResumeRspParams hostResumeRspMsg;
19049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19050
19051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 -------------------------------------------------------------------------*/
19054 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19055 ( NULL == pEventData->pEventData))
19056 {
19057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019058 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 }
19062
19063 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19064
19065 /*-------------------------------------------------------------------------
19066 Extract response and send it to UMAC
19067 -------------------------------------------------------------------------*/
19068
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 (wpt_uint8*)pEventData->pEventData,
19071 sizeof(hostResumeRspMsg));
19072
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 wdiResumeRspParams.wdiStatus =
19074 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019075
19076 /*Notify UMAC*/
19077 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19078
19079 return WDI_STATUS_SUCCESS;
19080}
19081
19082/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019085
19086 @param pWDICtx: pointer to the WLAN DAL context
19087 pEventData: pointer to the event information structure
19088
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 @see
19090 @return Result of the function call
19091*/
19092WDI_Status
19093WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019094(
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 WDI_ControlBlockType* pWDICtx,
19096 WDI_EventInfoType* pEventData
19097)
19098{
19099 WDI_Status wdiStatus;
19100 eHalStatus halStatus;
19101 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19103
19104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 -------------------------------------------------------------------------*/
19107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19108 ( NULL == pEventData->pEventData))
19109 {
19110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019115
19116 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019117
19118 /*-------------------------------------------------------------------------
19119 Extract response and send it to UMAC
19120 -------------------------------------------------------------------------*/
19121 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019122 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019123
19124 /*Notify UMAC*/
19125 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19126
Jeff Johnsone7245742012-09-05 17:12:55 -070019127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019128}/*WDI_ProcessSetTxPerTrackingRsp*/
19129
19130/*==========================================================================
19131 Indications from HAL
19132 ==========================================================================*/
19133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019134 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 indication of this kind is being received over the bus
19136 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019137
19138 @param pWDICtx: pointer to the WLAN DAL context
19139 pEventData: pointer to the event information structure
19140
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 @see
19142 @return Result of the function call
19143*/
19144WDI_Status
19145WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019146(
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 WDI_ControlBlockType* pWDICtx,
19148 WDI_EventInfoType* pEventData
19149)
19150{
19151 WDI_LowLevelIndType wdiInd;
19152 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19154
19155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019156 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 -------------------------------------------------------------------------*/
19158 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19159 ( NULL == pEventData->pEventData))
19160 {
19161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 }
19166
19167 /*-------------------------------------------------------------------------
19168 Extract indication and send it to UMAC
19169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019170 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19171 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 sizeof(tHalRSSINotification));
19173
19174 /*Fill in the indication parameters*/
19175 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19176 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19177 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19178 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19179 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19180 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19181 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19182 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19183 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19184 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19185 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19186 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19187 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019188 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19189 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019190
ltimariu034f7d62013-01-24 18:54:33 -080019191 if ( pWDICtx->wdiLowLevelIndCB )
19192 {
19193 /*Notify UMAC of indication*/
19194 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19195 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019196
19197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019198}/*WDI_ProcessLowRSSIInd*/
19199
19200
19201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 an indication of this kind is being received over the
19204 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019205
19206 @param pWDICtx: pointer to the WLAN DAL context
19207 pEventData: pointer to the event information structure
19208
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 @see
19210 @return Result of the function call
19211*/
19212WDI_Status
19213WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019214(
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 WDI_ControlBlockType* pWDICtx,
19216 WDI_EventInfoType* pEventData
19217)
19218{
19219 WDI_Status wdiStatus;
19220 eHalStatus halStatus;
19221 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019222 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19224
19225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 -------------------------------------------------------------------------*/
19228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19229 ( NULL == pEventData->pEventData))
19230 {
19231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019236 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019237 /*-------------------------------------------------------------------------
19238 Extract indication and send it to UMAC
19239 -------------------------------------------------------------------------*/
19240 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19241 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019242 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019243
19244 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019245 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019246 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19247 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019248 if ( pWDICtx->wdiLowLevelIndCB )
19249 {
19250 /*Notify UMAC*/
19251 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019253
19254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019255}/*WDI_ProcessMissedBeaconInd*/
19256
19257
19258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 an indication of this kind is being received over the
19261 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019262
19263 @param pWDICtx: pointer to the WLAN DAL context
19264 pEventData: pointer to the event information structure
19265
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 @see
19267 @return Result of the function call
19268*/
19269WDI_Status
19270WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019271(
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 WDI_ControlBlockType* pWDICtx,
19273 WDI_EventInfoType* pEventData
19274)
19275{
19276 WDI_Status wdiStatus;
19277 eHalStatus halStatus;
19278 WDI_LowLevelIndType wdiInd;
19279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19280
19281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 -------------------------------------------------------------------------*/
19284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19285 ( NULL == pEventData->pEventData))
19286 {
19287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 }
19292
19293 /*-------------------------------------------------------------------------
19294 Extract indication and send it to UMAC
19295 -------------------------------------------------------------------------*/
19296 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19297 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019298 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019299
19300 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019301 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 /* ! TO DO - fill in from HAL struct:
19303 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19304
ltimariu034f7d62013-01-24 18:54:33 -080019305 if ( pWDICtx->wdiLowLevelIndCB )
19306 {
19307 /*Notify UMAC*/
19308 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19309 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019310
19311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019312}/*WDI_ProcessUnkAddrFrameInd*/
19313
19314
19315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019316 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 indication of this kind is being received over the bus
19318 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019319
19320 @param pWDICtx: pointer to the WLAN DAL context
19321 pEventData: pointer to the event information structure
19322
Jeff Johnson295189b2012-06-20 16:38:30 -070019323 @see
19324 @return Result of the function call
19325*/
19326WDI_Status
19327WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019328(
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 WDI_ControlBlockType* pWDICtx,
19330 WDI_EventInfoType* pEventData
19331)
19332{
19333 WDI_LowLevelIndType wdiInd;
19334 tpSirMicFailureInd pHalMicFailureInd;
19335
19336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19337
19338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 -------------------------------------------------------------------------*/
19341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19342 ( NULL == pEventData->pEventData))
19343 {
19344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019349
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19351 /*-------------------------------------------------------------------------
19352 Extract indication and send it to UMAC
19353 -------------------------------------------------------------------------*/
19354
19355 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19358 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19359 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19360 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19361 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19362 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19363 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19364 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019365 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019369 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 pHalMicFailureInd->info.keyId;
19371 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19372 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19373 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19374 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019375
19376 if ( pWDICtx->wdiLowLevelIndCB )
19377 {
19378 /*Notify UMAC*/
19379 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19380 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019381
19382 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019383}/*WDI_ProcessMicFailureInd*/
19384
19385
19386/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019387 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 an indication of this kind is being received over the
19389 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019390
19391 @param pWDICtx: pointer to the WLAN DAL context
19392 pEventData: pointer to the event information structure
19393
Jeff Johnson295189b2012-06-20 16:38:30 -070019394 @see
19395 @return Result of the function call
19396*/
19397WDI_Status
19398WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019399(
Jeff Johnson295189b2012-06-20 16:38:30 -070019400 WDI_ControlBlockType* pWDICtx,
19401 WDI_EventInfoType* pEventData
19402)
19403{
19404 WDI_Status wdiStatus;
19405 eHalStatus halStatus;
19406 WDI_LowLevelIndType wdiInd;
19407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19408
19409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 -------------------------------------------------------------------------*/
19412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19413 ( NULL == pEventData->pEventData))
19414 {
19415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019419 }
19420
19421 /*-------------------------------------------------------------------------
19422 Extract indication and send it to UMAC
19423 -------------------------------------------------------------------------*/
19424
19425 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19426 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019427 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019428
19429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19430 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019431
Jeff Johnson295189b2012-06-20 16:38:30 -070019432 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019433 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19434 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019435
ltimariu034f7d62013-01-24 18:54:33 -080019436 if ( pWDICtx->wdiLowLevelIndCB )
19437 {
19438 /*Notify UMAC*/
19439 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19440 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019441
19442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019443}/*WDI_ProcessFatalErrorInd*/
19444
19445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019446 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 an indication of this kind is being received over the
19448 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019449
19450 @param pWDICtx: pointer to the WLAN DAL context
19451 pEventData: pointer to the event information structure
19452
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 @see
19454 @return Result of the function call
19455*/
19456WDI_Status
19457WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019458(
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 WDI_ControlBlockType* pWDICtx,
19460 WDI_EventInfoType* pEventData
19461)
19462{
19463 tDeleteStaContextParams halDelSTACtx;
19464 WDI_LowLevelIndType wdiInd;
19465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19466
19467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 -------------------------------------------------------------------------*/
19470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19471 ( NULL == pEventData->pEventData))
19472 {
19473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 }
19478
19479 /*-------------------------------------------------------------------------
19480 Extract indication and send it to UMAC
19481 -------------------------------------------------------------------------*/
19482
19483 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 wpalMemoryCopy( &halDelSTACtx,
19485 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 sizeof(halDelSTACtx));
19487
19488 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490
19491 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19492 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19493 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19494 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19495
Jeff Johnsone7245742012-09-05 17:12:55 -070019496 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019498 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19501 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019502
ltimariu034f7d62013-01-24 18:54:33 -080019503 if ( pWDICtx->wdiLowLevelIndCB )
19504 {
19505 /*Notify UMAC*/
19506 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19507 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019508
19509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019510}/*WDI_ProcessDelSTAInd*/
19511
19512/**
19513*@brief Process Coex Indication function (called when
19514 an indication of this kind is being received over the
19515 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019516
19517 @param pWDICtx: pointer to the WLAN DAL context
19518 pEventData: pointer to the event information structure
19519
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 @see
19521 @return Result of the function call
19522*/
19523WDI_Status
19524WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019525(
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 WDI_ControlBlockType* pWDICtx,
19527 WDI_EventInfoType* pEventData
19528)
19529{
19530 WDI_LowLevelIndType wdiInd;
19531 tCoexIndMsg halCoexIndMsg;
19532 wpt_uint32 index;
19533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19534
19535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 -------------------------------------------------------------------------*/
19538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19539 ( NULL == pEventData->pEventData ))
19540 {
19541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 }
19546
19547 /*-------------------------------------------------------------------------
19548 Extract indication and send it to UMAC
19549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19551 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 sizeof(halCoexIndMsg.coexIndParams) );
19553
19554 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 wdiInd.wdiIndicationType = WDI_COEX_IND;
19556 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19558 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019559 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 }
19561
19562 // DEBUG
19563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19564 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19566 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19567 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19568 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19569 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019570
ltimariu034f7d62013-01-24 18:54:33 -080019571 if ( pWDICtx->wdiLowLevelIndCB )
19572 {
19573 /*Notify UMAC*/
19574 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19575 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019576
19577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019578}/*WDI_ProcessCoexInd*/
19579
19580/**
19581*@brief Process Tx Complete Indication function (called when
19582 an indication of this kind is being received over the
19583 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019584
19585 @param pWDICtx: pointer to the WLAN DAL context
19586 pEventData: pointer to the event information structure
19587
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 @see
19589 @return Result of the function call
19590*/
19591WDI_Status
19592WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019593(
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 WDI_ControlBlockType* pWDICtx,
19595 WDI_EventInfoType* pEventData
19596)
19597{
19598 WDI_LowLevelIndType wdiInd;
19599 tTxComplIndMsg halTxComplIndMsg;
19600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19601
19602 /*-------------------------------------------------------------------------
19603 Sanity check
19604 -------------------------------------------------------------------------*/
19605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19606 ( NULL == pEventData->pEventData ))
19607 {
19608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 WDI_ASSERT( 0 );
19611 return WDI_STATUS_E_FAILURE;
19612 }
19613
19614 /*-------------------------------------------------------------------------
19615 Extract indication and send it to UMAC
19616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19618 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019619 sizeof(halTxComplIndMsg.txComplParams) );
19620
19621 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19623 wdiInd.wdiIndicationData.tx_complete_status
19624 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019625
ltimariu034f7d62013-01-24 18:54:33 -080019626 if ( pWDICtx->wdiLowLevelIndCB )
19627 {
19628 /*Notify UMAC*/
19629 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19630 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019631
19632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019633}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019634#ifdef FEATURE_WLAN_TDLS
19635/**
19636*@brief Process TDLS Indication function (called when
19637 an indication of this kind is being received over the
19638 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019639
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019640 @param pWDICtx: pointer to the WLAN DAL context
19641 pEventData: pointer to the event information structure
19642
19643 @see
19644 @return Result of the function call
19645*/
19646WDI_Status
19647WDI_ProcessTdlsInd
19648(
19649 WDI_ControlBlockType* pWDICtx,
19650 WDI_EventInfoType* pEventData
19651)
19652{
19653 WDI_LowLevelIndType wdiInd;
19654 tTdlsIndMsg halTdlsIndMsg;
19655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19656
19657 /*-------------------------------------------------------------------------
19658 Sanity check
19659 -------------------------------------------------------------------------*/
19660 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19661 ( NULL == pEventData->pEventData ))
19662 {
19663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19664 "%s: Invalid parameters", __func__);
19665 WDI_ASSERT( 0 );
19666 return WDI_STATUS_E_FAILURE;
19667 }
19668
19669 /*-------------------------------------------------------------------------
19670 Extract indication and send it to UMAC
19671 -------------------------------------------------------------------------*/
19672 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19673 pEventData->pEventData,
19674 sizeof(halTdlsIndMsg.tdlsIndParams) );
19675
19676 /*Fill in the indication parameters*/
19677 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19678
19679 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19680 = halTdlsIndMsg.tdlsIndParams.status;
19681
19682 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19683 = halTdlsIndMsg.tdlsIndParams.staIdx;
19684
19685 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19686 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19687
19688 /*Notify UMAC*/
19689 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19690
19691 return WDI_STATUS_SUCCESS;
19692}/*WDI_ProcessTdlsInd*/
19693#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019694/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019695*@brief Process Noa Start Indication function (called when
19696 an indication of this kind is being received over the
19697 bus from HAL)
19698
19699 @param pWDICtx: pointer to the WLAN DAL context
19700 pEventData: pointer to the event information structure
19701
19702 @see
19703 @return Result of the function call
19704*/
19705WDI_Status
19706WDI_ProcessP2pNoaStartInd
19707(
19708 WDI_ControlBlockType* pWDICtx,
19709 WDI_EventInfoType* pEventData
19710)
19711{
19712 WDI_LowLevelIndType wdiInd;
19713 tNoaStartIndMsg halNoaStartIndMsg;
19714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19715
19716 /*-------------------------------------------------------------------------
19717 Sanity check
19718 -------------------------------------------------------------------------*/
19719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19720 ( NULL == pEventData->pEventData ))
19721 {
19722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19723 "%s: Invalid parameters", __func__);
19724 WDI_ASSERT( 0 );
19725 return WDI_STATUS_E_FAILURE;
19726 }
19727
19728 /*-------------------------------------------------------------------------
19729 Extract indication and send it to UMAC
19730 -------------------------------------------------------------------------*/
19731 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19732 pEventData->pEventData,
19733 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19734
19735 /*Fill in the indication parameters*/
19736 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19737
19738 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19739 = halNoaStartIndMsg.noaStartIndParams.status;
19740
19741 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19742 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19743
19744 /*Notify UMAC*/
19745 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19746
19747 return WDI_STATUS_SUCCESS;
19748}/*WDI_ProcessNoaAttrInd*/
19749
19750/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019751*@brief Process Noa Attr Indication function (called when
19752 an indication of this kind is being received over the
19753 bus from HAL)
19754
19755 @param pWDICtx: pointer to the WLAN DAL context
19756 pEventData: pointer to the event information structure
19757
19758 @see
19759 @return Result of the function call
19760*/
19761WDI_Status
19762WDI_ProcessP2pNoaAttrInd
19763(
19764 WDI_ControlBlockType* pWDICtx,
19765 WDI_EventInfoType* pEventData
19766)
19767{
19768 WDI_LowLevelIndType wdiInd;
19769 tNoaAttrIndMsg halNoaAttrIndMsg;
19770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19771
19772 /*-------------------------------------------------------------------------
19773 Sanity check
19774 -------------------------------------------------------------------------*/
19775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19776 ( NULL == pEventData->pEventData ))
19777 {
19778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019780 WDI_ASSERT( 0 );
19781 return WDI_STATUS_E_FAILURE;
19782 }
19783
19784 /*-------------------------------------------------------------------------
19785 Extract indication and send it to UMAC
19786 -------------------------------------------------------------------------*/
19787 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19788 pEventData->pEventData,
19789 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19790
19791 /*Fill in the indication parameters*/
19792 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019793
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19795 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019796
Jeff Johnson295189b2012-06-20 16:38:30 -070019797 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19798 = halNoaAttrIndMsg.noaAttrIndParams.index;
19799 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19800 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19801 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19802 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019803
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19805 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19806 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19807 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19808 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19809 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19810 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19811 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019812
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19814 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19815 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19816 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19817 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19818 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19819 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19820 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19821
ltimariu034f7d62013-01-24 18:54:33 -080019822 if ( pWDICtx->wdiLowLevelIndCB )
19823 {
19824 /*Notify UMAC*/
19825 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19826 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019827
19828 return WDI_STATUS_SUCCESS;
19829}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019830
19831/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019832 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 an indication of this kind is being received over the
19834 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019835
19836 @param pWDICtx: pointer to the WLAN DAL context
19837 pEventData: pointer to the event information structure
19838
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 @see
19840 @return Result of the function call
19841*/
19842WDI_Status
19843WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019844(
Jeff Johnson295189b2012-06-20 16:38:30 -070019845 WDI_ControlBlockType* pWDICtx,
19846 WDI_EventInfoType* pEventData
19847)
19848{
19849 WDI_LowLevelIndType wdiInd;
19850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019851
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 /*-------------------------------------------------------------------------
19853 Extract indication and send it to UMAC
19854 -------------------------------------------------------------------------*/
19855 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19857
ltimariu034f7d62013-01-24 18:54:33 -080019858 if ( pWDICtx->wdiLowLevelIndCB )
19859 {
19860 /*Notify UMAC*/
19861 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19862 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019863
Jeff Johnsone7245742012-09-05 17:12:55 -070019864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019865}/*WDI_ProcessTxPerHitInd*/
19866
Jeff Johnson295189b2012-06-20 16:38:30 -070019867/**
19868 @brief WDI_ProcessFTMCommandReq
19869 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019870
19871 @param pWDICtx: pointer to the WLAN DAL context
19872 pEventData: pointer to the event information structure
19873
Jeff Johnson295189b2012-06-20 16:38:30 -070019874 @see
19875 @return Result of the function call
19876*/
19877WDI_Status
19878WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019879(
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 WDI_ControlBlockType* pWDICtx,
19881 WDI_EventInfoType* pEventData
19882)
19883{
19884 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19885 wpt_uint8 *ftmCommandBuffer = NULL;
19886 wpt_uint16 dataOffset;
19887 wpt_uint16 bufferSize;
19888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 -------------------------------------------------------------------------*/
19891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19892 ( NULL == pEventData->pEventData))
19893
19894 {
19895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 }
19900
19901 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19902
19903 /* Get MSG Buffer */
19904 WDI_GetMessageBuffer(pWDICtx,
19905 WDI_FTM_CMD_REQ,
19906 ftmCommandReq->bodyLength,
19907 &ftmCommandBuffer,
19908 &dataOffset,
19909 &bufferSize);
19910
19911 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19912 ftmCommandReq->FTMCommandBody,
19913 ftmCommandReq->bodyLength);
19914
19915 /* Send MSG */
19916 return WDI_SendMsg(pWDICtx,
19917 ftmCommandBuffer,
19918 bufferSize,
19919 pEventData->pCBfnc,
19920 pEventData->pUserData,
19921 WDI_FTM_CMD_RESP);
19922}
19923
19924/**
19925 @brief WDI_ProcessFTMCommandRsp
19926 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019927
19928 @param pWDICtx: pointer to the WLAN DAL context
19929 pEventData: pointer to the event information structure
19930
Jeff Johnson295189b2012-06-20 16:38:30 -070019931 @see
19932 @return Result of the function call
19933*/
19934WDI_Status
19935WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019936(
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 WDI_ControlBlockType* pWDICtx,
19938 WDI_EventInfoType* pEventData
19939)
19940{
19941 WDI_FTMCommandRspCb ftmCMDRspCb;
19942 tProcessPttRspParams *ftmCMDRspData = NULL;
19943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19944
19945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 -------------------------------------------------------------------------*/
19948 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19949 ( NULL == pEventData->pEventData))
19950 {
19951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 }
19956
19957 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19958
19959 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19960
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19962 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19964
19965 /*Notify UMAC*/
19966 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19967
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019969}
Jeff Johnson295189b2012-06-20 16:38:30 -070019970/**
19971 @brief WDI_ProcessHalDumpCmdReq
19972 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019973
19974 @param pWDICtx: pointer to the WLAN DAL context
19975 pEventData: pointer to the event information structure
19976
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 @see
19978 @return Result of the function call
19979*/
19980WDI_Status
19981WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019982(
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 WDI_ControlBlockType* pWDICtx,
19984 WDI_EventInfoType* pEventData
19985)
19986{
19987 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19988 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19989 wpt_uint16 usDataOffset = 0;
19990 wpt_uint16 usSendSize = 0;
19991 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993
19994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019996 -------------------------------------------------------------------------*/
19997 if (( NULL == pEventData ) ||
19998 ( NULL == pEventData->pEventData) ||
19999 ( NULL == pEventData->pCBfnc ))
20000 {
20001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 }
20006
20007 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20008 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20009
20010 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020015 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020021
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 /*-----------------------------------------------------------------------
20023 Get message buffer
20024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20027 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020028 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020029 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20030 {
20031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20032 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20033 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 }
20037
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 wpalMemoryCopy( pSendBuffer+usDataOffset,
20039 &halDumpCmdReqMsg.dumpCmdReqParams,
20040 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020041
20042 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020044
20045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020046 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20049 wdiHALDumpCmdRspCb, pEventData->pUserData,
20050 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020051}
20052
20053/**
20054 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 Process hal Dump Command Response from HAL, simply route to HDD
20056
20057 @param pWDICtx: pointer to the WLAN DAL context
20058 pEventData: pointer to the event information structure
20059
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 @see
20061 @return Result of the function call
20062*/
20063WDI_Status
20064WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020065(
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 WDI_ControlBlockType* pWDICtx,
20067 WDI_EventInfoType* pEventData
20068)
20069{
20070 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020071 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20073
20074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 -------------------------------------------------------------------------*/
20077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20078 ( NULL == pEventData->pEventData))
20079 {
20080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 }
20085
Jeff Johnsone7245742012-09-05 17:12:55 -070020086 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020087
20088 /*Initialize the WDI Response structure */
20089 wdiHALDumpCmdRsp.usBufferLen = 0;
20090 wdiHALDumpCmdRsp.pBuffer = NULL;
20091
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020092 wpalMemoryCopy( &halDumpCmdRspParams,
20093 pEventData->pEventData,
20094 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020095
20096 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020097 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020098
20099 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020100 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 {
20102 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020103 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20104 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20105
20106 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20107 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020108 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020110
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 /*Notify UMAC*/
20112 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20113
20114 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20115 {
20116 /* Free the allocated buffer */
20117 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20118 }
20119 return WDI_STATUS_SUCCESS;
20120}
20121
20122/*==========================================================================
20123 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020124
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020126 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020127==========================================================================*/
20128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 when it wishes to send up a notification like the ones
20131 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020132
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
20135 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020137 wctsNotifyCBData: the callback data of the user
20138
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020140
20141 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020142*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020143void
Jeff Johnson295189b2012-06-20 16:38:30 -070020144WDI_NotifyMsgCTSCB
20145(
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 WCTS_NotifyEventType wctsEvent,
20148 void* wctsNotifyCBData
20149)
20150{
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20153
20154 if (NULL == pWDICtx )
20155 {
20156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020159 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 }
20161
20162 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20163 {
20164 /* callback presumably occurred after close */
20165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020166 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 }
20169
20170 if ( WCTS_EVENT_OPEN == wctsEvent )
20171 {
20172 /*Flag must be set atomically as it is checked from incoming request
20173 functions*/
20174 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176
20177 /*Nothing to do - so try to dequeue any pending request that may have
20178 occurred while we were trying to establish this*/
20179 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020180 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020181 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 {
20184 /*Flag must be set atomically as it is checked from incoming request
20185 functions*/
20186 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020187 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020188
20189 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 wpalMutexRelease(&pWDICtx->wptMutex);
20192
20193 /*Notify that the Control Channel is closed */
20194 wpalEventSet(&pWDICtx->wctsActionEvent);
20195 }
20196
20197}/*WDI_NotifyMsgCTSCB*/
20198
20199
20200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 when it wishes to send up a packet received over the
20203 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020204
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020206
20207 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020208 pMsg: the packet
20209 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020210 wctsRxMsgCBData: the callback data of the user
20211
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020213
20214 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020215*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020216void
20217WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020218(
Jeff Johnsone7245742012-09-05 17:12:55 -070020219 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 void* pMsg,
20221 wpt_uint32 uLen,
20222 void* wctsRxMsgCBData
20223)
20224{
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 tHalMsgHeader *pHalMsgHeader;
20226 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20229
20230 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020233 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 ( uLen < sizeof(tHalMsgHeader)))
20235 {
20236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020239 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 }
20241
20242 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20243 {
20244 /* callback presumably occurred after close */
20245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020246 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 }
20249
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 context - so no serialization is necessary here
20252 ! - revisit this assumption */
20253
20254 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20255
20256 if ( uLen != pHalMsgHeader->msgLen )
20257 {
20258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20259 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20261 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 }
20263
20264 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20265
20266 /*The message itself starts after the header*/
20267 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20268 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20269 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20270 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20271
20272
20273 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20274 {
20275 /*Stop the timer as the response was received */
20276 /*!UT - check for potential race conditions between stop and response */
20277 wpalTimerStop(&pWDICtx->wptResponseTimer);
20278 }
20279 /* Check if we receive a response message which is not expected */
20280 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20281 {
20282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20283 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20284 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020285 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20287 pWDICtx->wdiExpectedResponse);
20288 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20289 return;
20290 }
20291
20292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20293 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20294
20295 /*Post response event to the state machine*/
20296 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20297
20298}/*WDI_RXMsgCTSCB*/
20299
20300
20301/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020302 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020303========================================================================*/
20304
20305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020308
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 @param pWDICtx - pointer to the control block
20310
20311 @return Result of the function call
20312*/
20313WPT_INLINE WDI_Status
20314WDI_CleanCB
20315(
20316 WDI_ControlBlockType* pWDICtx
20317)
20318{
20319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20320
20321 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020322 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020323
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20326 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20327
20328 WDI_ResetAssocSessions( pWDICtx );
20329
20330 return WDI_STATUS_SUCCESS;
20331}/*WDI_CleanCB*/
20332
20333
20334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020336
Jeff Johnsone7245742012-09-05 17:12:55 -070020337
20338 @param pWDICtx: pointer to the WLAN DAL context
20339 pEventData: pointer to the event information structure
20340
Jeff Johnson295189b2012-06-20 16:38:30 -070020341 @see
20342 @return Result of the function call
20343*/
20344WPT_INLINE WDI_Status
20345WDI_ProcessRequest
20346(
20347 WDI_ControlBlockType* pWDICtx,
20348 WDI_EventInfoType* pEventData
20349)
20350{
20351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20352
Jeff Johnsone7245742012-09-05 17:12:55 -070020353 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 already checked these pointers*/
20355
20356 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20357 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20360 "Calling request processing function for req %s (%d) %x",
20361 WDI_getReqMsgString(pEventData->wdiRequest),
20362 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20363 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20364 }
20365 else
20366 {
20367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 pEventData->wdiRequest);
20370 return WDI_STATUS_E_NOT_IMPLEMENT;
20371 }
20372}/*WDI_ProcessRequest*/
20373
20374
20375/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020376 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 prefixes it with a send message header
20379
20380 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 wdiReqType: type of the request being sent
20382 uBufferLen: message buffer len
20383 pMsgBuffer: resulting allocated buffer
20384 pusDataOffset: offset in the buffer where the caller
20385 can start copying its message data
20386 puBufferSize: the resulting buffer size (offset+buff
20387 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020388
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 @see
20390 @return Result of the function call
20391*/
20392WDI_Status
20393WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020394(
20395 WDI_ControlBlockType* pWDICtx,
20396 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020398 wpt_uint8** pMsgBuffer,
20399 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 wpt_uint16* pusBufferSize
20401)
20402{
20403 tHalMsgHeader halMsgHeader;
20404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20405
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 again*/
20408
20409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020410 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020412 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20414 if ( NULL == *pMsgBuffer )
20415 {
20416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20417 "Unable to allocate message buffer for req %s (%d)",
20418 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020421 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 }
20423
20424 /*-------------------------------------------------------------------------
20425 Fill in the message header
20426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020427 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20428 /* Fill msgVersion */
20429#ifdef WLAN_FEATURE_11AC
20430 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020431 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020432 else
20433#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020434 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020435
Jeff Johnsone7245742012-09-05 17:12:55 -070020436 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20437 *pusDataOffset = sizeof(halMsgHeader);
20438 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20439
20440 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020441}/*WDI_GetMessageBuffer*/
20442
20443
20444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020447 the CB
20448
20449 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020451
Jeff Johnson295189b2012-06-20 16:38:30 -070020452 usSendSize size of the buffer to be sent
20453 pRspCb: response callback - save in the WDI
20454 CB
20455 pUserData: user data associated with the
20456 callback
20457 wdiExpectedResponse: the code of the response that is
20458 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020459
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 @see
20461 @return Result of the function call
20462*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020463WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020464WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020465(
20466 WDI_ControlBlockType* pWDICtx,
20467 wpt_uint8* pSendBuffer,
20468 wpt_uint32 usSendSize,
20469 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 void* pUserData,
20471 WDI_ResponseEnumType wdiExpectedResponse
20472)
20473{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020474 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020475 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20477
20478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020479 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 ------------------------------------------------------------------------*/
20481 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 pWDICtx->pfncRspCB = pRspCb;
20483 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020484
20485 /*-----------------------------------------------------------------------
20486 Call the CTS to send this message over - free message afterwards
20487 - notify transport failure
20488 Note: CTS is reponsible for freeing the message buffer.
20489 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020490 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20491 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20492 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 "Failed to send message over the bus - catastrophic failure");
20496
Jeff Johnsond13512a2012-07-17 11:42:19 -070020497 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020499 else
20500 {
20501 /* even when message was placed in CTS deferred Q, we will treat it
20502 success but log this info
20503 */
20504 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20505 {
20506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20507 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20508 "response %s (%d)",
20509 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20510 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020511 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020512 }
20513 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020514
Jeff Johnsond13512a2012-07-17 11:42:19 -070020515 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 if ( NULL != pWDICtx->wdiReqStatusCB )
20517 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020518 /*Inform originator whether request went through or not*/
20519 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20520 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 pWDICtx->wdiReqStatusCB = NULL;
20522 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020523 callback(wdiStatus, callbackContext);
20524
20525 /*For WDI requests which have registered a request callback,
20526 inform the WDA caller of the same via setting the return value
20527 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20528 end up repeating the functonality in the req callback for the
20529 WDI_STATUS_E_FAILURE case*/
20530 if (wdiStatus == WDI_STATUS_E_FAILURE)
20531 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 }
20533
Jeff Johnsond13512a2012-07-17 11:42:19 -070020534 if ( wdiStatus == WDI_STATUS_SUCCESS )
20535 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020536 /*Start timer for the expected response */
20537 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020538
20539 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020540 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020541 }
20542 else
20543 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020544 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020545 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20546 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020547
Jeff Johnsond13512a2012-07-17 11:42:19 -070020548 return wdiStatus;
20549
Jeff Johnson295189b2012-06-20 16:38:30 -070020550}/*WDI_SendMsg*/
20551
20552
20553
20554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020555 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 the bus using the control transport and saves some info
20557 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020558
20559 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 pSendBuffer: buffer to be sent
20561 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020562
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 @see
20564 @return Result of the function call
20565*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020567WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020568(
20569 WDI_ControlBlockType* pWDICtx,
20570 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 wpt_uint32 usSendSize
20572)
20573{
20574 wpt_uint32 uStatus ;
20575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20576
20577 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020578 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 Note: CTS is reponsible for freeing the message buffer.
20580 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 (void*)pSendBuffer, usSendSize );
20583
20584 /*Inform Upper MAC about the outcome of the request*/
20585 if ( NULL != pWDICtx->wdiReqStatusCB )
20586 {
20587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20588 "Send indication status : %d", uStatus);
20589
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020590 /* even if CTS placed indication into its deferred Q, we treat it
20591 * as success and let CTS drain its queue as per smd interrupt to CTS
20592 */
20593 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 -070020594 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 }
20596
20597 /*If sending of the message failed - it is considered catastrophic and
20598 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020599 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20600 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20601
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 {
20603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020605
20606 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20607 return WDI_STATUS_E_FAILURE;
20608 }
20609
Jeff Johnsone7245742012-09-05 17:12:55 -070020610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020611}/*WDI_SendIndication*/
20612
20613
20614/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 @brief WDI_DetectedDeviceError - called internally by DAL when
20616 it has detected a failure in the device
20617
20618 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 usErrorCode: error code detected by WDI or received
20620 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020621
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020623 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020624*/
20625void
20626WDI_DetectedDeviceError
20627(
20628 WDI_ControlBlockType* pWDICtx,
20629 wpt_uint16 usErrorCode
20630)
20631{
20632 WDI_LowLevelIndType wdiInd;
20633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20634
20635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20636 "Device Error detected code: %d - transitioning to stopped state",
20637 usErrorCode);
20638
20639 wpalMutexAcquire(&pWDICtx->wptMutex);
20640
20641 WDI_STATableStop(pWDICtx);
20642
20643 WDI_ResetAssocSessions(pWDICtx);
20644
20645 /*Set the expected state transition to stopped - because the device
20646 experienced a failure*/
20647 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20648
20649 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020651
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020653
20654 /*TO DO: - there should be an attempt to reset the device here*/
20655
20656 wpalMutexRelease(&pWDICtx->wptMutex);
20657
20658 /*------------------------------------------------------------------------
20659 Notify UMAC if a handler is registered
20660 ------------------------------------------------------------------------*/
20661 if (pWDICtx->wdiLowLevelIndCB)
20662 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020663 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20664 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020665
20666 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20667 }
20668}/*WDI_DetectedDeviceError*/
20669
20670/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020671 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020672 we started on send message has expire - this should
20673 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 reply - trigger catastrophic failure
20675 @param
20676
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020678
20679 @see
20680 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020681*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020682void
Jeff Johnson295189b2012-06-20 16:38:30 -070020683WDI_ResponseTimerCB
20684(
20685 void *pUserData
20686)
20687{
20688 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20690
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020691 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 }
20698
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020699 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020700 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020701
20702 /* If response timer is running at this time that means this timer
20703 * event is not for the last request but rather last-to-last request and
20704 * this timer event has come after we recevied respone for last-to-last
20705 * message
20706 */
20707 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20708 {
20709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20710 "WDI_ResponseTimerCB: timer in running state on timer event, "
20711 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20712 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20713 return;
20714 }
20715
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020716 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 {
20718
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020721 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020723 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20724 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020725
20726 /* WDI timeout means Riva is not responding or SMD communication to Riva
20727 * is not happening. The only possible way to recover from this error
20728 * is to initiate SSR from APPS.
20729 * There is also an option to re-enable wifi, which will eventually
20730 * trigger SSR
20731 */
20732 if (gWDICb.bEnableSSR == false)
20733 {
20734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20735 "SSR is not enabled on WDI timeout");
20736 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20737 return;
20738 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020739#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020740 wpalWcnssResetIntr();
20741 /* if this timer fires, it means Riva did not receive the FIQ */
20742 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020743#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020744 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20745 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020746#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 }
20748 else
20749 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020751 "Timeout occurred but not waiting for any response %d "
20752 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20753 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20754 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 }
20756
20757 return;
20758
20759}/*WDI_ResponseTimerCB*/
20760
20761
20762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020764
Jeff Johnsone7245742012-09-05 17:12:55 -070020765
20766 @param pWDICtx: pointer to the WLAN DAL context
20767 pEventData: pointer to the event information structure
20768
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 @see
20770 @return Result of the function call
20771*/
20772WPT_INLINE WDI_Status
20773WDI_ProcessResponse
20774(
20775 WDI_ControlBlockType* pWDICtx,
20776 WDI_EventInfoType* pEventData
20777)
20778{
20779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20780
Jeff Johnsone7245742012-09-05 17:12:55 -070020781 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020782 already checked these pointers
20783 ! - revisit this assumption */
20784 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20785 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 WDI_getRespMsgString(pEventData->wdiResponse),
20790 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20791 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20792 }
20793 else
20794 {
20795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 pEventData->wdiResponse);
20798 return WDI_STATUS_E_NOT_IMPLEMENT;
20799 }
20800}/*WDI_ProcessResponse*/
20801
20802
20803/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020805=========================================================================*/
20806
20807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 @brief Utility function used by the DAL Core to help queue a
20809 request that cannot be processed right away.
20810 @param
20811
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 pWDICtx: - pointer to the WDI control block
20813 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020814 queued
20815
20816 @see
20817 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020818*/
20819WDI_Status
20820WDI_QueuePendingReq
20821(
20822 WDI_ControlBlockType* pWDICtx,
20823 WDI_EventInfoType* pEventData
20824)
20825{
Jeff Johnsone7245742012-09-05 17:12:55 -070020826 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20830
20831 if ( NULL == pEventDataQueue )
20832 {
20833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 WDI_ASSERT(0);
20836 return WDI_STATUS_MEM_FAILURE;
20837 }
20838
20839 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20840 pEventDataQueue->pUserData = pEventData->pUserData;
20841 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20842 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020843 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020844
20845 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20846 {
20847 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020848
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 if ( NULL == pEventInfo )
20850 {
20851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 WDI_ASSERT(0);
20854 wpalMemoryFree(pEventDataQueue);
20855 return WDI_STATUS_MEM_FAILURE;
20856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020857
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20859
20860 }
20861 pEventDataQueue->pEventData = pEventInfo;
20862
20863 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020865
Jeff Johnsone7245742012-09-05 17:12:55 -070020866 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020867
20868 return WDI_STATUS_SUCCESS;
20869}/*WDI_QueuePendingReq*/
20870
20871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 @param
20875
20876 pMsg - pointer to the message
20877
20878 @see
20879 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020880*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020881void
Jeff Johnson295189b2012-06-20 16:38:30 -070020882WDI_PALCtrlMsgCB
20883(
20884 wpt_msg *pMsg
20885)
20886{
20887 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 WDI_ControlBlockType* pWDICtx = NULL;
20889 WDI_Status wdiStatus;
20890 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 void* pUserData;
20892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20893
20894 if (( NULL == pMsg )||
20895 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20896 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20897 {
20898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 }
20903
20904 /*Transition back to the state that we had before serialization
20905 - serialization transitions us to BUSY to stop any incomming requests
20906 ! TO DO L: possible race condition here if a request comes in between the
20907 state transition and the post function*/
20908
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910
20911 /*-----------------------------------------------------------------------
20912 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 -----------------------------------------------------------------------*/
20915 switch ( pEventData->wdiRequest )
20916 {
20917
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20920 break;
20921
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 case WDI_NV_DOWNLOAD_REQ:
20923 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20924 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20925 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20926 {
20927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020928 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20930 }
20931 else
20932 {
20933 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20934 }
20935
20936 break;
20937
20938 default:
20939 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20940 break;
20941 }/*switch ( pEventData->wdiRequest )*/
20942
20943 if ( WDI_STATUS_SUCCESS != wdiStatus )
20944 {
20945 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20946
20947 if ( NULL != pfnReqStatusCB )
20948 {
20949 /*Fail the request*/
20950 pfnReqStatusCB( wdiStatus, pUserData);
20951 }
20952 }
20953
20954 /* Free data - that was allocated when queueing*/
20955 if( pEventData != NULL )
20956 {
20957 if( pEventData->pEventData != NULL )
20958 {
20959 wpalMemoryFree(pEventData->pEventData);
20960 }
20961 wpalMemoryFree(pEventData);
20962 }
20963
20964 if( pMsg != NULL )
20965 {
20966 wpalMemoryFree(pMsg);
20967 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020968
Jeff Johnson295189b2012-06-20 16:38:30 -070020969}/*WDI_PALCtrlMsgCB*/
20970
20971/**
20972 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020973 and schedule for execution a pending request
20974 @param
20975
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 pWDICtx: - pointer to the WDI control block
20977 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 queued
20979
20980 @see
20981 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020982*/
20983WDI_Status
20984WDI_DequeuePendingReq
20985(
20986 WDI_ControlBlockType* pWDICtx
20987)
20988{
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20993
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020995
20996 if ( NULL == pNode )
20997 {
20998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 return WDI_STATUS_SUCCESS;
21001 }
21002
21003 /*The node actually points to the 1st element inside the Event Data struct -
21004 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021006
21007 /*Serialize processing in the control thread
21008 !TO DO: - check to see if these are all the messages params that need
21009 to be filled in*/
21010 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21011
21012 if ( NULL == palMsg )
21013 {
21014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 palMsg->callback = WDI_PALCtrlMsgCB;
21021 palMsg->ptr = pEventData;
21022
21023 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021024 palMsg->val = pWDICtx->uGlobalState;
21025
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 /*Transition back to BUSY as we need to handle a queued request*/
21027 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021028
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21030
21031 return WDI_STATUS_PENDING;
21032}/*WDI_DequeuePendingReq*/
21033
21034
21035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 away.- The assoc requests will be queued by BSSID
21039 @param
21040
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 pWDICtx: - pointer to the WDI control block
21042 pEventData: pointer to the evnt info that needs to be queued
21043 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021044
21045 @see
21046 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021047*/
21048WDI_Status
21049WDI_QueueNewAssocRequest
21050(
21051 WDI_ControlBlockType* pWDICtx,
21052 WDI_EventInfoType* pEventData,
21053 wpt_macAddr macBSSID
21054)
21055{
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 wpt_uint8 i;
21057 WDI_BSSSessionType* pSession = NULL;
21058 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 void* pEventInfo;
21061 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021063
Jeff Johnsone7245742012-09-05 17:12:55 -070021064
21065 /*------------------------------------------------------------------------
21066 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 ------------------------------------------------------------------------*/
21068 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21069 {
21070 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21071 {
21072 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021073 pSession = &pWDICtx->aBSSSessions[i];
21074 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 }
21076 }
21077
21078 if ( i >= WDI_MAX_BSS_SESSIONS )
21079 {
21080 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021083
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 /*------------------------------------------------------------------------
21085 Fill in the BSSID for this session and set the usage flag
21086 ------------------------------------------------------------------------*/
21087 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089
21090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 ------------------------------------------------------------------------*/
21093 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21094 if ( NULL == pEventDataQueue )
21095 {
21096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021097 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 WDI_ASSERT(0);
21099 return WDI_STATUS_MEM_FAILURE;
21100 }
21101
21102 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21103 if ( NULL == pSessionIdElement )
21104 {
21105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021106 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 WDI_ASSERT(0);
21108 wpalMemoryFree(pEventDataQueue);
21109 return WDI_STATUS_MEM_FAILURE;
21110 }
21111
21112 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21113 if ( NULL == pEventInfo )
21114 {
21115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021116 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 WDI_ASSERT(0);
21118 wpalMemoryFree(pSessionIdElement);
21119 wpalMemoryFree(pEventDataQueue);
21120 return WDI_STATUS_MEM_FAILURE;
21121 }
21122
21123 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21124 pEventDataQueue->pUserData = pEventData->pUserData;
21125 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21126 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021128
21129 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21130 pEventDataQueue->pEventData = pEventInfo;
21131
21132 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134
21135 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021139
21140 /*We need to maintain a separate list that keeps track of the order in which
21141 the new assoc requests are being queued such that we can start processing
21142 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 pSessionIdElement->ucIndex = i;
21144 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021145
21146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21147 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021149
21150 /*Return pending as this is what the status of the request is since it has
21151 been queued*/
21152 return WDI_STATUS_PENDING;
21153}/*WDI_QueueNewAssocRequest*/
21154
21155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021156 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021158 away.- The assoc requests will be queued by BSSID
21159 @param
21160
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 pWDICtx: - pointer to the WDI control block
21162 pSession: - session in which to queue
21163 pEventData: pointer to the event info that needs to be
21164 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021165
21166 @see
21167 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021168*/
21169WDI_Status
21170WDI_QueueAssocRequest
21171(
21172 WDI_ControlBlockType* pWDICtx,
21173 WDI_BSSSessionType* pSession,
21174 WDI_EventInfoType* pEventData
21175)
21176{
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021181
21182 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 Sanity check
21184 ------------------------------------------------------------------------*/
21185 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21186 {
21187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021189
Jeff Johnsone7245742012-09-05 17:12:55 -070021190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 }
21192
21193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 ------------------------------------------------------------------------*/
21196 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21197 if ( NULL == pEventDataQueue )
21198 {
21199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021200 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 WDI_ASSERT(0);
21202 return WDI_STATUS_MEM_FAILURE;
21203 }
21204
21205 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21206 if ( NULL == pEventInfo )
21207 {
21208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21209 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021210 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 WDI_ASSERT(0);
21212 wpalMemoryFree(pEventDataQueue);
21213 return WDI_STATUS_MEM_FAILURE;
21214 }
21215
21216 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21217 pEventDataQueue->pUserData = pEventData->pUserData;
21218 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21219 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021220 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 pEventDataQueue->pEventData = pEventInfo;
21222
21223 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21224
21225 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021227
21228 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021229 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021230
Jeff Johnsone7245742012-09-05 17:12:55 -070021231 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021232
21233 /*The result of this operation is pending because the request has been
21234 queued and it will be processed at a later moment in time */
21235 return WDI_STATUS_PENDING;
21236}/*WDI_QueueAssocRequest*/
21237
21238/**
21239 @brief Utility function used by the DAL Core to help dequeue
21240 an association request that was pending
21241 The request will be queued up in front of the main
21242 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 @param
21244
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021246
21247
21248 @see
21249 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021250*/
21251WDI_Status
21252WDI_DequeueAssocRequest
21253(
21254 WDI_ControlBlockType* pWDICtx
21255)
21256{
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 wpt_list_node* pNode = NULL;
21258 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021259 WDI_BSSSessionType* pSession;
21260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021261
21262 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 Sanity check
21264 ------------------------------------------------------------------------*/
21265 if ( NULL == pWDICtx )
21266 {
21267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021269
Jeff Johnsone7245742012-09-05 17:12:55 -070021270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021271 }
21272
21273 /*------------------------------------------------------------------------
21274 An association has been completed => a new association can occur
21275 Check to see if there are any pending associations ->
21276 If so , transfer all the pending requests into the busy queue for
21277 processing
21278 These requests have arrived prior to the requests in the busy queue
21279 (bc they needed to be processed in order to be placed in this queue)
21280 => they will be placed at the front of the busy queue
21281 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021283
21284 if ( NULL == pNode )
21285 {
21286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021287 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 return WDI_STATUS_SUCCESS;
21289 }
21290
21291 /*The node actually points to the 1st element inside the Session Id struct -
21292 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021293 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021294
21295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21296 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21297
21298 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21299 {
21300 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021301
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 the front of the main waiting queue for subsequent execution*/
21304 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 while ( NULL != pNode )
21306 {
21307 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021308 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21309 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 }
21313 else
21314 {
21315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021317 WPAL_ASSERT(0);
21318 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021321
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21323 wpalMemoryFree(pSessionIdElement);
21324 return WDI_STATUS_SUCCESS;
21325}/*WDI_DequeueAssocRequest*/
21326
21327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 pending requests - all req cb will be called with
21330 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 @param
21332
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021334
21335 @see
21336 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021337*/
21338WDI_Status
21339WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021340(
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 WDI_ControlBlockType* pWDICtx
21342)
21343{
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 void* pUserData;
21348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21349
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021351
21352 /*------------------------------------------------------------------------
21353 Go through all the requests and fail them - this will only be called
21354 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 ------------------------------------------------------------------------*/
21357 while( pNode )
21358 {
21359 /*The node actually points to the 1st element inside the Event Data struct -
21360 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 pEventDataQueue = (WDI_EventInfoType*)pNode;
21362
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21364 if ( NULL != pfnReqStatusCB )
21365 {
21366 /*Fail the request*/
21367 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21368 }
21369 /* Free data - that was allocated when queueing */
21370 if ( pEventDataQueue->pEventData != NULL )
21371 {
21372 wpalMemoryFree(pEventDataQueue->pEventData);
21373 }
21374 wpalMemoryFree(pEventDataQueue);
21375
21376 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21377 {
21378 break;
21379 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 }
21381
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 return WDI_STATUS_SUCCESS;
21383}/*WDI_ClearPendingRequests*/
21384
21385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021386 @brief Helper routine used to init the BSS Sessions in the WDI control block
21387
21388
21389 @param pWDICtx: pointer to the WLAN DAL context
21390
Jeff Johnson295189b2012-06-20 16:38:30 -070021391 @see
21392*/
21393void
21394WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021395(
Jeff Johnson295189b2012-06-20 16:38:30 -070021396 WDI_ControlBlockType* pWDICtx
21397)
21398{
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21401
21402 /*-------------------------------------------------------------------------
21403 No Sanity check
21404 -------------------------------------------------------------------------*/
21405 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21406 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021407 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021408 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21409 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21410 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21411 }
21412}/*WDI_ResetAssocSessions*/
21413
21414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021415 @brief Helper routine used to find a session based on the BSSID
21416
21417
21418 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021420 pSession: pointer to the session (if found)
21421
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021424*/
21425wpt_uint8
21426WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021427(
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 WDI_ControlBlockType* pWDICtx,
21429 wpt_macAddr macBSSID,
21430 WDI_BSSSessionType** ppSession
21431)
21432{
Jeff Johnsone7245742012-09-05 17:12:55 -070021433 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21435
21436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 -------------------------------------------------------------------------*/
21439 if ( NULL == ppSession )
21440 {
21441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021442 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 }
21445
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021447
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 /*------------------------------------------------------------------------
21449 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 ------------------------------------------------------------------------*/
21451 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21452 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021453 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21454 (eWLAN_PAL_TRUE ==
21455 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21456 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 {
21458 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 return i;
21461 }
21462 }
21463
Jeff Johnsone7245742012-09-05 17:12:55 -070021464 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021465}/*WDI_FindAssocSession*/
21466
21467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 @brief Helper routine used to find a session based on the BSSID
21469
21470
21471 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 ucBSSIdx: BSS Index of the session
21473 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021474
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021477*/
21478wpt_uint8
21479WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021480(
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 WDI_ControlBlockType* pWDICtx,
21482 wpt_uint16 ucBSSIdx,
21483 WDI_BSSSessionType** ppSession
21484)
21485{
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21488
21489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 -------------------------------------------------------------------------*/
21492 if ( NULL == ppSession )
21493 {
21494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021495 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 }
21498
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021500
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 /*------------------------------------------------------------------------
21502 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 ------------------------------------------------------------------------*/
21504 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21505 {
21506 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21507 {
21508 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 return i;
21511 }
21512 }
21513
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021515}/*WDI_FindAssocSessionByBSSIdx*/
21516
21517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 @brief Helper routine used to find a session based on the BSSID
21519
21520
21521 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 ucBSSIdx: BSS Index of the session
21523 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021524
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021527*/
21528wpt_uint8
21529WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021530(
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 WDI_ControlBlockType* pWDICtx,
21532 wpt_uint16 usIdx,
21533 WDI_BSSSessionType** ppSession
21534)
21535{
21536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21537
21538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 -------------------------------------------------------------------------*/
21541 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21542 {
21543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021544 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 }
21547
21548 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021550
21551 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021552
Jeff Johnson295189b2012-06-20 16:38:30 -070021553}/*WDI_FindAssocSessionByBSSIdx*/
21554
21555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021558
21559
21560 @param pWDICtx: pointer to the WLAN DAL context
21561 pSession: pointer to the session (if found)
21562
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021565*/
21566wpt_uint8
21567WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021568(
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 WDI_ControlBlockType* pWDICtx,
21570 WDI_BSSSessionType** ppSession
21571)
21572{
Jeff Johnsone7245742012-09-05 17:12:55 -070021573 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 -------------------------------------------------------------------------*/
21578 if ( NULL == ppSession )
21579 {
21580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021581 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 }
21584
Jeff Johnsone7245742012-09-05 17:12:55 -070021585 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021586
Jeff Johnsone7245742012-09-05 17:12:55 -070021587 /*------------------------------------------------------------------------
21588 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021589 ------------------------------------------------------------------------*/
21590 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21591 {
21592 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21593 {
21594 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021596 return i;
21597 }
21598 }
21599
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021601}/*WDI_FindEmptySession*/
21602
21603
21604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021605 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021607
21608
21609 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021610 macBSSID: pointer to BSSID. If NULL, get all the session.
21611 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21612 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21613 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 @see
21615 @return Number of sessions in use
21616*/
21617wpt_uint8
21618WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021619(
Hoonki Lee26599972013-04-24 01:21:58 -070021620 WDI_ControlBlockType* pWDICtx,
21621 wpt_macAddr macBSSID,
21622 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021623)
21624{
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021627
21628 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 Count all sessions in use
21630 ------------------------------------------------------------------------*/
21631 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21632 {
Hoonki Lee26599972013-04-24 01:21:58 -070021633 if ( macBSSID && skipBSSID &&
21634 (eWLAN_PAL_TRUE ==
21635 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21636 WDI_MAC_ADDR_LEN)))
21637 {
21638 continue;
21639 }
21640 else if ( pWDICtx->aBSSSessions[i].bInUse )
21641 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021643 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 }
21645
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021647}/*WDI_GetActiveSessionsCount*/
21648
21649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021652
21653
21654 @param pWDICtx: pointer to the WLAN DAL context
21655 pSession: pointer to the session (if found)
21656
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021659*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021660void
Jeff Johnson295189b2012-06-20 16:38:30 -070021661WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021662(
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 WDI_ControlBlockType* pWDICtx,
21664 WDI_BSSSessionType* ppSession
21665)
21666{
21667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 -------------------------------------------------------------------------*/
21670 if ( NULL == ppSession )
21671 {
21672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021673 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 }
21676
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 /*------------------------------------------------------------------------
21678 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 ------------------------------------------------------------------------*/
21680 wpal_list_destroy(&ppSession->wptPendingQueue);
21681 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21683 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021684 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21685 wpal_list_init(&ppSession->wptPendingQueue);
21686
21687}/*WDI_DeleteSession*/
21688
21689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 @param
21693
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 WDI_AddStaParams: - pointer to the WDI Add STA params
21695 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021696
21697 @see
21698 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021699*/
21700void
21701WDI_AddBcastSTAtoSTATable
21702(
21703 WDI_ControlBlockType* pWDICtx,
21704 WDI_AddStaParams * staParams,
21705 wpt_uint16 usBcastStaIdx
21706)
21707{
21708 WDI_AddStaParams wdiAddSTAParam = {0};
21709 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21711
21712 /*---------------------------------------------------------------------
21713 Sanity check
21714 ---------------------------------------------------------------------*/
21715 if ( NULL == staParams )
21716 {
21717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021719
Jeff Johnsone7245742012-09-05 17:12:55 -070021720 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 }
21722
21723 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21724 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21725 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21726 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21727 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21728 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21729 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21730 WDI_MAC_ADDR_LEN );
21731 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21732 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21733 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21734 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21735 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21736 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21737 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021738
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21740}
21741
21742/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 @brief NV blob will be divided into fragments of size 4kb and
21744 Sent to HAL
21745
21746 @param pWDICtx: pointer to the WLAN DAL context
21747 pEventData: pointer to the event information structure
21748
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 @see
21750 @return Result of the function call
21751 */
21752
21753WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021754(
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 WDI_ControlBlockType* pWDICtx,
21756 WDI_EventInfoType* pEventData
21757)
21758{
21759
21760 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21761 wpt_uint8* pSendBuffer = NULL;
21762 wpt_uint16 usDataOffset = 0;
21763 wpt_uint16 usSendSize = 0;
21764 wpt_uint16 usCurrentFragmentSize =0;
21765 wpt_uint8* pSrcBuffer = NULL;
21766 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21767 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21768
21769 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21770 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21771 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21772
Jeff Johnsone7245742012-09-05 17:12:55 -070021773 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21775
21776 /* Update the current Fragment Number */
21777 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21778
21779 /*Update the HAL REQ structure */
21780 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21781 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21782 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21783
21784 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 image will be sent to HAL*/
21787
Jeff Johnsone7245742012-09-05 17:12:55 -070021788 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21794 usCurrentFragmentSize = FRAGMENT_SIZE;
21795
21796 /*Update the HAL REQ structure */
21797 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21798 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21799
21800 }
21801 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 usCurrentFragmentSize = FRAGMENT_SIZE;
21804
21805 /*Update the HAL REQ structure */
21806 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21807 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21808 }
21809
21810 /*-----------------------------------------------------------------------
21811 Get message buffer
21812 -----------------------------------------------------------------------*/
21813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21814 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21815 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21818 {
21819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21820 "Unable to get send buffer in NV Download req %x %x ",
21821 pEventData, pwdiNvDownloadReqParams);
21822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021824 }
21825
21826 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21829
21830 /* Appending the NV image fragment */
21831 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21832 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21833 usCurrentFragmentSize);
21834
21835 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021836 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021837
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21839 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 WDI_NV_DOWNLOAD_RESP);
21841
21842}
Jeff Johnsone7245742012-09-05 17:12:55 -070021843/*============================================================================
21844 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 ============================================================================*/
21846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021847 @brief Helper routine used to find a session based on the BSSID
21848 @param pContext: pointer to the WLAN DAL context
21849 @param pDPContext: pointer to the Datapath context
21850
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021853*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021854WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021855WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21856{
21857 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21858
21859 pCB->pDPContext = pDPContext;
21860 return;
21861}
21862
21863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021864 @brief Helper routine used to find a session based on the BSSID
21865
21866
21867 @param pContext: pointer to the WLAN DAL context
21868
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 @see
21870 @return pointer to Datapath context
21871*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021872WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021873WDI_DS_GetDatapathContext (void *pContext)
21874{
21875 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21876 return pCB->pDPContext;
21877}
21878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021879 @brief Helper routine used to find a session based on the BSSID
21880
21881
21882 @param pContext: pointer to the WLAN DAL context
21883 @param pDTDriverContext: pointer to the Transport Driver context
21884
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 @see
21886 @return void
21887*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021888WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021889WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21890{
21891 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21892
21893 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021894 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021895}
21896
21897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 @brief Helper routine used to find a session based on the BSSID
21899
21900
21901 @param pWDICtx: pointer to the WLAN DAL context
21902
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021905*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021906WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021907WDT_GetTransportDriverContext (void *pContext)
21908{
21909 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021911}
21912
Jeff Johnsone7245742012-09-05 17:12:55 -070021913/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 Helper inline converters
21915 ============================================================================*/
21916/*Convert WDI driver type into HAL driver type*/
21917WPT_STATIC WPT_INLINE WDI_Status
21918WDI_HAL_2_WDI_STATUS
21919(
21920 eHalStatus halStatus
21921)
21922{
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 the chances of getting inlined*/
21925 switch( halStatus )
21926 {
21927 case eHAL_STATUS_SUCCESS:
21928 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21929 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21930 return WDI_STATUS_SUCCESS;
21931 case eHAL_STATUS_FAILURE:
21932 return WDI_STATUS_E_FAILURE;
21933 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021934 return WDI_STATUS_MEM_FAILURE;
21935 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021937 default:
21938 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21939 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021940
Jeff Johnsone7245742012-09-05 17:12:55 -070021941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942}/*WDI_HAL_2_WDI_STATUS*/
21943
21944/*Convert WDI request type into HAL request type*/
21945WPT_STATIC WPT_INLINE tHalHostMsgType
21946WDI_2_HAL_REQ_TYPE
21947(
21948 WDI_RequestEnumType wdiReqType
21949)
21950{
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 the chances of getting inlined*/
21953 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 return WLAN_HAL_RMV_STAKEY_REQ;
21990 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 case WDI_DEL_BA_REQ:
21999 return WLAN_HAL_DEL_BA_REQ;
22000#ifdef FEATURE_WLAN_CCX
22001 case WDI_TSM_STATS_REQ:
22002 return WLAN_HAL_TSM_STATS_REQ;
22003#endif
22004 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 case WDI_ADD_BA_SESSION_REQ:
22015 return WLAN_HAL_ADD_BA_SESSION_REQ;
22016 case WDI_TRIGGER_BA_REQ:
22017 return WLAN_HAL_TRIGGER_BA_REQ;
22018 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022022 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22023 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22024 case WDI_SET_MAX_TX_POWER_REQ:
22025 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022026 case WDI_SET_TX_POWER_REQ:
22027 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22029 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022030#ifdef FEATURE_WLAN_TDLS
22031 case WDI_TDLS_LINK_ESTABLISH_REQ:
22032 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22033#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022039 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022041 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022042 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022043 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022044 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022049 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 case WDI_REM_BEACON_FILTER_REQ:
22055 return WLAN_HAL_REM_BCN_FILTER_REQ;
22056 case WDI_SET_RSSI_THRESHOLDS_REQ:
22057 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22058 case WDI_HOST_OFFLOAD_REQ:
22059 return WLAN_HAL_HOST_OFFLOAD_REQ;
22060 case WDI_WOWL_ADD_BC_PTRN_REQ:
22061 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22062 case WDI_WOWL_DEL_BC_PTRN_REQ:
22063 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22064 case WDI_WOWL_ENTER_REQ:
22065 return WLAN_HAL_ENTER_WOWL_REQ;
22066 case WDI_WOWL_EXIT_REQ:
22067 return WLAN_HAL_EXIT_WOWL_REQ;
22068 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22069 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22070 case WDI_NV_DOWNLOAD_REQ:
22071 return WLAN_HAL_DOWNLOAD_NV_REQ;
22072 case WDI_FLUSH_AC_REQ:
22073 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22074 case WDI_BTAMP_EVENT_REQ:
22075 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22076#ifdef WLAN_FEATURE_VOWIFI_11R
22077 case WDI_AGGR_ADD_TS_REQ:
22078 return WLAN_HAL_AGGR_ADD_TS_REQ;
22079#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022080 case WDI_FTM_CMD_REQ:
22081 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 case WDI_ADD_STA_SELF_REQ:
22083 return WLAN_HAL_ADD_STA_SELF_REQ;
22084 case WDI_DEL_STA_SELF_REQ:
22085 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022086#ifdef FEATURE_OEM_DATA_SUPPORT
22087 case WDI_START_OEM_DATA_REQ:
22088 return WLAN_HAL_START_OEM_DATA_REQ;
22089#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 case WDI_HOST_RESUME_REQ:
22091 return WLAN_HAL_HOST_RESUME_REQ;
22092 case WDI_HOST_SUSPEND_IND:
22093 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022094 case WDI_TRAFFIC_STATS_IND:
22095 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022096#ifdef WLAN_FEATURE_11W
22097 case WDI_EXCLUDE_UNENCRYPTED_IND:
22098 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22099#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 case WDI_KEEP_ALIVE_REQ:
22101 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022102#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022103 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22104 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022105#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022106#ifdef FEATURE_WLAN_SCAN_PNO
22107 case WDI_SET_PREF_NETWORK_REQ:
22108 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22109 case WDI_SET_RSSI_FILTER_REQ:
22110 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22111 case WDI_UPDATE_SCAN_PARAMS_REQ:
22112 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22113#endif // FEATURE_WLAN_SCAN_PNO
22114 case WDI_SET_TX_PER_TRACKING_REQ:
22115 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22116#ifdef WLAN_FEATURE_PACKET_FILTERING
22117 case WDI_8023_MULTICAST_LIST_REQ:
22118 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22119 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22122 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22123 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22124 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22125#endif // WLAN_FEATURE_PACKET_FILTERING
22126 case WDI_HAL_DUMP_CMD_REQ:
22127 return WLAN_HAL_DUMP_COMMAND_REQ;
22128#ifdef WLAN_FEATURE_GTK_OFFLOAD
22129 case WDI_GTK_OFFLOAD_REQ:
22130 return WLAN_HAL_GTK_OFFLOAD_REQ;
22131 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22132 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22133#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22134
22135 case WDI_INIT_SCAN_CON_REQ:
22136 return WLAN_HAL_INIT_SCAN_CON_REQ;
22137 case WDI_SET_POWER_PARAMS_REQ:
22138 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22139 case WDI_SET_TM_LEVEL_REQ:
22140 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22141 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22142 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022143#ifdef WLAN_FEATURE_11AC
22144 case WDI_UPDATE_VHT_OP_MODE_REQ:
22145 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22146#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022147 case WDI_GET_ROAM_RSSI_REQ:
22148 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022150 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022152
Jeff Johnson295189b2012-06-20 16:38:30 -070022153}/*WDI_2_HAL_REQ_TYPE*/
22154
22155/*Convert WDI response type into HAL response type*/
22156WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22157HAL_2_WDI_RSP_TYPE
22158(
22159 tHalHostMsgType halMsg
22160)
22161{
Jeff Johnsone7245742012-09-05 17:12:55 -070022162 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022163 the chances of getting inlined*/
22164 switch( halMsg )
22165 {
22166 case WLAN_HAL_START_RSP:
22167 return WDI_START_RESP;
22168 case WLAN_HAL_STOP_RSP:
22169 return WDI_STOP_RESP;
22170 case WLAN_HAL_INIT_SCAN_RSP:
22171 return WDI_INIT_SCAN_RESP;
22172 case WLAN_HAL_START_SCAN_RSP:
22173 return WDI_START_SCAN_RESP;
22174 case WLAN_HAL_END_SCAN_RSP:
22175 return WDI_END_SCAN_RESP;
22176 case WLAN_HAL_FINISH_SCAN_RSP:
22177 return WDI_FINISH_SCAN_RESP;
22178 case WLAN_HAL_CONFIG_STA_RSP:
22179 return WDI_CONFIG_STA_RESP;
22180 case WLAN_HAL_DELETE_STA_RSP:
22181 return WDI_DEL_STA_RESP;
22182 case WLAN_HAL_CONFIG_BSS_RSP:
22183 return WDI_CONFIG_BSS_RESP;
22184 case WLAN_HAL_DELETE_BSS_RSP:
22185 return WDI_DEL_BSS_RESP;
22186 case WLAN_HAL_JOIN_RSP:
22187 return WDI_JOIN_RESP;
22188 case WLAN_HAL_POST_ASSOC_RSP:
22189 return WDI_POST_ASSOC_RESP;
22190 case WLAN_HAL_SET_BSSKEY_RSP:
22191 return WDI_SET_BSS_KEY_RESP;
22192 case WLAN_HAL_SET_STAKEY_RSP:
22193 return WDI_SET_STA_KEY_RESP;
22194 case WLAN_HAL_RMV_BSSKEY_RSP:
22195 return WDI_RMV_BSS_KEY_RESP;
22196 case WLAN_HAL_RMV_STAKEY_RSP:
22197 return WDI_RMV_STA_KEY_RESP;
22198 case WLAN_HAL_SET_BCASTKEY_RSP:
22199 return WDI_SET_STA_BCAST_KEY_RESP;
22200 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22201 // return WDI_RMV_STA_BCAST_KEY_RESP;
22202 case WLAN_HAL_ADD_TS_RSP:
22203 return WDI_ADD_TS_RESP;
22204 case WLAN_HAL_DEL_TS_RSP:
22205 return WDI_DEL_TS_RESP;
22206 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22207 return WDI_UPD_EDCA_PRMS_RESP;
22208 case WLAN_HAL_ADD_BA_RSP:
22209 return WDI_ADD_BA_RESP;
22210 case WLAN_HAL_DEL_BA_RSP:
22211 return WDI_DEL_BA_RESP;
22212#ifdef FEATURE_WLAN_CCX
22213 case WLAN_HAL_TSM_STATS_RSP:
22214 return WDI_TSM_STATS_RESP;
22215#endif
22216 case WLAN_HAL_CH_SWITCH_RSP:
22217 return WDI_CH_SWITCH_RESP;
22218 case WLAN_HAL_SET_LINK_ST_RSP:
22219 return WDI_SET_LINK_ST_RESP;
22220 case WLAN_HAL_GET_STATS_RSP:
22221 return WDI_GET_STATS_RESP;
22222 case WLAN_HAL_UPDATE_CFG_RSP:
22223 return WDI_UPDATE_CFG_RESP;
22224 case WLAN_HAL_ADD_BA_SESSION_RSP:
22225 return WDI_ADD_BA_SESSION_RESP;
22226 case WLAN_HAL_TRIGGER_BA_RSP:
22227 return WDI_TRIGGER_BA_RESP;
22228 case WLAN_HAL_UPDATE_BEACON_RSP:
22229 return WDI_UPD_BCON_PRMS_RESP;
22230 case WLAN_HAL_SEND_BEACON_RSP:
22231 return WDI_SND_BCON_RESP;
22232 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22233 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22234 /*Indications*/
22235 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22236 return WDI_HAL_RSSI_NOTIFICATION_IND;
22237 case WLAN_HAL_MISSED_BEACON_IND:
22238 return WDI_HAL_MISSED_BEACON_IND;
22239 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22240 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22241 case WLAN_HAL_MIC_FAILURE_IND:
22242 return WDI_HAL_MIC_FAILURE_IND;
22243 case WLAN_HAL_FATAL_ERROR_IND:
22244 return WDI_HAL_FATAL_ERROR_IND;
22245 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22246 return WDI_HAL_DEL_STA_IND;
22247 case WLAN_HAL_COEX_IND:
22248 return WDI_HAL_COEX_IND;
22249 case WLAN_HAL_OTA_TX_COMPL_IND:
22250 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 case WLAN_HAL_P2P_NOA_ATTR_IND:
22252 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022253 case WLAN_HAL_P2P_NOA_START_IND:
22254 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 case WLAN_HAL_TX_PER_HIT_IND:
22256 return WDI_HAL_TX_PER_HIT_IND;
22257 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22258 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022259 case WLAN_HAL_SET_TX_POWER_RSP:
22260 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 case WLAN_HAL_SET_P2P_GONOA_RSP:
22262 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022263#ifdef FEATURE_WLAN_TDLS
22264 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22265 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22266 case WLAN_HAL_TDLS_IND:
22267 return WDI_HAL_TDLS_IND;
22268#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022284 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22288 return WDI_SET_BEACON_FILTER_RESP;
22289 case WLAN_HAL_REM_BCN_FILTER_RSP:
22290 return WDI_REM_BEACON_FILTER_RESP;
22291 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22292 return WDI_SET_RSSI_THRESHOLDS_RESP;
22293 case WLAN_HAL_HOST_OFFLOAD_RSP:
22294 return WDI_HOST_OFFLOAD_RESP;
22295 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22296 return WDI_WOWL_ADD_BC_PTRN_RESP;
22297 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22298 return WDI_WOWL_DEL_BC_PTRN_RESP;
22299 case WLAN_HAL_ENTER_WOWL_RSP:
22300 return WDI_WOWL_ENTER_RESP;
22301 case WLAN_HAL_EXIT_WOWL_RSP:
22302 return WDI_WOWL_EXIT_RESP;
22303 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22304 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22305 case WLAN_HAL_DOWNLOAD_NV_RSP:
22306 return WDI_NV_DOWNLOAD_RESP;
22307 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22308 return WDI_FLUSH_AC_RESP;
22309 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22310 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 case WLAN_HAL_PROCESS_PTT_RSP:
22312 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 case WLAN_HAL_ADD_STA_SELF_RSP:
22314 return WDI_ADD_STA_SELF_RESP;
22315case WLAN_HAL_DEL_STA_SELF_RSP:
22316 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022317#ifdef FEATURE_OEM_DATA_SUPPORT
22318 case WLAN_HAL_START_OEM_DATA_RSP:
22319 return WDI_START_OEM_DATA_RESP;
22320#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 case WLAN_HAL_HOST_RESUME_RSP:
22322 return WDI_HOST_RESUME_RESP;
22323 case WLAN_HAL_KEEP_ALIVE_RSP:
22324 return WDI_KEEP_ALIVE_RESP;
22325#ifdef FEATURE_WLAN_SCAN_PNO
22326 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22327 return WDI_SET_PREF_NETWORK_RESP;
22328 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22331 return WDI_UPDATE_SCAN_PARAMS_RESP;
22332 case WLAN_HAL_PREF_NETW_FOUND_IND:
22333 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22334#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022335#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022336 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22337 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022338#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22340 return WDI_SET_TX_PER_TRACKING_RESP;
22341#ifdef WLAN_FEATURE_PACKET_FILTERING
22342 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22343 return WDI_8023_MULTICAST_LIST_RESP;
22344 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22345 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22346 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22347 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22348 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22349 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22350#endif // WLAN_FEATURE_PACKET_FILTERING
22351
22352 case WLAN_HAL_DUMP_COMMAND_RSP:
22353 return WDI_HAL_DUMP_CMD_RESP;
22354 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22355 return WDI_SET_POWER_PARAMS_RESP;
22356#ifdef WLAN_FEATURE_VOWIFI_11R
22357 case WLAN_HAL_AGGR_ADD_TS_RSP:
22358 return WDI_AGGR_ADD_TS_RESP;
22359#endif
22360
22361#ifdef WLAN_FEATURE_GTK_OFFLOAD
22362 case WLAN_HAL_GTK_OFFLOAD_RSP:
22363 return WDI_GTK_OFFLOAD_RESP;
22364 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22365 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22366#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22367#ifdef WLAN_WAKEUP_EVENTS
22368 case WLAN_HAL_WAKE_REASON_IND:
22369 return WDI_HAL_WAKE_REASON_IND;
22370#endif // WLAN_WAKEUP_EVENTS
22371
22372 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22373 return WDI_SET_TM_LEVEL_RESP;
22374 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22375 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022376#ifdef WLAN_FEATURE_11AC
22377 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22378 return WDI_UPDATE_VHT_OP_MODE_RESP;
22379#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022380#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22381 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22382 return WDI_GET_ROAM_RSSI_RESP;
22383#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022384 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 }
22387
22388}/*HAL_2_WDI_RSP_TYPE*/
22389
22390
22391/*Convert WDI driver type into HAL driver type*/
22392WPT_STATIC WPT_INLINE tDriverType
22393WDI_2_HAL_DRV_TYPE
22394(
22395 WDI_DriverType wdiDriverType
22396)
22397{
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 the chances of getting inlined*/
22400 switch( wdiDriverType )
22401 {
22402 case WDI_DRIVER_TYPE_PRODUCTION:
22403 return eDRIVER_TYPE_PRODUCTION;
22404 case WDI_DRIVER_TYPE_MFG:
22405 return eDRIVER_TYPE_MFG;
22406 case WDI_DRIVER_TYPE_DVT:
22407 return eDRIVER_TYPE_DVT;
22408 }
22409
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022411}/*WDI_2_HAL_DRV_TYPE*/
22412
22413
22414/*Convert WDI stop reason into HAL stop reason*/
22415WPT_STATIC WPT_INLINE tHalStopType
22416WDI_2_HAL_STOP_REASON
22417(
22418 WDI_StopType wdiDriverType
22419)
22420{
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 the chances of getting inlined*/
22423 switch( wdiDriverType )
22424 {
22425 case WDI_STOP_TYPE_SYS_RESET:
22426 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022427 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22428 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 case WDI_STOP_TYPE_RF_KILL:
22430 return HAL_STOP_TYPE_RF_KILL;
22431 }
22432
Jeff Johnsone7245742012-09-05 17:12:55 -070022433 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022434}/*WDI_2_HAL_STOP_REASON*/
22435
22436
22437/*Convert WDI scan mode type into HAL scan mode type*/
22438WPT_STATIC WPT_INLINE eHalSysMode
22439WDI_2_HAL_SCAN_MODE
22440(
22441 WDI_ScanMode wdiScanMode
22442)
22443{
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 the chances of getting inlined*/
22446 switch( wdiScanMode )
22447 {
22448 case WDI_SCAN_MODE_NORMAL:
22449 return eHAL_SYS_MODE_NORMAL;
22450 case WDI_SCAN_MODE_LEARN:
22451 return eHAL_SYS_MODE_LEARN;
22452 case WDI_SCAN_MODE_SCAN:
22453 return eHAL_SYS_MODE_SCAN;
22454 case WDI_SCAN_MODE_PROMISC:
22455 return eHAL_SYS_MODE_PROMISC;
22456 case WDI_SCAN_MODE_SUSPEND_LINK:
22457 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022458 case WDI_SCAN_MODE_ROAM_SCAN:
22459 return eHAL_SYS_MODE_ROAM_SCAN;
22460 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22461 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 }
22463
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022465}/*WDI_2_HAL_SCAN_MODE*/
22466
22467/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022468WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022469WDI_2_HAL_SEC_CH_OFFSET
22470(
22471 WDI_HTSecondaryChannelOffset wdiSecChOffset
22472)
22473{
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 the chances of getting inlined*/
22476 switch( wdiSecChOffset )
22477 {
22478 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22484#ifdef WLAN_FEATURE_11AC
22485 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22486 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22487 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22488 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22489 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22490 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22491 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22492 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22493 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22494 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22495 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22496 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22497 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22498 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22499#endif
22500 default:
22501 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 }
22503
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505}/*WDI_2_HAL_SEC_CH_OFFSET*/
22506
22507/*Convert WDI BSS type into HAL BSS type*/
22508WPT_STATIC WPT_INLINE tSirBssType
22509WDI_2_HAL_BSS_TYPE
22510(
22511 WDI_BssType wdiBSSType
22512)
22513{
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 the chances of getting inlined*/
22516 switch( wdiBSSType )
22517 {
22518 case WDI_INFRASTRUCTURE_MODE:
22519 return eSIR_INFRASTRUCTURE_MODE;
22520 case WDI_INFRA_AP_MODE:
22521 return eSIR_INFRA_AP_MODE;
22522 case WDI_IBSS_MODE:
22523 return eSIR_IBSS_MODE;
22524 case WDI_BTAMP_STA_MODE:
22525 return eSIR_BTAMP_STA_MODE;
22526 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 case WDI_BSS_AUTO_MODE:
22529 return eSIR_AUTO_MODE;
22530 }
22531
Jeff Johnsone7245742012-09-05 17:12:55 -070022532 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022533}/*WDI_2_HAL_BSS_TYPE*/
22534
22535/*Convert WDI NW type into HAL NW type*/
22536WPT_STATIC WPT_INLINE tSirNwType
22537WDI_2_HAL_NW_TYPE
22538(
22539 WDI_NwType wdiNWType
22540)
22541{
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 the chances of getting inlined*/
22544 switch( wdiNWType )
22545 {
22546 case WDI_11A_NW_TYPE:
22547 return eSIR_11A_NW_TYPE;
22548 case WDI_11B_NW_TYPE:
22549 return eSIR_11B_NW_TYPE;
22550 case WDI_11G_NW_TYPE:
22551 return eSIR_11G_NW_TYPE;
22552 case WDI_11N_NW_TYPE:
22553 return eSIR_11N_NW_TYPE;
22554 }
22555
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022557}/*WDI_2_HAL_NW_TYPE*/
22558
22559/*Convert WDI chanel bonding type into HAL cb type*/
22560WPT_STATIC WPT_INLINE ePhyChanBondState
22561WDI_2_HAL_CB_STATE
22562(
22563 WDI_PhyChanBondState wdiCbState
22564)
22565{
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 the chances of getting inlined*/
22568 switch ( wdiCbState )
22569 {
22570 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22571 return PHY_SINGLE_CHANNEL_CENTERED;
22572 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22573 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22574 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22575 return PHY_DOUBLE_CHANNEL_CENTERED;
22576 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22577 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022578#ifdef WLAN_FEATURE_11AC
22579 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22580 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22581 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22582 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22583 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22584 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22585 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22586 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22587 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22588 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22589 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22590 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22591 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22592 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22593#endif
22594 case WDI_MAX_CB_STATE:
22595 default:
22596 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022598
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 return PHY_CHANNEL_BONDING_STATE_MAX;
22600}/*WDI_2_HAL_CB_STATE*/
22601
22602/*Convert WDI chanel bonding type into HAL cb type*/
22603WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22604WDI_2_HAL_HT_OPER_MODE
22605(
22606 WDI_HTOperatingMode wdiHTOperMode
22607)
22608{
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022610 the chances of getting inlined*/
22611 switch ( wdiHTOperMode )
22612 {
22613 case WDI_HT_OP_MODE_PURE:
22614 return eSIR_HT_OP_MODE_PURE;
22615 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22616 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22617 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22618 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22619 case WDI_HT_OP_MODE_MIXED:
22620 return eSIR_HT_OP_MODE_MIXED;
22621 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022622
Jeff Johnson295189b2012-06-20 16:38:30 -070022623 return eSIR_HT_OP_MODE_MAX;
22624}/*WDI_2_HAL_HT_OPER_MODE*/
22625
22626/*Convert WDI mimo PS type into HAL mimo PS type*/
22627WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22628WDI_2_HAL_MIMO_PS
22629(
22630 WDI_HTMIMOPowerSaveState wdiHTOperMode
22631)
22632{
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 the chances of getting inlined*/
22635 switch ( wdiHTOperMode )
22636 {
22637 case WDI_HT_MIMO_PS_STATIC:
22638 return eSIR_HT_MIMO_PS_STATIC;
22639 case WDI_HT_MIMO_PS_DYNAMIC:
22640 return eSIR_HT_MIMO_PS_DYNAMIC;
22641 case WDI_HT_MIMO_PS_NA:
22642 return eSIR_HT_MIMO_PS_NA;
22643 case WDI_HT_MIMO_PS_NO_LIMIT:
22644 return eSIR_HT_MIMO_PS_NO_LIMIT;
22645 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022646
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 return eSIR_HT_MIMO_PS_MAX;
22648}/*WDI_2_HAL_MIMO_PS*/
22649
22650/*Convert WDI ENC type into HAL ENC type*/
22651WPT_STATIC WPT_INLINE tAniEdType
22652WDI_2_HAL_ENC_TYPE
22653(
22654 WDI_EncryptType wdiEncType
22655)
22656{
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 the chances of getting inlined*/
22659 switch ( wdiEncType )
22660 {
22661 case WDI_ENCR_NONE:
22662 return eSIR_ED_NONE;
22663
22664 case WDI_ENCR_WEP40:
22665 return eSIR_ED_WEP40;
22666
22667 case WDI_ENCR_WEP104:
22668 return eSIR_ED_WEP104;
22669
22670 case WDI_ENCR_TKIP:
22671 return eSIR_ED_TKIP;
22672
22673 case WDI_ENCR_CCMP:
22674 return eSIR_ED_CCMP;
22675
22676 case WDI_ENCR_AES_128_CMAC:
22677 return eSIR_ED_AES_128_CMAC;
22678#if defined(FEATURE_WLAN_WAPI)
22679 case WDI_ENCR_WPI:
22680 return eSIR_ED_WPI;
22681#endif
22682 default:
22683 return eSIR_ED_NOT_IMPLEMENTED;
22684 }
22685
22686}/*WDI_2_HAL_ENC_TYPE*/
22687
22688/*Convert WDI WEP type into HAL WEP type*/
22689WPT_STATIC WPT_INLINE tAniWepType
22690WDI_2_HAL_WEP_TYPE
22691(
22692 WDI_WepType wdiWEPType
22693)
22694{
Jeff Johnsone7245742012-09-05 17:12:55 -070022695 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022696 the chances of getting inlined*/
22697 switch ( wdiWEPType )
22698 {
22699 case WDI_WEP_STATIC:
22700 return eSIR_WEP_STATIC;
22701
22702 case WDI_WEP_DYNAMIC:
22703 return eSIR_WEP_DYNAMIC;
22704 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022705
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 return eSIR_WEP_MAX;
22707}/*WDI_2_HAL_WEP_TYPE*/
22708
22709WPT_STATIC WPT_INLINE tSirLinkState
22710WDI_2_HAL_LINK_STATE
22711(
22712 WDI_LinkStateType wdiLinkState
22713)
22714{
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 the chances of getting inlined*/
22717 switch ( wdiLinkState )
22718 {
22719 case WDI_LINK_IDLE_STATE:
22720 return eSIR_LINK_IDLE_STATE;
22721
22722 case WDI_LINK_PREASSOC_STATE:
22723 return eSIR_LINK_PREASSOC_STATE;
22724
22725 case WDI_LINK_POSTASSOC_STATE:
22726 return eSIR_LINK_POSTASSOC_STATE;
22727
22728 case WDI_LINK_AP_STATE:
22729 return eSIR_LINK_AP_STATE;
22730
22731 case WDI_LINK_IBSS_STATE:
22732 return eSIR_LINK_IBSS_STATE;
22733
22734 case WDI_LINK_BTAMP_PREASSOC_STATE:
22735 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22736
22737 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22738 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22739
22740 case WDI_LINK_BTAMP_AP_STATE:
22741 return eSIR_LINK_BTAMP_AP_STATE;
22742
22743 case WDI_LINK_BTAMP_STA_STATE:
22744 return eSIR_LINK_BTAMP_STA_STATE;
22745
22746 case WDI_LINK_LEARN_STATE:
22747 return eSIR_LINK_LEARN_STATE;
22748
22749 case WDI_LINK_SCAN_STATE:
22750 return eSIR_LINK_SCAN_STATE;
22751
22752 case WDI_LINK_FINISH_SCAN_STATE:
22753 return eSIR_LINK_FINISH_SCAN_STATE;
22754
22755 case WDI_LINK_INIT_CAL_STATE:
22756 return eSIR_LINK_INIT_CAL_STATE;
22757
22758 case WDI_LINK_FINISH_CAL_STATE:
22759 return eSIR_LINK_FINISH_CAL_STATE;
22760
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 case WDI_LINK_LISTEN_STATE:
22762 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022763
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022764 case WDI_LINK_SEND_ACTION_STATE:
22765 return eSIR_LINK_SEND_ACTION_STATE;
22766
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 default:
22768 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022770}
22771
Jeff Johnsone7245742012-09-05 17:12:55 -070022772/*Translate a STA Context from WDI into HAL*/
22773WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022774void
22775WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022776(
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 tConfigStaParams* phalConfigSta,
22778 WDI_ConfigStaReqInfoType* pwdiConfigSta
22779)
22780{
22781 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022782#ifdef WLAN_FEATURE_11AC
22783 /* Get the Version 1 Handler */
22784 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22785 if (WDI_getFwWlanFeatCaps(DOT11AC))
22786 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022787 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 }
22789#endif
22790 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022791 the chances of getting inlined*/
22792
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 wpalMemoryCopy(phalConfigSta->bssId,
22794 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22795
22796 wpalMemoryCopy(phalConfigSta->staMac,
22797 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022798
22799 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22800 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22801 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22802 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22803 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22804 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22805 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22806 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22807 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22808 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22809 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22810 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22811 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22812 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22813 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22814 phalConfigSta->action = pwdiConfigSta->wdiAction;
22815 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22816 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22817 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22818 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22819 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22820 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22821 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022822
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22824
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 pwdiConfigSta->wdiSupportedRates.opRateMode;
22827 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22828 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022829 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22831 }
22832 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22833 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22836 }
22837 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22838 {
22839 phalConfigSta->supportedRates.aniLegacyRates[i] =
22840 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22844 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22845 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22848 }
22849 phalConfigSta->supportedRates.rxHighestDataRate =
22850 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22851
Jeff Johnsone7245742012-09-05 17:12:55 -070022852#ifdef WLAN_FEATURE_11AC
22853 if(phalConfigSta_V1 != NULL)
22854 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022855 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22856 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22857 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22858 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 }
22860#endif
22861
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022863
Jeff Johnsone7245742012-09-05 17:12:55 -070022864#ifdef WLAN_FEATURE_11AC
22865 if(phalConfigSta_V1 != NULL)
22866 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022867 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22868 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022869 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022870 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22871 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22872
Jeff Johnsone7245742012-09-05 17:12:55 -070022873 }
22874#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022875}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022876
22877/*Translate a Rate set info from WDI into HAL*/
22878WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022879WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022880(
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 tSirMacRateSet* pHalRateSet,
22882 WDI_RateSet* pwdiRateSet
22883)
22884{
Jeff Johnsone7245742012-09-05 17:12:55 -070022885 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22887
22888 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22889 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22890
22891 for ( i = 0; i < pHalRateSet->numRates; i++ )
22892 {
22893 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22894 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022895
Jeff Johnson295189b2012-06-20 16:38:30 -070022896}/*WDI_CopyWDIRateSetToHALRateSet*/
22897
22898
22899/*Translate an EDCA Parameter Record from WDI into HAL*/
22900WPT_STATIC WPT_INLINE void
22901WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022902(
Jeff Johnson295189b2012-06-20 16:38:30 -070022903 tSirMacEdcaParamRecord* phalEdcaParam,
22904 WDI_EdcaParamRecord* pWDIEdcaParam
22905)
22906{
Jeff Johnsone7245742012-09-05 17:12:55 -070022907 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 the chances of getting inlined*/
22909
22910 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22911 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22912 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22913 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22914
22915 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22916 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22917 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22918}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22919
22920
22921/*Copy a management frame header from WDI fmt into HAL fmt*/
22922WPT_STATIC WPT_INLINE void
22923WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22924(
22925 tSirMacMgmtHdr* pmacMgmtHdr,
22926 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22927)
22928{
22929 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22930 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22931 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22932 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22933 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22934 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22935 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22936 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22937 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22938 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22939 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22940
22941 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22942 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22943
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022946 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 pwdiMacMgmtHdr->bssId, 6);
22950
22951 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22952 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22953 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22954
22955}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22956
22957
22958/*Copy config bss parameters from WDI fmt into HAL fmt*/
22959WPT_STATIC WPT_INLINE void
22960WDI_CopyWDIConfigBSSToHALConfigBSS
22961(
22962 tConfigBssParams* phalConfigBSS,
22963 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22964)
22965{
22966
22967 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022968#ifdef WLAN_FEATURE_11AC
22969 /* Get the Version 1 Handler */
22970 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22971 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022972 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022973#endif
22974
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 wpalMemoryCopy( phalConfigBSS->bssId,
22976 pwdiConfigBSS->macBSSID,
22977 WDI_MAC_ADDR_LEN);
22978
22979#ifdef HAL_SELF_STA_PER_BSS
22980 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22981 pwdiConfigBSS->macSelfAddr,
22982 WDI_MAC_ADDR_LEN);
22983#endif
22984
22985 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22986
22987 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22988 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22989
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 pwdiConfigBSS->ucShortSlotTimeSupported;
22992 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22993 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22994 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22995 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22996 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22999 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23000 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23001 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23002 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23003 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23004 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23005 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23006 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23007 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23008 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23009
Jeff Johnsone7245742012-09-05 17:12:55 -070023010 phalConfigBSS->htOperMode =
23011 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023012
23013 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23014 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23015 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23016 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23017
23018#ifdef WLAN_FEATURE_VOWIFI
23019 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23020#endif
23021
23022 /*! Used 32 as magic number because that is how the ssid is declared inside the
23023 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23026 pwdiConfigBSS->wdiSSID.ucLength : 32;
23027 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 pwdiConfigBSS->wdiSSID.sSSID,
23029 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023030
23031 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23032 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023033
Jeff Johnson295189b2012-06-20 16:38:30 -070023034 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23035 &pwdiConfigBSS->wdiRateSet);
23036
23037 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23038
23039 if(phalConfigBSS->edcaParamsValid)
23040 {
23041 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23042 &pwdiConfigBSS->wdiBEEDCAParams);
23043 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23044 &pwdiConfigBSS->wdiBKEDCAParams);
23045 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23046 &pwdiConfigBSS->wdiVIEDCAParams);
23047 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23048 &pwdiConfigBSS->wdiVOEDCAParams);
23049 }
23050
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023052
23053 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23054
23055#ifdef WLAN_FEATURE_VOWIFI_11R
23056
Jeff Johnsone7245742012-09-05 17:12:55 -070023057 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023059
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 if( phalConfigBSS->extSetStaKeyParamValid )
23061 {
23062 /*-----------------------------------------------------------------------
23063 Copy the STA Key parameters into the HAL message
23064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23067
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23070
23071 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23072
23073 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23074
23075 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23076
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23078 keyIndex++)
23079 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23082 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23083 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23084 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23085 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23086 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023090 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23093 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 WDI_MAX_KEY_LENGTH);
23096 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 }
23098 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23099 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 sizeof(phalConfigBSS->extSetStaKeyParam) );
23102 }
23103
23104#endif /*WLAN_FEATURE_VOWIFI_11R*/
23105
Jeff Johnsone7245742012-09-05 17:12:55 -070023106#ifdef WLAN_FEATURE_11AC
23107 if(phalConfigBSS_V1 != NULL)
23108 {
23109 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23110 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23111 }
23112#endif
23113
Jeff Johnson295189b2012-06-20 16:38:30 -070023114}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23115
23116
Jeff Johnsone7245742012-09-05 17:12:55 -070023117/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 pointed to by user data */
23119WPT_STATIC WPT_INLINE void
23120WDI_ExtractRequestCBFromEvent
23121(
23122 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 void** ppUserData
23125)
23126{
23127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23128 switch ( pEvent->wdiRequest )
23129 {
23130 case WDI_START_REQ:
23131 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23132 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23133 break;
23134 case WDI_STOP_REQ:
23135 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23136 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23137 break;
23138 case WDI_INIT_SCAN_REQ:
23139 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23140 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23141 break;
23142 case WDI_START_SCAN_REQ:
23143 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23144 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23145 break;
23146 case WDI_END_SCAN_REQ:
23147 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23148 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23149 break;
23150 case WDI_FINISH_SCAN_REQ:
23151 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23152 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23153 break;
23154 case WDI_JOIN_REQ:
23155 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23156 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23157 break;
23158 case WDI_CONFIG_BSS_REQ:
23159 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23160 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23161 break;
23162 case WDI_DEL_BSS_REQ:
23163 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23164 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23165 break;
23166 case WDI_POST_ASSOC_REQ:
23167 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23168 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23169 break;
23170 case WDI_DEL_STA_REQ:
23171 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23172 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23173 break;
23174 case WDI_DEL_STA_SELF_REQ:
23175 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23176 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23177 break;
23178
23179 case WDI_SET_BSS_KEY_REQ:
23180 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23181 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23182 break;
23183 case WDI_RMV_BSS_KEY_REQ:
23184 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23185 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23186 break;
23187 case WDI_SET_STA_KEY_REQ:
23188 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23189 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23190 break;
23191 case WDI_RMV_STA_KEY_REQ:
23192 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23193 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23194 break;
23195 case WDI_ADD_TS_REQ:
23196 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23197 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23198 break;
23199 case WDI_DEL_TS_REQ:
23200 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23201 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23202 break;
23203 case WDI_UPD_EDCA_PRMS_REQ:
23204 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23205 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23206 break;
23207 case WDI_ADD_BA_SESSION_REQ:
23208 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23209 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23210 break;
23211 case WDI_DEL_BA_REQ:
23212 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23213 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23214 break;
23215#ifdef FEATURE_WLAN_CCX
23216 case WDI_TSM_STATS_REQ:
23217 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23218 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23219 break;
23220#endif
23221 case WDI_CH_SWITCH_REQ:
23222 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23223 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23224 break;
23225 case WDI_CONFIG_STA_REQ:
23226 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23227 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23228 break;
23229 case WDI_SET_LINK_ST_REQ:
23230 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23231 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23232 break;
23233 case WDI_GET_STATS_REQ:
23234 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23235 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23236 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023237#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23238 case WDI_GET_ROAM_RSSI_REQ:
23239 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23240 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23241 break;
23242#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 case WDI_UPDATE_CFG_REQ:
23244 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23245 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23246 break;
23247 case WDI_ADD_BA_REQ:
23248 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23249 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23250 break;
23251 case WDI_TRIGGER_BA_REQ:
23252 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23253 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23254 break;
23255 case WDI_UPD_BCON_PRMS_REQ:
23256 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23257 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23258 break;
23259 case WDI_SND_BCON_REQ:
23260 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23261 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23262 break;
23263 case WDI_ENTER_BMPS_REQ:
23264 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23265 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23266 break;
23267 case WDI_EXIT_BMPS_REQ:
23268 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23269 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23270 break;
23271 case WDI_ENTER_UAPSD_REQ:
23272 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23273 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23274 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023275 case WDI_EXIT_UAPSD_REQ:
23276 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23277 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23278 break;
23279 case WDI_SET_UAPSD_PARAM_REQ:
23280 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23281 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23282 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 case WDI_UPDATE_UAPSD_PARAM_REQ:
23284 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23285 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23286 break;
23287 case WDI_CONFIGURE_RXP_FILTER_REQ:
23288 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23289 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23290 break;
23291 case WDI_SET_BEACON_FILTER_REQ:
23292 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23293 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23294 break;
23295 case WDI_REM_BEACON_FILTER_REQ:
23296 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23297 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 case WDI_SET_RSSI_THRESHOLDS_REQ:
23300 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23301 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23302 break;
23303 case WDI_HOST_OFFLOAD_REQ:
23304 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23305 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23306 break;
23307 case WDI_WOWL_ADD_BC_PTRN_REQ:
23308 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23309 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23310 break;
23311 case WDI_WOWL_DEL_BC_PTRN_REQ:
23312 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23313 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23314 break;
23315 case WDI_WOWL_ENTER_REQ:
23316 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23317 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23318 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023319 case WDI_WOWL_EXIT_REQ:
23320 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23321 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23322 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23324 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23325 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23326 break;
23327 case WDI_FLUSH_AC_REQ:
23328 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23329 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23330 break;
23331 case WDI_BTAMP_EVENT_REQ:
23332 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23333 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23334 break;
23335 case WDI_KEEP_ALIVE_REQ:
23336 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23337 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23338 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023339#if defined FEATURE_WLAN_SCAN_PNO
23340 case WDI_SET_PREF_NETWORK_REQ:
23341 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23342 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23343 break;
23344 case WDI_SET_RSSI_FILTER_REQ:
23345 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23346 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23347 break;
23348 case WDI_UPDATE_SCAN_PARAMS_REQ:
23349 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23350 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23351 break;
23352#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 case WDI_SET_TX_PER_TRACKING_REQ:
23354 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23355 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023356 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023357#if defined WLAN_FEATURE_PACKET_FILTERING
23358 case WDI_8023_MULTICAST_LIST_REQ:
23359 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23360 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23361 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023362 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23363 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23364 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23365 break;
23366 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23367 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23368 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23369 break;
23370 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23371 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23372 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23373 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023374#endif
23375 case WDI_SET_POWER_PARAMS_REQ:
23376 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23377 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23378 break;
23379#if defined WLAN_FEATURE_GTK_OFFLOAD
23380 case WDI_GTK_OFFLOAD_REQ:
23381 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23382 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23383 break;
23384 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23385 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23386 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23387 break;
23388#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023389
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 default:
23391 *ppfnReqCB = NULL;
23392 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 }
23395}/*WDI_ExtractRequestCBFromEvent*/
23396
23397
23398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023399 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 frame xtl is enabled for a particular STA.
23401
23402 WDI_PostAssocReq must have been called.
23403
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 @param uSTAIdx: STA index
23405
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 @see WDI_PostAssocReq
23407 @return Result of the function call
23408*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023409wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023410WDI_IsHwFrameTxTranslationCapable
23411(
23412 wpt_uint8 uSTAIdx
23413)
23414{
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 uma value*/
23417 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 ------------------------------------------------------------------------*/
23420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23421 {
23422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23423 "WDI API call before module is initialized - Fail request");
23424
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 }
23427
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023428#ifdef WLAN_SOFTAP_VSTA_FEATURE
23429 if (IS_VSTA_IDX(uSTAIdx))
23430 {
23431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23432 "STA %d is a Virtual STA, "
23433 "HW frame translation disabled", uSTAIdx);
23434 return eWLAN_PAL_FALSE;
23435 }
23436#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023437
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 return gWDICb.bFrameTransEnabled;
23439}/*WDI_IsHwFrameTxTranslationCapable*/
23440
23441#ifdef FEATURE_WLAN_SCAN_PNO
23442/**
23443 @brief WDI_SetPreferredNetworkList
23444
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023447
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 wdiPNOScanCb: callback for passing back the response
23449 of the Set PNO operation received from the
23450 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023451
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023453 callback
23454
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 @return Result of the function call
23456*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023458WDI_SetPreferredNetworkReq
23459(
23460 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23461 WDI_PNOScanCb wdiPNOScanCb,
23462 void* pUserData
23463)
23464{
23465 WDI_EventInfoType wdiEventData = {{0}};
23466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23467
23468 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 ------------------------------------------------------------------------*/
23471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23472 {
23473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23474 "WDI API call before module is initialized - Fail request");
23475
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 }
23478
23479 /*------------------------------------------------------------------------
23480 Fill in Event data and post to the Main FSM
23481 ------------------------------------------------------------------------*/
23482 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 wdiEventData.pUserData = pUserData;
23487
23488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23489}
23490
23491
23492/**
23493 @brief WDI_SetRssiFilterReq
23494
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023497
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 wdiRssiFilterCb: callback for passing back the response
23499 of the Set RSSI Filter operation received from the
23500 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023501
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 callback
23504
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 @return Result of the function call
23506*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023508WDI_SetRssiFilterReq
23509(
23510 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23511 WDI_RssiFilterCb wdiRssiFilterCb,
23512 void* pUserData
23513)
23514{
23515 WDI_EventInfoType wdiEventData = {{0}};
23516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23517
23518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 ------------------------------------------------------------------------*/
23521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23522 {
23523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23524 "WDI API call before module is initialized - Fail request");
23525
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 }
23528
23529 /*------------------------------------------------------------------------
23530 Fill in Event data and post to the Main FSM
23531 ------------------------------------------------------------------------*/
23532 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023533 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023535 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023536 wdiEventData.pUserData = pUserData;
23537
23538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23539}/*WDI_SetRssiFilterReq*/
23540
23541/**
23542 @brief WDI_UpdateScanParamsReq
23543
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023546
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 wdiUpdateScanParamsCb: callback for passing back the response
23548 of the Set PNO operation received from the
23549 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023550
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023552 callback
23553
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 @return Result of the function call
23555*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023556WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023557WDI_UpdateScanParamsReq
23558(
23559 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23560 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23561 void* pUserData
23562)
23563{
23564 WDI_EventInfoType wdiEventData = {{0}};
23565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23566
23567 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 ------------------------------------------------------------------------*/
23570 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23571 {
23572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23573 "WDI API call before module is initialized - Fail request");
23574
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 }
23577
23578 /*------------------------------------------------------------------------
23579 Fill in Event data and post to the Main FSM
23580 ------------------------------------------------------------------------*/
23581 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023584 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 wdiEventData.pUserData = pUserData;
23586
23587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23588}
23589
23590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023593
23594 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 pwdiPNOScanReqParams: pointer to the info received
23596 from upper layers
23597 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 and its size
23599
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 @return Result of the function call
23601*/
23602
23603WDI_Status
23604WDI_PackPreferredNetworkList
23605(
23606 WDI_ControlBlockType* pWDICtx,
23607 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23608 wpt_uint8** ppSendBuffer,
23609 wpt_uint16* pSize
23610)
23611{
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 wpt_uint16 usDataOffset = 0;
23614 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023615 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 /*-----------------------------------------------------------------------
23618 Get message buffer
23619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023621 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023622 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023623 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 {
23625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23626 "Unable to get send buffer in Set PNO req %x ",
23627 pwdiPNOScanReqParams);
23628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 }
23631
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023632 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23633
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 /*-------------------------------------------------------------------------
23635 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23636 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023637 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023639 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23641
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023642 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023643 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23647
23648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23651 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23652 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23653
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023654 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 {
23656 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023657 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023658 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23659
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023660 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023662 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023663
23664 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023665 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667
23668 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023669 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023670 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023671
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023674 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023675 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23676 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23677 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23678 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023679
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023680 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023682 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023683
23684 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023685 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23687
23688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023690 pPrefNetwListParams->aNetworks[i].ssId.length,
23691 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023692 }
23693
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023694 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023695 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23697 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23698 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23699
23700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023701 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023702 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23704 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23705
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023706 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023708 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023710 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23712 }
23713
23714 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023715 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23717 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23718 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023720
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023721 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023723 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023724
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023725 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23727 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23728 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023730
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023731 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023733 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023734
23735 /*Set the output values*/
23736 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023737 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023738
23739 return WDI_STATUS_SUCCESS;
23740}/*WDI_PackPreferredNetworkList*/
23741
23742/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023745
23746 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 pwdiPNOScanReqParams: pointer to the info received
23748 from upper layers
23749 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 and its size
23751
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 @return Result of the function call
23753*/
23754
23755WDI_Status
23756WDI_PackPreferredNetworkListNew
23757(
23758 WDI_ControlBlockType* pWDICtx,
23759 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23760 wpt_uint8** ppSendBuffer,
23761 wpt_uint16* pSize
23762)
23763{
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 wpt_uint16 usDataOffset = 0;
23766 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023767 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023768 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023769
23770 /*-----------------------------------------------------------------------
23771 Get message buffer
23772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023774 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023776 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 {
23778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23779 "Unable to get send buffer in Set PNO req %x ",
23780 pwdiPNOScanReqParams);
23781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023783 }
23784
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023785 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23786
Jeff Johnson295189b2012-06-20 16:38:30 -070023787 /*-------------------------------------------------------------------------
23788 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23789 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023790 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023792 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23794
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023795 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23800
23801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023802 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23804 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23805 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23806
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023807 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 {
23809 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023810 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23812
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023813 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023815 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023816
23817 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023818 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820
23821 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023822 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023824
23825 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023826 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023828
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023831 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23833
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023834 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023835 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023836 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023837
23838 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023839 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023840 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23841
23842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023843 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023844 pPrefNetwListParams->aNetworks[i].ssId.length,
23845 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 }
23847
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023848 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23851 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23852 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23853
23854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023856 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023857 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23858 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23859
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023860 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023862 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023864 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23866 }
23867
23868 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023869 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23871 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23872 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023875 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023877 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023878
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023879 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23881 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23882 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023885 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023887 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023888
Jeff Johnson295189b2012-06-20 16:38:30 -070023889
23890 /*Set the output values*/
23891 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023893
23894 return WDI_STATUS_SUCCESS;
23895}/*WDI_PackPreferredNetworkListNew*/
23896
23897/**
23898 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023899
23900 @param pWDICtx: pointer to the WLAN DAL context
23901 pEventData: pointer to the event information structure
23902
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 @return Result of the function call
23904*/
23905WDI_Status
23906WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023907(
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 WDI_ControlBlockType* pWDICtx,
23909 WDI_EventInfoType* pEventData
23910)
23911{
23912 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23913 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917
23918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 -------------------------------------------------------------------------*/
23921 if (( NULL == pEventData ) ||
23922 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23923 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23924 {
23925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023929 }
23930
23931 /*-------------------------------------------------------------------------
23932 Pack the PNO request structure based on version
23933 -------------------------------------------------------------------------*/
23934 if ( pWDICtx->wdiPNOVersion > 0 )
23935 {
23936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023937 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 pWDICtx->wdiPNOVersion);
23939
23940 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23941 &pSendBuffer, &usSendSize);
23942 }
23943 else
23944 {
23945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023946 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023947 pWDICtx->wdiPNOVersion);
23948
23949 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23950 &pSendBuffer, &usSendSize);
23951 }
23952
23953 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23954 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23955 {
23956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023957 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 }
23961
23962 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023963 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023964
23965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23969 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023970}
23971
23972/**
23973 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023974
23975 @param pWDICtx: pointer to the WLAN DAL context
23976 pEventData: pointer to the event information structure
23977
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 @see
23979 @return Result of the function call
23980*/
23981WDI_Status
23982WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023983(
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 WDI_ControlBlockType* pWDICtx,
23985 WDI_EventInfoType* pEventData
23986)
23987{
23988 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23989 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 wpt_uint16 usDataOffset = 0;
23992 wpt_uint16 usSendSize = 0;
23993 wpt_uint8 ucRssiThreshold;
23994
23995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 -------------------------------------------------------------------------*/
23998 if (( NULL == pEventData ) ||
23999 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24000 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24001 {
24002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 }
24007
24008 /*-----------------------------------------------------------------------
24009 Get message buffer
24010 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 sizeof(ucRssiThreshold),
24013 &pSendBuffer, &usDataOffset, &usSendSize))||
24014 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24015 {
24016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24017 "Unable to get send buffer in Set PNO req %x %x %x",
24018 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 }
24022
24023 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24024
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 wpalMemoryCopy( pSendBuffer+usDataOffset,
24026 &ucRssiThreshold,
24027 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024028
24029 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031
24032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24036 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024037}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024038#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24039/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024040 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024041
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024042 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024043 by the Device Interface
24044
24045 wdiRoamOffloadScancb: callback for passing back the response
24046 of the Roam Candidate Lookup Req operation received from the
24047 device
24048
24049 pUserData: user data will be passed back with the
24050 callback
24051 @return Result of the function call
24052*/
24053WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024054WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024055(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024056 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024057 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24058 void* pUserData
24059)
24060{
24061 WDI_EventInfoType wdiEventData = {{0}};
24062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24063
24064 /*------------------------------------------------------------------------
24065 Sanity Check
24066 ------------------------------------------------------------------------*/
24067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24068 {
24069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24070 "WDI API call before module is initialized - Fail request");
24071
24072 return WDI_STATUS_E_NOT_ALLOWED;
24073 }
24074
24075 /*------------------------------------------------------------------------
24076 Fill in Event data and post to the Main FSM
24077 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024078 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24079 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24080 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024081 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24082 wdiEventData.pUserData = pUserData;
24083
24084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24085}
24086
24087void
24088WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24089{
24090 switch (wdiEdType)
24091 {
24092 case WDI_ED_NONE:
24093 *EdType = eED_NONE;
24094 break;
24095 case WDI_ED_WEP40:
24096 case WDI_ED_WEP104:
24097 *EdType = eED_WEP;
24098 break;
24099 case WDI_ED_TKIP:
24100 *EdType = eED_TKIP;
24101 break;
24102 case WDI_ED_CCMP:
24103#ifdef WLAN_FEATURE_11W
24104 case WDI_ED_AES_128_CMAC:
24105#endif
24106 *EdType = eED_CCMP;
24107 break;
24108#ifdef FEATURE_WLAN_WAPI
24109 case WDI_ED_WPI:
24110 *EdType = eED_WPI;
24111 break;
24112#endif
24113 case WDI_ED_ANY:
24114 *EdType = eED_ANY;
24115 break;
24116
24117 default:
24118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24119 "%s: Unknown Encryption Type", __func__);
24120 break;
24121 }
24122}
24123
24124/**
24125 @brief Helper function to pack Start Roam Candidate Lookup
24126 Request parameters
24127
24128 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024129 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024130 from upper layers
24131 ppSendBuffer, pSize - out pointers of the packed buffer
24132 and its size
24133
24134 @return Result of the function call
24135*/
24136
24137WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024138WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024139(
24140 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024141 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024142 wpt_uint8** ppSendBuffer,
24143 wpt_uint16* pSize
24144)
24145{
24146 wpt_uint8* pSendBuffer = NULL;
24147 wpt_uint16 usDataOffset = 0;
24148 wpt_uint16 usSendSize = 0;
24149 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24150 wpt_uint8 i;
24151 /*-----------------------------------------------------------------------
24152 Get message buffer
24153 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024154 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024155 sizeof(tRoamCandidateListParams),
24156 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024157 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024158 {
24159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24160 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024161 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024162 WDI_ASSERT(0);
24163 return WDI_STATUS_E_FAILURE;
24164 }
24165 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024166 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024167 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024168 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024169 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024170 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024171 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024172 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024173 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024174 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024175 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024176
24177 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024178 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024179 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024180 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024181 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24182 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024183 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24184 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24185 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24186 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24187 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24188 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24189 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24190 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24191 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24192 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24193 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24194 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24195 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24196 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024197 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024198 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24199 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24200 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024201
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24203 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24204 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24205 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24206 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24207 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24208 "HomeAwayTime=%d\n",
24209 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24210 pRoamCandidateListParams->RoamScanOffloadEnabled,
24211 pRoamCandidateListParams->Command,
24212 pRoamCandidateListParams->StartScanReason,
24213 pRoamCandidateListParams->NeighborScanTimerPeriod,
24214 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24215 pRoamCandidateListParams->NeighborScanChannelMinTime,
24216 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24217 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24218 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24219 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24220 pRoamCandidateListParams->ConnectedNetwork.authentication,
24221 pRoamCandidateListParams->ConnectedNetwork.encryption,
24222 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24223 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24224 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024225 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024226 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
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.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024229 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24230 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024231 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024232 pRoamCandidateListParams->us24GProbeSize);
24233 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024234 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024235 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024236 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024237 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24238 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024239 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024240 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024241 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24242 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24243 pRoamCandidateListParams->nProbes =
24244 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24245 pRoamCandidateListParams->HomeAwayTime =
24246 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024248 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24249 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024251 }
24252
24253
24254 /*Set the output values*/
24255 *ppSendBuffer = pSendBuffer;
24256 *pSize = usSendSize;
24257 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024258}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024259
24260/**
24261 @brief Process Start Roam Candidate Lookup Request function
24262
24263 @param pWDICtx: pointer to the WLAN DAL context
24264 pEventData: pointer to the event information structure
24265
24266 @return Result of the function call
24267*/
24268WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024269WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024270(
24271 WDI_ControlBlockType* pWDICtx,
24272 WDI_EventInfoType* pEventData
24273)
24274{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024275 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024276 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24277 wpt_uint8* pSendBuffer = NULL;
24278 wpt_uint16 usSendSize = 0;
24279 WDI_Status wdiStatus;
24280 /*-------------------------------------------------------------------------
24281 Sanity check
24282 -------------------------------------------------------------------------*/
24283 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024284 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024285 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24286 {
24287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24288 "%s: Invalid parameters", __func__);
24289 WDI_ASSERT(0);
24290 return WDI_STATUS_E_FAILURE;
24291 }
24292
24293 /*-------------------------------------------------------------------------
24294 Pack the Start Roam Candidate Lookup request structure based on version
24295 -------------------------------------------------------------------------*/
24296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24297 "%s: Packing Roam Candidate Lookup request ", __func__);
24298
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024299 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024300 &pSendBuffer, &usSendSize);
24301
24302 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24303 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24304 {
24305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24306 "%s: failed to pack request parameters", __func__);
24307 WDI_ASSERT(0);
24308 return wdiStatus;
24309 }
24310
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024311 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24312 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024313
24314 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024315 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024316 -------------------------------------------------------------------------*/
24317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024318 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024319}
24320
24321/**
24322 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24323 response is being received over the bus from HAL)
24324
24325 @param pWDICtx: pointer to the WLAN DAL context
24326 pEventData: pointer to the event information structure
24327
24328 @see
24329 @return Result of the function call
24330*/
24331WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024332WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024333(
24334 WDI_ControlBlockType* pWDICtx,
24335 WDI_EventInfoType* pEventData
24336)
24337{
24338 WDI_Status wdiStatus;
24339 eHalStatus halStatus;
24340 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24341
24342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24343
24344 /*-------------------------------------------------------------------------
24345 Sanity check
24346 -------------------------------------------------------------------------*/
24347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24348 ( NULL == pEventData->pEventData ))
24349 {
24350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24351 "%s: Invalid parameters", __func__);
24352 WDI_ASSERT(0);
24353 return WDI_STATUS_E_FAILURE;
24354 }
24355
24356 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24357
24358 /*-------------------------------------------------------------------------
24359 Extract response and send it to UMAC
24360 -------------------------------------------------------------------------*/
24361 halStatus = *((eHalStatus*)pEventData->pEventData);
24362 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24363
24364 /*Notify UMAC*/
24365 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24366
24367 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024368}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024369#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024370
24371/**
24372 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024373
24374 @param pWDICtx: pointer to the WLAN DAL context
24375 pEventData: pointer to the event information structure
24376
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 @see
24378 @return Result of the function call
24379*/
24380WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024381WDI_PackUpdateScanParamsReq
24382(
24383 WDI_ControlBlockType* pWDICtx,
24384 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24385 wpt_uint8** ppSendBuffer,
24386 wpt_uint16* pSize
24387)
24388{
24389 wpt_uint8* pSendBuffer = NULL;
24390 wpt_uint16 usDataOffset = 0;
24391 wpt_uint16 usSendSize = 0;
24392 tUpdateScanParams updateScanParams = {0};
24393
24394
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024396 "Begin WDI Update Scan Parameters Old Style Params");
24397 /*-----------------------------------------------------------------------
24398 Get message buffer
24399 -----------------------------------------------------------------------*/
24400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24401 sizeof(updateScanParams),
24402 &pSendBuffer, &usDataOffset, &usSendSize))||
24403 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24404 {
24405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24406 "Unable to get send buffer in Update Scan Params req %x",
24407 pwdiUpdateScanParams);
24408 WDI_ASSERT(0);
24409 return WDI_STATUS_E_FAILURE;
24410 }
24411
24412 //
24413 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24414 //
24415
24416 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24417 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24418
24419 updateScanParams.ucChannelCount =
24420 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24421 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24422 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24423 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24424
24425 wpalMemoryCopy( updateScanParams.aChannels,
24426 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24427 updateScanParams.ucChannelCount);
24428
24429
24430 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24431 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24432 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24433 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24434 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24435
24436 wpalMemoryCopy( pSendBuffer+usDataOffset,
24437 &updateScanParams,
24438 sizeof(updateScanParams));
24439
24440 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24441 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24442
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024444 "End Update Scan Parameters Old Style");
24445
24446 /*Set the output values*/
24447 *ppSendBuffer = pSendBuffer;
24448 *pSize = usSendSize;
24449
24450 return WDI_STATUS_SUCCESS;
24451}
24452
24453/**
24454 @brief Process Update Scan Params function
24455
24456 @param pWDICtx: pointer to the WLAN DAL context
24457 pEventData: pointer to the event information structure
24458
24459 @see
24460 @return Result of the function call
24461*/
24462WDI_Status
24463WDI_PackUpdateScanParamsReqEx
24464(
24465 WDI_ControlBlockType* pWDICtx,
24466 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24467 wpt_uint8** ppSendBuffer,
24468 wpt_uint16* pSize
24469)
24470{
24471 wpt_uint8* pSendBuffer = NULL;
24472 wpt_uint16 usDataOffset = 0;
24473 wpt_uint16 usSendSize = 0;
24474 tUpdateScanParamsEx updateScanParams = {0};
24475
24476
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024477 /*-----------------------------------------------------------------------
24478 Get message buffer
24479 -----------------------------------------------------------------------*/
24480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24481 sizeof(updateScanParams),
24482 &pSendBuffer, &usDataOffset, &usSendSize))||
24483 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24484 {
24485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24486 "Unable to get send buffer in Update Scan Params Ex req %x",
24487 pwdiUpdateScanParams);
24488 WDI_ASSERT(0);
24489 return WDI_STATUS_E_FAILURE;
24490 }
24491
24492 //
24493 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24494 //
24495
24496 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24497 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24498
24499 updateScanParams.ucChannelCount =
24500 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24501 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24502 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24503 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24504
24505 wpalMemoryCopy( updateScanParams.aChannels,
24506 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24507 updateScanParams.ucChannelCount);
24508
24509
24510 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24511 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24512 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24513 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24514 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24515
24516 wpalMemoryCopy( pSendBuffer+usDataOffset,
24517 &updateScanParams,
24518 sizeof(updateScanParams));
24519
24520 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24521 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24522
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024523 /*Set the output values*/
24524 *ppSendBuffer = pSendBuffer;
24525 *pSize = usSendSize;
24526
24527 return WDI_STATUS_SUCCESS;
24528}
24529
24530/**
24531 @brief Process Update Scan Params function
24532
24533 @param pWDICtx: pointer to the WLAN DAL context
24534 pEventData: pointer to the event information structure
24535
24536 @see
24537 @return Result of the function call
24538*/
24539WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024540WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024541(
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 WDI_ControlBlockType* pWDICtx,
24543 WDI_EventInfoType* pEventData
24544)
24545{
24546 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24547 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024549 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024550 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
24552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024554 -------------------------------------------------------------------------*/
24555 if (( NULL == pEventData ) ||
24556 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24557 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24558 {
24559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 }
24564
24565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24566 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024567
24568 //
24569 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24570 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024571 if ( pWDICtx->wlanVersion.revision < 1 )
24572 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024573 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024574 &pSendBuffer, &usSendSize);
24575 }
24576 else
24577 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024578 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24579 &pSendBuffer, &usSendSize);
24580 }
24581
24582 if(WDI_STATUS_SUCCESS != wdiStatus)
24583 {
24584 //memory allocation failed
24585 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024587
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024589 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024590 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024592 wdiUpdateScanParamsCb, pEventData->pUserData,
24593 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024594}
24595
24596/**
24597 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024598
24599 @param pWDICtx: pointer to the WLAN DAL context
24600 pEventData: pointer to the event information structure
24601
Jeff Johnson295189b2012-06-20 16:38:30 -070024602 @see
24603 @return Result of the function call
24604*/
24605WDI_Status
24606WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024607(
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 WDI_ControlBlockType* pWDICtx,
24609 WDI_EventInfoType* pEventData
24610)
24611{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024612 WDI_LowLevelIndType wdiInd;
24613 tpPrefNetwFoundParams pNetwFoundParams;
24614 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024615
24616
24617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 -------------------------------------------------------------------------*/
24620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24621 ( NULL == pEventData->pEventData ))
24622 {
24623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 }
24628
24629 /*-------------------------------------------------------------------------
24630 Extract indication and send it to UMAC
24631 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024632 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24633
24634 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24635 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24636 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24637
24638 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24639 {
24640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24641 "%s: fail to allocate memory", __func__);
24642 return WDI_STATUS_MEM_FAILURE;
24643 }
24644
24645 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24646 (pNetwFoundParams->ssId.length < 32 )?
24647 pNetwFoundParams->ssId.length : 32;
24648 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24649 pNetwFoundParams->ssId.ssId,
24650 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24651 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24652 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24653 pNetwFoundParams->frameLength;
24654 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24655 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24656 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024657
24658 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024659 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024660
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 // DEBUG
24662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24663 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24664 wdiInd.wdiIndicationType,
24665 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24666 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24667
ltimariu034f7d62013-01-24 18:54:33 -080024668 if ( pWDICtx->wdiLowLevelIndCB )
24669 {
24670 /*Notify UMAC*/
24671 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24672 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024673
24674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024675}
24676
24677/**
24678 @brief Process PNO Rsp function (called when a
24679 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024680
24681 @param pWDICtx: pointer to the WLAN DAL context
24682 pEventData: pointer to the event information structure
24683
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 @see
24685 @return Result of the function call
24686*/
24687WDI_Status
24688WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024689(
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 WDI_ControlBlockType* pWDICtx,
24691 WDI_EventInfoType* pEventData
24692)
24693{
24694 WDI_Status wdiStatus;
24695 eHalStatus halStatus;
24696 WDI_PNOScanCb wdiPNOScanCb = NULL;
24697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24698
24699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 -------------------------------------------------------------------------*/
24702 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24703 ( NULL == pEventData->pEventData ))
24704 {
24705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024706 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 }
24710
24711
Jeff Johnsone7245742012-09-05 17:12:55 -070024712 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024713
24714 /*-------------------------------------------------------------------------
24715 Extract response and send it to UMAC
24716 -------------------------------------------------------------------------*/
24717 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024719
24720 /*Notify UMAC*/
24721 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24722
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724}/*WDI_ProcessSetPreferredNetworkRsp*/
24725
24726/**
24727 @brief Process RSSI Filter Rsp function (called when a
24728 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024729
24730 @param pWDICtx: pointer to the WLAN DAL context
24731 pEventData: pointer to the event information structure
24732
Jeff Johnson295189b2012-06-20 16:38:30 -070024733 @see
24734 @return Result of the function call
24735*/
24736WDI_Status
24737WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024738(
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 WDI_ControlBlockType* pWDICtx,
24740 WDI_EventInfoType* pEventData
24741)
24742{
24743 WDI_Status wdiStatus;
24744 eHalStatus halStatus;
24745 WDI_RssiFilterCb wdiRssiFilterCb;
24746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24747
24748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 -------------------------------------------------------------------------*/
24751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24752 ( NULL == pEventData->pEventData ))
24753 {
24754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 }
24759
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024761
24762 /*-------------------------------------------------------------------------
24763 Extract response and send it to UMAC
24764 -------------------------------------------------------------------------*/
24765 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024766 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024767
24768 /*Notify UMAC*/
24769 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24770
Jeff Johnsone7245742012-09-05 17:12:55 -070024771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024772}/*WDI_ProcessSetRssiFilterRsp*/
24773
24774/**
24775 @brief Process Update Scan Params Rsp function (called when a
24776 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024777
24778 @param pWDICtx: pointer to the WLAN DAL context
24779 pEventData: pointer to the event information structure
24780
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 @see
24782 @return Result of the function call
24783*/
24784WDI_Status
24785WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024786(
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 WDI_ControlBlockType* pWDICtx,
24788 WDI_EventInfoType* pEventData
24789)
24790{
24791 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024792 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024793 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024794 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24796
24797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024799 -------------------------------------------------------------------------*/
24800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24801 ( NULL == pEventData->pEventData ))
24802 {
24803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024807 }
24808
24809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024810 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024811
Jeff Johnsone7245742012-09-05 17:12:55 -070024812 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024813
24814 /*-------------------------------------------------------------------------
24815 Extract response and send it to UMAC
24816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024817 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24818 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 sizeof(halUpdScanParams.status));
24820
24821 uStatus = halUpdScanParams.status;
24822
24823 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024824 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024825
24826 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024827 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024828
Jeff Johnsone7245742012-09-05 17:12:55 -070024829 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024830
24831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024832 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 halUpdScanParams.status);
24834
24835 /*Notify UMAC*/
24836 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24837
Jeff Johnsone7245742012-09-05 17:12:55 -070024838 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024839}
24840#endif // FEATURE_WLAN_SCAN_PNO
24841
24842#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024843WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024844WDI_8023MulticastListReq
24845(
24846 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24847 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24848 void* pUserData
24849)
24850{
24851 WDI_EventInfoType wdiEventData;
24852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24853
24854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024855 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024856
24857 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 ------------------------------------------------------------------------*/
24860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24861 {
24862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24863 "WDI API call before module is initialized - Fail request");
24864
Jeff Johnsone7245742012-09-05 17:12:55 -070024865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 }
24867
24868 /*------------------------------------------------------------------------
24869 Fill in Event data and post to the Main FSM
24870 ------------------------------------------------------------------------*/
24871 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024872 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024874 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024875 wdiEventData.pUserData = pUserData;
24876
24877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24878}
24879
Jeff Johnsone7245742012-09-05 17:12:55 -070024880WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024881WDI_ReceiveFilterSetFilterReq
24882(
24883 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24884 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24885 void* pUserData
24886)
24887{
24888 WDI_EventInfoType wdiEventData;
24889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24890
24891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024892 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024893
24894 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024895 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024896 ------------------------------------------------------------------------*/
24897 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24898 {
24899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24900 "WDI API call before module is initialized - Fail request");
24901
Jeff Johnsone7245742012-09-05 17:12:55 -070024902 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024903 }
24904
24905 /*------------------------------------------------------------------------
24906 Fill in Event data and post to the Main FSM
24907 ------------------------------------------------------------------------*/
24908 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024909 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24910 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024911 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24912 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024913 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024914 wdiEventData.pUserData = pUserData;
24915
24916
24917 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24918}
24919
Jeff Johnsone7245742012-09-05 17:12:55 -070024920WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024921WDI_FilterMatchCountReq
24922(
24923 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24924 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24925 void* pUserData
24926)
24927{
24928 WDI_EventInfoType wdiEventData;
24929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24930
24931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024932 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024933
24934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 ------------------------------------------------------------------------*/
24937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24938 {
24939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24940 "WDI API call before module is initialized - Fail request");
24941
Jeff Johnsone7245742012-09-05 17:12:55 -070024942 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024943 }
24944
24945 /*------------------------------------------------------------------------
24946 Fill in Event data and post to the Main FSM
24947 ------------------------------------------------------------------------*/
24948 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024949 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024951 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024952 wdiEventData.pUserData = pUserData;
24953
24954
24955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24956}
24957
Jeff Johnsone7245742012-09-05 17:12:55 -070024958WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024959WDI_ReceiveFilterClearFilterReq
24960(
24961 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24962 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24963 void* pUserData
24964)
24965{
24966 WDI_EventInfoType wdiEventData;
24967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24968
24969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024970 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024971
24972 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024973 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 ------------------------------------------------------------------------*/
24975 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24976 {
24977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24978 "WDI API call before module is initialized - Fail request");
24979
Jeff Johnsone7245742012-09-05 17:12:55 -070024980 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024981 }
24982
24983 /*------------------------------------------------------------------------
24984 Fill in Event data and post to the Main FSM
24985 ------------------------------------------------------------------------*/
24986 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024987 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024988 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024990 wdiEventData.pUserData = pUserData;
24991
24992
24993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24994}
24995
24996/**
24997 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024998
24999 @param pWDICtx: pointer to the WLAN DAL context
25000 pEventData: pointer to the event information structure
25001
Jeff Johnson295189b2012-06-20 16:38:30 -070025002 @see
25003 @return Result of the function call
25004*/
25005WDI_Status
25006WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025007(
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 WDI_ControlBlockType* pWDICtx,
25009 WDI_EventInfoType* pEventData
25010)
25011{
25012 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25013 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025015 wpt_uint16 usDataOffset = 0;
25016 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025017 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025018 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025019 wpt_uint8 ucCurrentBSSSesIdx = 0;
25020 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025021
25022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025023 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025024
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025025 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25026 if( NULL == pRcvFltMcAddrListType )
25027 {
25028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25029 "Failed to alloc in WDI_Process8023MulticastListReq");
25030 return WDI_STATUS_E_FAILURE;
25031 }
25032
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025035 -------------------------------------------------------------------------*/
25036 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025037 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025039 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025040 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25041 {
25042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025043 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025044 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025046 return WDI_STATUS_E_FAILURE;
25047 }
25048
25049 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25050 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25051 &pBSSSes);
25052 if ( NULL == pBSSSes )
25053 {
25054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025055 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025056 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025058 }
25059
25060 /*-----------------------------------------------------------------------
25061 Get message buffer
25062 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25064 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 sizeof(tHalRcvFltMcAddrListType),
25066 &pSendBuffer, &usDataOffset, &usSendSize))||
25067 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25068 {
25069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25070 "Unable to get send buffer in "
25071 "WDI_Process8023MulticastListReq() %x %x %x",
25072 pEventData, pwdiFltPktSetMcListReqParamsType,
25073 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025074 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025077 }
25078
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025079 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025080 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025081 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025083 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25085 sizeof(tSirMacAddr));
25086 }
25087
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025088 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025089 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025090 pRcvFltMcAddrListType,
25091 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025092
25093 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025095
25096
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025097 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025102 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025104}
25105
25106/**
25107 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025108
25109 @param pWDICtx: pointer to the WLAN DAL context
25110 pEventData: pointer to the event information structure
25111
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 @see
25113 @return Result of the function call
25114*/
25115WDI_Status
25116WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025117(
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 WDI_ControlBlockType* pWDICtx,
25119 WDI_EventInfoType* pEventData
25120)
25121{
25122 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25123 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 wpt_uint16 usDataOffset = 0;
25126 wpt_uint16 usSendSize = 0;
25127 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025128 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025129 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025130 wpt_uint8 ucCurrentBSSSesIdx = 0;
25131 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025132 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25133 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025134
25135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025136 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025137
25138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025140 -------------------------------------------------------------------------*/
25141 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025144 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25146 {
25147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025150 return WDI_STATUS_E_FAILURE;
25151 }
25152
25153 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25154 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25155 &pBSSSes);
25156 if ( NULL == pBSSSes )
25157 {
25158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025159 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 }
25162
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025163 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25164 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025165
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025166 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25167 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25168 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25169
25170 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25171 usSessRcvPktFilterCfgSize);
25172
25173 if(NULL == pSessRcvPktFilterCfg)
25174 {
25175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25176 "%s: Failed to allocate memory for "
25177 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025178 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025179 WDI_ASSERT(0);
25180 return WDI_STATUS_E_FAILURE;
25181 }
25182
25183 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25184
25185 /*-----------------------------------------------------------------------
25186 Get message buffer
25187 -----------------------------------------------------------------------*/
25188
25189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25190 usSessRcvPktFilterCfgSize,
25191 &pSendBuffer, &usDataOffset, &usSendSize))||
25192 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25193 {
25194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25195 "Unable to get send buffer in "
25196 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25197 pEventData, pwdiSetRcvPktFilterReqInfo,
25198 wdiReceiveFilterSetFilterCb);
25199 WDI_ASSERT(0);
25200 wpalMemoryFree(pSessRcvPktFilterCfg);
25201 return WDI_STATUS_E_FAILURE;
25202 }
25203
25204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25205 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25206 usSendSize,pSessRcvPktFilterCfg);
25207
25208 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25209 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25210 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25211 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25212
25213 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25214
25215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25216 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25217 pSessRcvPktFilterCfg->filterType);
25218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25219 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25220 pSessRcvPktFilterCfg->coleasceTime);
25221
25222 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25223 {
25224 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25225 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25226 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25227 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25228 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25229 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25230 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25231 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25232
25233 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25234 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25235 8);
25236 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25237 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25238 8);
25239
25240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25241 "Out:Proto %d Comp Flag %d \n",
25242 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25243 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25244
25245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25246 "Data Offset %d Data Len %d\n",
25247 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25248 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25249
25250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25251 "CData: %d:%d:%d:%d:%d:%d\n",
25252 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25253 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25254 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25255 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25256 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25257 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25258
25259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25260 "MData: %d:%d:%d:%d:%d:%d\n",
25261 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25262 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25263 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25264 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25265 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25266 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25267 }
25268
25269 wpalMemoryCopy( pSendBuffer+usDataOffset,
25270 pSessRcvPktFilterCfg,
25271 usSessRcvPktFilterCfgSize);
25272
25273
25274 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25275 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25276
25277 wpalMemoryFree(pSessRcvPktFilterCfg);
25278
25279 }
25280 /*If SLM_SESSIONIZATION is not supported then do this */
25281 else
25282 {
25283 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25284 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25285 * sizeof(tHalRcvPktFilterParams));
25286
25287 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025288 usRcvPktFilterCfgSize);
25289
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025290 if(NULL == pRcvPktFilterCfg)
25291 {
25292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25293 "%s: Failed to allocate memory for "
25294 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025295 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025296 WDI_ASSERT(0);
25297 return WDI_STATUS_E_FAILURE;
25298 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025299
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025300 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025301
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025302 /*-----------------------------------------------------------------------
25303 Get message buffer
25304 -----------------------------------------------------------------------*/
25305 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 usRcvPktFilterCfgSize,
25307 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025308 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25309 {
25310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 "Unable to get send buffer in "
25312 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25313 pEventData, pwdiSetRcvPktFilterReqInfo,
25314 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025315 WDI_ASSERT(0);
25316 wpalMemoryFree(pRcvPktFilterCfg);
25317 return WDI_STATUS_E_FAILURE;
25318 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025319
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025322 usSendSize,usRcvPktFilterCfgSize);
25323
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025324 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25325 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25326 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25327 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025330 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025331 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025334 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025335
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025336 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25337 {
25338 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25339 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25340 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25341 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25342 pRcvPktFilterCfg->paramsData[i].dataOffset =
25343 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25344 pRcvPktFilterCfg->paramsData[i].dataLength =
25345 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025346
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025347 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25349 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025350 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025351 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25352 8);
25353
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025355 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025356 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025357 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25358
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25360 "Data Offset %d Data Len %d\n",
25361 pRcvPktFilterCfg->paramsData[i].dataOffset,
25362 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025363
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25365 "CData: %d:%d:%d:%d:%d:%d\n",
25366 pRcvPktFilterCfg->paramsData[i].compareData[0],
25367 pRcvPktFilterCfg->paramsData[i].compareData[1],
25368 pRcvPktFilterCfg->paramsData[i].compareData[2],
25369 pRcvPktFilterCfg->paramsData[i].compareData[3],
25370 pRcvPktFilterCfg->paramsData[i].compareData[4],
25371 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025372
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25374 "MData: %d:%d:%d:%d:%d:%d\n",
25375 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25376 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25377 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25378 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25379 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25380 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25381 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025382
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025383 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025384 pRcvPktFilterCfg,
25385 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025386
25387
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025388 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25389 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025390
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025392 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025393 wpalMemoryFree(pRcvPktFilterCfg);
25394 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025396 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025398 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025399 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025400 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025401}
25402
25403/**
25404 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025405
25406 @param pWDICtx: pointer to the WLAN DAL context
25407 pEventData: pointer to the event information structure
25408
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 @see
25410 @return Result of the function call
25411*/
25412WDI_Status
25413WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025414(
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 WDI_ControlBlockType* pWDICtx,
25416 WDI_EventInfoType* pEventData
25417)
25418{
25419 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25420 NULL;
25421 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25422 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 wpt_uint16 usDataOffset = 0;
25425 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025426 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25427 wpt_uint8 ucCurrentBSSSesIdx = 0;
25428 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025429
25430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025431 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025432
25433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 -------------------------------------------------------------------------*/
25436 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025437 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25441 {
25442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 }
25447
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025448 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25449 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25450 &pBSSSes);
25451 if ( NULL == pBSSSes )
25452 {
25453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025454 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025455 return WDI_STATUS_E_FAILURE;
25456 }
25457
Jeff Johnson295189b2012-06-20 16:38:30 -070025458 /*-----------------------------------------------------------------------
25459 Get message buffer
25460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25462 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025463 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025464 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025465 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025466 {
25467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25468 "Unable to get send buffer in "
25469 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25470 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25471 wdiFilterMatchCountCb);
25472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 }
25475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025476 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25477 wpalMemoryCopy( pSendBuffer+usDataOffset,
25478 &rcvFltPktMatchCntReqParam,
25479 sizeof(rcvFltPktMatchCntReqParam));
25480
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 //
25482 // Don't need to fill send buffer other than header
25483 //
25484 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025485 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025486
25487
25488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025489 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25492 wdiFilterMatchCountCb,
25493 pEventData->pUserData,
25494 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025495}
25496
25497/**
25498 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025499
25500 @param pWDICtx: pointer to the WLAN DAL context
25501 pEventData: pointer to the event information structure
25502
Jeff Johnson295189b2012-06-20 16:38:30 -070025503 @see
25504 @return Result of the function call
25505*/
25506WDI_Status
25507WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025508(
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 WDI_ControlBlockType* pWDICtx,
25510 WDI_EventInfoType* pEventData
25511)
Jeff Johnsone7245742012-09-05 17:12:55 -070025512{
Jeff Johnson295189b2012-06-20 16:38:30 -070025513 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25514 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025515 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 wpt_uint16 usDataOffset = 0;
25517 wpt_uint16 usSendSize = 0;
25518 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025519 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025520 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025521
25522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025523 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025524
25525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 -------------------------------------------------------------------------*/
25528 if (( NULL == pEventData ) ||
25529 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25530 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25533 {
25534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025537 return WDI_STATUS_E_FAILURE;
25538 }
25539
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025540 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25542 &pBSSSes);
25543 if ( NULL == pBSSSes )
25544 {
25545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025546 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025548 }
25549
25550 /*-----------------------------------------------------------------------
25551 Get message buffer
25552 -----------------------------------------------------------------------*/
25553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025554 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 sizeof(tHalRcvFltPktClearParam),
25556 &pSendBuffer, &usDataOffset, &usSendSize))||
25557 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25558 {
25559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25560 "Unable to get send buffer in "
25561 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25562 pEventData, pwdiRcvFltPktClearReqParamsType,
25563 wdiRcvFltPktClearFilterCb);
25564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 }
25567
25568
25569 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025571 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573
Jeff Johnsone7245742012-09-05 17:12:55 -070025574 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25575 wpalMemoryCopy( pSendBuffer+usDataOffset,
25576 &rcvFltPktClearParam,
25577 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025578
25579 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025581
25582
25583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025584 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025589}
25590
25591/**
25592 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025593
25594 @param pWDICtx: pointer to the WLAN DAL context
25595 pEventData: pointer to the event information structure
25596
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 @see
25598 @return Result of the function call
25599*/
25600WDI_Status
25601WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025602(
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 WDI_ControlBlockType* pWDICtx,
25604 WDI_EventInfoType* pEventData
25605)
25606{
Jeff Johnson295189b2012-06-20 16:38:30 -070025607 eHalStatus halStatus;
25608 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025609 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25610 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25612
25613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025614 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025615
25616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 -------------------------------------------------------------------------*/
25619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25620 ( NULL == pEventData->pEventData ))
25621 {
25622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 }
25627
Jeff Johnsone7245742012-09-05 17:12:55 -070025628 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025629
25630 /*-------------------------------------------------------------------------
25631 Extract response and send it to UMAC
25632 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025633 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25634 {
25635 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25636 pEventData->pEventData,
25637 sizeof(halRcvFltPktSetMcListRsp));
25638
25639 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25640 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25641 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25642 halRcvFltPktSetMcListRsp.bssIdx;
25643 }
25644 else
25645 {
25646 halStatus = *((eHalStatus*)pEventData->pEventData);
25647 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25648 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025649
25650 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025651 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025652
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025654}
25655
25656/**
25657 @brief Process Set Rsp function (called when a
25658 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025659
25660 @param pWDICtx: pointer to the WLAN DAL context
25661 pEventData: pointer to the event information structure
25662
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 @see
25664 @return Result of the function call
25665*/
25666WDI_Status
25667WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025668(
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 WDI_ControlBlockType* pWDICtx,
25670 WDI_EventInfoType* pEventData
25671)
25672{
Jeff Johnson295189b2012-06-20 16:38:30 -070025673 eHalStatus halStatus;
25674 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025675 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25676 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25678
25679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025680 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025681
25682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 -------------------------------------------------------------------------*/
25685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25686 ( NULL == pEventData->pEventData ))
25687 {
25688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025689 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025692 }
25693
25694 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025696
25697 /*-------------------------------------------------------------------------
25698 Extract response and send it to UMAC
25699 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025700 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25701 {
25702 wpalMemoryCopy( &halSetPktFilterRspParams,
25703 pEventData->pEventData,
25704 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025705
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025706 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25707 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25708 }
25709 else
25710 {
25711 halStatus = *((eHalStatus*)pEventData->pEventData);
25712 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25713 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025714 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025715 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025716
Jeff Johnsone7245742012-09-05 17:12:55 -070025717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025718}
25719
25720/**
25721 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025722
25723 @param pWDICtx: pointer to the WLAN DAL context
25724 pEventData: pointer to the event information structure
25725
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 @see
25727 @return Result of the function call
25728*/
25729WDI_Status
25730WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025731(
Jeff Johnson295189b2012-06-20 16:38:30 -070025732 WDI_ControlBlockType* pWDICtx,
25733 WDI_EventInfoType* pEventData
25734)
25735{
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025738 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25739 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025740
25741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25742
25743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025744 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025745
25746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025748 -------------------------------------------------------------------------*/
25749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25750 ( NULL == pEventData->pEventData ))
25751 {
25752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025756 }
25757
Jeff Johnsone7245742012-09-05 17:12:55 -070025758 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025759
25760 /*-------------------------------------------------------------------------
25761 Extract response and send it to UMAC
25762 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025763 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25764 {
25765 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25766 pEventData->pEventData,
25767 sizeof(halRcvFltrPktMatachRsp));
25768
25769 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25770 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25771 }
25772 else
25773 {
25774 halStatus = *((eHalStatus*)pEventData->pEventData);
25775 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25776 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025777
25778 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025779 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025780
Jeff Johnsone7245742012-09-05 17:12:55 -070025781 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025782}
25783
25784/**
25785 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025786
25787 @param pWDICtx: pointer to the WLAN DAL context
25788 pEventData: pointer to the event information structure
25789
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 @see
25791 @return Result of the function call
25792*/
25793WDI_Status
25794WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025795(
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 WDI_ControlBlockType* pWDICtx,
25797 WDI_EventInfoType* pEventData
25798)
25799{
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 eHalStatus halStatus;
25801 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025802 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25803 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25805
25806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025807 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025808
25809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025811 -------------------------------------------------------------------------*/
25812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25813 ( NULL == pEventData->pEventData ))
25814 {
25815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025819 }
25820
25821 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025822 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025823
25824 /*-------------------------------------------------------------------------
25825 Extract response and send it to UMAC
25826 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025827 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25828 {
25829 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25830 pEventData->pEventData,
25831 sizeof(halRcvFltPktClearRspMsg));
25832
25833 wdiRcvFltPktClearRspParamsType.wdiStatus =
25834 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25835 wdiRcvFltPktClearRspParamsType.bssIdx =
25836 halRcvFltPktClearRspMsg.bssIdx;
25837 }
25838 else
25839 {
25840 halStatus = *((eHalStatus*)pEventData->pEventData);
25841 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25842 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025843
25844 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025845 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025846
Jeff Johnsone7245742012-09-05 17:12:55 -070025847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025848}
25849#endif // WLAN_FEATURE_PACKET_FILTERING
25850
25851/**
25852 @brief Process Shutdown Rsp function
25853 There is no shutdown response comming from HAL
25854 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025855
Jeff Johnson295189b2012-06-20 16:38:30 -070025856 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025857 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025858
25859 @see
25860 @return Result of the function call
25861*/
25862WDI_Status
25863WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025864(
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 WDI_ControlBlockType* pWDICtx,
25866 WDI_EventInfoType* pEventData
25867)
25868{
25869 /*There is no shutdown response comming from HAL - function just kept for
25870 simmetry */
25871 WDI_ASSERT(0);
25872 return WDI_STATUS_SUCCESS;
25873}/*WDI_ProcessShutdownRsp*/
25874
25875/**
25876 @brief WDI_SetPowerParamsReq
25877
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025880
Jeff Johnson295189b2012-06-20 16:38:30 -070025881 wdiPowerParamsCb: callback for passing back the response
25882 of the Set Power Params operation received from the
25883 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025884
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025886 callback
25887
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 @return Result of the function call
25889*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025891WDI_SetPowerParamsReq
25892(
25893 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25894 WDI_SetPowerParamsCb wdiPowerParamsCb,
25895 void* pUserData
25896)
25897{
25898 WDI_EventInfoType wdiEventData;
25899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25900
25901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 ------------------------------------------------------------------------*/
25904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25905 {
25906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25907 "WDI API call before module is initialized - Fail request");
25908
Jeff Johnsone7245742012-09-05 17:12:55 -070025909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 }
25911
25912 /*------------------------------------------------------------------------
25913 Fill in Event data and post to the Main FSM
25914 ------------------------------------------------------------------------*/
25915 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025917 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 wdiEventData.pUserData = pUserData;
25920
25921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25922}/*WDI_SetPowerParamsReq*/
25923
25924/**
25925 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025926
25927 @param pWDICtx: pointer to the WLAN DAL context
25928 pEventData: pointer to the event information structure
25929
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 @see
25931 @return Result of the function call
25932*/
25933WDI_Status
25934WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025935(
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 WDI_ControlBlockType* pWDICtx,
25937 WDI_EventInfoType* pEventData
25938)
25939{
25940 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25941 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025942 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025943 wpt_uint16 usDataOffset = 0;
25944 wpt_uint16 usSendSize = 0;
25945 tSetPowerParamsType powerParams;
25946
25947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 -------------------------------------------------------------------------*/
25950 if (( NULL == pEventData ) ||
25951 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25952 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25953 {
25954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 }
25959
25960 /*-----------------------------------------------------------------------
25961 Get message buffer
25962 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 sizeof(powerParams),
25965 &pSendBuffer, &usDataOffset, &usSendSize))||
25966 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25967 {
25968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25969 "Unable to get send buffer in Set PNO req %x %x %x",
25970 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 }
25974
25975 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025976 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25978
25979 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25982
25983 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25986
25987 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025989 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25990
25991 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25994
25995 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025996 powerParams.uBETInterval =
25997 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025998
Yue Ma0da19492013-05-13 17:01:29 -070025999 /* MAX LI for modulated DTIM */
26000 powerParams.uMaxLIModulatedDTIM =
26001 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026002
26003 wpalMemoryCopy( pSendBuffer+usDataOffset,
26004 &powerParams,
26005 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026006
26007 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026008 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026009
26010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026011 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026013 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26014 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026015}
26016
26017/**
26018 @brief Process Power Params Rsp function (called when a
26019 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026020
26021 @param pWDICtx: pointer to the WLAN DAL context
26022 pEventData: pointer to the event information structure
26023
Jeff Johnson295189b2012-06-20 16:38:30 -070026024 @see
26025 @return Result of the function call
26026*/
26027WDI_Status
26028WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026029(
Jeff Johnson295189b2012-06-20 16:38:30 -070026030 WDI_ControlBlockType* pWDICtx,
26031 WDI_EventInfoType* pEventData
26032)
26033{
26034 WDI_Status wdiStatus;
26035 eHalStatus halStatus;
26036 WDI_SetPowerParamsCb wdiPowerParamsCb;
26037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26038
26039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 -------------------------------------------------------------------------*/
26042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26043 ( NULL == pEventData->pEventData ))
26044 {
26045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 }
26050
Jeff Johnsone7245742012-09-05 17:12:55 -070026051 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026052
26053 /*-------------------------------------------------------------------------
26054 Extract response and send it to UMAC
26055 -------------------------------------------------------------------------*/
26056 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026058
26059 /*Notify UMAC*/
26060 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26061
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026063}/*WDI_ProcessSetPowerParamsRsp*/
26064
26065#ifdef WLAN_FEATURE_GTK_OFFLOAD
26066/**
26067 @brief WDI_GTKOffloadReq will be called when the upper MAC
26068 wants to set GTK Rekey Counter while in power save. Upon
26069 the call of this API the WLAN DAL will pack and send a
26070 HAL GTK offload request message to the lower RIVA
26071 sub-system if DAL is in state STARTED.
26072
26073 In state BUSY this request will be queued. Request won't
26074 be allowed in any other state.
26075
26076 WDI_PostAssocReq must have been called.
26077
26078 @param pwdiGtkOffloadParams: the GTK offload as specified
26079 by the Device Interface
26080
26081 wdiGtkOffloadCb: callback for passing back the response
26082 of the GTK offload operation received from the device
26083
26084 pUserData: user data will be passed back with the
26085 callback
26086
26087 @see WDI_PostAssocReq
26088 @return Result of the function call
26089*/
26090WDI_Status
26091WDI_GTKOffloadReq
26092(
26093 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26094 WDI_GtkOffloadCb wdiGtkOffloadCb,
26095 void* pUserData
26096)
26097{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026098 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26100
26101 /*------------------------------------------------------------------------
26102 Sanity Check
26103 ------------------------------------------------------------------------*/
26104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26105 {
26106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26107 "WDI API call before module is initialized - Fail request");
26108
26109 return WDI_STATUS_E_NOT_ALLOWED;
26110 }
26111
26112 /*------------------------------------------------------------------------
26113 Fill in Event data and post to the Main FSM
26114 ------------------------------------------------------------------------*/
26115 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26116 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026117 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026118 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26119 wdiEventData.pUserData = pUserData;
26120
26121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26122}
26123
26124
26125/**
26126 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26127 MAC wants to get GTK Rekey Counter while in power save.
26128 Upon the call of this API the WLAN DAL will pack and
26129 send a HAL GTK offload request message to the lower RIVA
26130 sub-system if DAL is in state STARTED.
26131
26132 In state BUSY this request will be queued. Request won't
26133 be allowed in any other state.
26134
26135 WDI_PostAssocReq must have been called.
26136
26137 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26138 Information Message as specified by the
26139 Device Interface
26140
26141 wdiGtkOffloadGetInfoCb: callback for passing back the
26142 response of the GTK offload operation received from the
26143 device
26144
26145 pUserData: user data will be passed back with the
26146 callback
26147
26148 @see WDI_PostAssocReq
26149 @return Result of the function call
26150*/
26151WDI_Status
26152WDI_GTKOffloadGetInfoReq
26153(
26154 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26155 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26156 void* pUserData
26157)
26158{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026159 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26161
26162 /*------------------------------------------------------------------------
26163 Sanity Check
26164 ------------------------------------------------------------------------*/
26165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26166 {
26167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26168 "WDI API call before module is initialized - Fail request");
26169
26170 return WDI_STATUS_E_NOT_ALLOWED;
26171 }
26172
26173 /*------------------------------------------------------------------------
26174 Fill in Event data and post to the Main FSM
26175 ------------------------------------------------------------------------*/
26176 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26177 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26178 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26179 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26180 wdiEventData.pUserData = pUserData;
26181
26182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26183}
26184
26185
26186/**
26187 @brief Process set GTK Offload Request function
26188
26189 @param pWDICtx: pointer to the WLAN DAL context
26190 pEventData: pointer to the event information structure
26191
26192 @see
26193 @return Result of the function call
26194*/
26195WDI_Status
26196WDI_ProcessGTKOffloadReq
26197(
26198 WDI_ControlBlockType* pWDICtx,
26199 WDI_EventInfoType* pEventData
26200)
26201{
26202 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26203 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26204 wpt_uint8* pSendBuffer = NULL;
26205 wpt_uint16 usDataOffset = 0;
26206 wpt_uint16 usSendSize = 0;
26207 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026208 wpt_uint8 ucCurrentSessionId = 0;
26209 WDI_BSSSessionType* pBSSSes = NULL;
26210
Jeff Johnson295189b2012-06-20 16:38:30 -070026211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26212
26213 /*-------------------------------------------------------------------------
26214 Sanity check
26215 -------------------------------------------------------------------------*/
26216 if (( NULL == pEventData ) ||
26217 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26218 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26219 {
26220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026223 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026224 }
26225
26226 /*-----------------------------------------------------------------------
26227 Get message buffer
26228 -----------------------------------------------------------------------*/
26229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26230 sizeof(gtkOffloadReqParams),
26231 &pSendBuffer, &usDataOffset, &usSendSize))||
26232 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26233 {
26234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26235 "Unable to get send buffer in GTK offload req %x %x %x",
26236 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26237 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026238 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026239 }
26240
26241 //
26242 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26243 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026244 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26245 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26246 &pBSSSes);
26247 if ( NULL == pBSSSes )
26248 {
26249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026250 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026251 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026252 }
26253
26254 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26255
Jeff Johnson295189b2012-06-20 16:38:30 -070026256 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26257 // Copy KCK
26258 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26259 // Copy KEK
26260 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26261 // Copy KeyReplayCounter
26262 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26263
26264 wpalMemoryCopy( pSendBuffer+usDataOffset,
26265 &gtkOffloadReqParams,
26266 sizeof(gtkOffloadReqParams));
26267
26268 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26269 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26270
26271 /*-------------------------------------------------------------------------
26272 Send Get STA Request to HAL
26273 -------------------------------------------------------------------------*/
26274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26275 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026276
26277fail:
26278 // Release the message buffer so we don't leak
26279 wpalMemoryFree(pSendBuffer);
26280
26281failRequest:
26282 //WDA should have failure check to avoid the memory leak
26283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026284}
26285
26286
26287/**
26288 @brief Process GTK Offload Get Information Request function
26289
26290 @param pWDICtx: pointer to the WLAN DAL context
26291 pEventData: pointer to the event information structure
26292
26293 @see
26294 @return Result of the function call
26295*/
26296WDI_Status
26297WDI_ProcessGTKOffloadGetInfoReq
26298(
26299 WDI_ControlBlockType* pWDICtx,
26300 WDI_EventInfoType* pEventData
26301)
26302{
26303 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26304 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26305 wpt_uint8* pSendBuffer = NULL;
26306 wpt_uint16 usDataOffset = 0;
26307 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026308 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26309 wpt_uint8 ucCurrentSessionId = 0;
26310 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026311
26312 /*-------------------------------------------------------------------------
26313 Sanity check
26314 -------------------------------------------------------------------------*/
26315 if (( NULL == pEventData ) ||
26316 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26317 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26318 {
26319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026321 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026322 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026323 }
26324
26325 /*-----------------------------------------------------------------------
26326 Get message buffer
26327 -----------------------------------------------------------------------*/
26328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026329 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026330 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026331 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026332 {
26333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26334 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26335 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26336 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026337 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026339 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26340 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26341 &pBSSSes);
26342 if ( NULL == pBSSSes )
26343 {
26344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026345 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026346 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026347 }
26348 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026349
26350 //
26351 // Don't need to fill send buffer other than header
26352 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026353 wpalMemoryCopy( pSendBuffer+usDataOffset,
26354 &halGtkOffloadGetInfoReqParams,
26355 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026356
26357 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26358 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26359
26360 /*-------------------------------------------------------------------------
26361 Send Get STA Request to HAL
26362 -------------------------------------------------------------------------*/
26363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26364 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026365fail:
26366 // Release the message buffer so we don't leak
26367 wpalMemoryFree(pSendBuffer);
26368
26369failRequest:
26370 //WDA should have failure check to avoid the memory leak
26371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026372}
26373
26374/**
26375 @brief Process host offload Rsp function (called when a
26376 response is being received over the bus from HAL)
26377
26378 @param pWDICtx: pointer to the WLAN DAL context
26379 pEventData: pointer to the event information structure
26380
26381 @see
26382 @return Result of the function call
26383*/
26384WDI_Status
26385WDI_ProcessGtkOffloadRsp
26386(
26387 WDI_ControlBlockType* pWDICtx,
26388 WDI_EventInfoType* pEventData
26389)
26390{
Jeff Johnson295189b2012-06-20 16:38:30 -070026391 eHalStatus halStatus;
26392 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026393 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26394 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26396
26397 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26398
26399 /*-------------------------------------------------------------------------
26400 Sanity check
26401 -------------------------------------------------------------------------*/
26402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26403 ( NULL == pEventData->pEventData))
26404 {
26405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 WDI_ASSERT(0);
26408 return WDI_STATUS_E_FAILURE;
26409 }
26410
26411 /*-------------------------------------------------------------------------
26412 Extract response and send it to UMAC
26413 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026414 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26415 {
26416 wpalMemoryCopy( &halGtkOffloadRspParams,
26417 pEventData->pEventData,
26418 sizeof(halGtkOffloadRspParams));
26419
26420 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026421 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026422 wdiGtkOffloadRsparams.bssIdx =
26423 halGtkOffloadRspParams.bssIdx;
26424 }
26425 else
26426 {
26427 halStatus = *((eHalStatus*)pEventData->pEventData);
26428 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26429 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026430
26431 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026432 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026433
26434 return WDI_STATUS_SUCCESS;
26435}
26436
26437/**
26438 @brief Process GTK Offload Get Information Response function
26439
26440 @param pWDICtx: pointer to the WLAN DAL context
26441 pEventData: pointer to the event information structure
26442
26443 @see
26444 @return Result of the function call
26445*/
26446WDI_Status
26447WDI_ProcessGTKOffloadGetInfoRsp
26448(
26449 WDI_ControlBlockType* pWDICtx,
26450 WDI_EventInfoType* pEventData
26451)
26452{
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026455 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26456 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026457 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026458
26459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26460
26461 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26462
26463 /*-------------------------------------------------------------------------
26464 Sanity check
26465 -------------------------------------------------------------------------*/
26466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26467 ( NULL == pEventData->pEventData ))
26468 {
26469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 WDI_ASSERT(0);
26472 return WDI_STATUS_E_FAILURE;
26473 }
26474
26475 /*-------------------------------------------------------------------------
26476 Extract response and send it to UMAC
26477 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026478 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26479 {
26480 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26481 pEventData->pEventData,
26482 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026483
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026484 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026485 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026486 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26487 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26488 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26489 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26490 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26491 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26492 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26493 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026494
26495 wpalMutexAcquire(&pWDICtx->wptMutex);
26496 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26497 &pBSSSes);
26498
26499 if ( NULL == pBSSSes )
26500 {
26501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26502 "Association sequence for this BSS does not exist or "
26503 "association no longer in progress - mysterious HAL response");
26504 wpalMutexRelease(&pWDICtx->wptMutex);
26505 return WDI_STATUS_E_NOT_ALLOWED;
26506 }
26507
26508 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26509 sizeof (wpt_macAddr));
26510 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026511 }
26512 else
26513 {
26514 halStatus = *((eHalStatus*)pEventData->pEventData);
26515 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26516 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 /*Notify UMAC*/
26518 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26519 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026520 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026521
26522 return WDI_STATUS_SUCCESS;
26523}
26524#endif // WLAN_FEATURE_GTK_OFFLOAD
26525
26526#ifdef WLAN_WAKEUP_EVENTS
26527WDI_Status
26528WDI_ProcessWakeReasonInd
26529(
26530 WDI_ControlBlockType* pWDICtx,
26531 WDI_EventInfoType* pEventData
26532)
26533{
26534 WDI_LowLevelIndType *pWdiInd;
26535 tpWakeReasonParams pWakeReasonParams;
26536 wpt_uint32 allocSize = 0;
26537
26538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026539 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026540
26541 /*-------------------------------------------------------------------------
26542 Sanity check
26543 -------------------------------------------------------------------------*/
26544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26545 ( NULL == pEventData->pEventData ))
26546 {
26547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026549 WDI_ASSERT( 0 );
26550 return WDI_STATUS_E_FAILURE;
26551 }
26552
26553 /*-------------------------------------------------------------------------
26554 Extract indication and send it to UMAC
26555 -------------------------------------------------------------------------*/
26556 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26557
26558 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26559
26560 //Allocate memory for WDI_WakeReasonIndType structure
26561 pWdiInd = wpalMemoryAllocate(allocSize) ;
26562
26563 if(NULL == pWdiInd)
26564 {
26565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26566 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026567 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026568 WDI_ASSERT(0);
26569 return WDI_STATUS_E_FAILURE;
26570 }
26571
26572 wpalMemoryZero(pWdiInd, allocSize);
26573
26574 /* Fill in the indication parameters*/
26575 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26576 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26577 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26578 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26579 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26580 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26581 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26582 &(pWakeReasonParams->aDataStart[0]),
26583 pWakeReasonParams->ulStoredDataLen);
26584
ltimariu034f7d62013-01-24 18:54:33 -080026585
26586 if ( pWDICtx->wdiLowLevelIndCB )
26587 {
26588 /*Notify UMAC*/
26589 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26590 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026591
26592 //Free memory allocated for WDI_WakeReasonIndType structure
26593 wpalMemoryFree(pWdiInd);
26594
26595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026596 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026597
26598 return WDI_STATUS_SUCCESS;
26599}
26600#endif // WLAN_WAKEUP_EVENTS
26601
26602void WDI_GetWcnssCompiledApiVersion
26603(
26604 WDI_WlanVersionType *pWcnssApiVersion
26605)
26606{
26607 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26608 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26609 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26610 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26611}
26612
26613/**
26614 @brief Process Set TM Level Rsp function (called when a
26615 response is being received over the bus from HAL)
26616
26617 @param pWDICtx: pointer to the WLAN DAL context
26618 pEventData: pointer to the event information structure
26619
26620 @see
26621 @return Result of the function call
26622*/
26623WDI_Status
26624WDI_ProcessSetTmLevelRsp
26625(
26626 WDI_ControlBlockType* pWDICtx,
26627 WDI_EventInfoType* pEventData
26628)
26629{
26630 WDI_Status wdiStatus;
26631 eHalStatus halStatus;
26632 WDI_SetTmLevelCb wdiSetTmLevelCb;
26633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26634
26635 /*-------------------------------------------------------------------------
26636 Sanity check
26637 -------------------------------------------------------------------------*/
26638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26639 ( NULL == pEventData->pEventData ))
26640 {
26641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026643 WDI_ASSERT(0);
26644 return WDI_STATUS_E_FAILURE;
26645 }
26646
26647 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26648
26649 /*-------------------------------------------------------------------------
26650 Extract response and send it to UMAC
26651 -------------------------------------------------------------------------*/
26652 halStatus = *((eHalStatus*)pEventData->pEventData);
26653 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26654
26655 /*Notify UMAC*/
26656 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26657
26658 return WDI_STATUS_SUCCESS;
26659}/*WDI_ProcessSetTmLevelRsp*/
26660
26661/**
26662 @brief Process Set Thermal Mitigation level Changed request
26663
26664 @param pWDICtx: pointer to the WLAN DAL context
26665 pEventData: pointer to the event information structure
26666
26667 @see
26668 @return Result of the function call
26669*/
26670WDI_Status
26671WDI_ProcessSetTmLevelReq
26672(
26673 WDI_ControlBlockType* pWDICtx,
26674 WDI_EventInfoType* pEventData
26675)
26676{
26677 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
26678 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
26679 wpt_uint8* pSendBuffer = NULL;
26680 wpt_uint16 usDataOffset = 0;
26681 wpt_uint16 usSendSize = 0;
26682 tSetThermalMitgationType halTmMsg;
26683
26684 /*-------------------------------------------------------------------------
26685 Sanity check
26686 -------------------------------------------------------------------------*/
26687 if (( NULL == pEventData ) ||
26688 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
26689 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
26690 {
26691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026693 WDI_ASSERT(0);
26694 return WDI_STATUS_E_FAILURE;
26695 }
26696
26697 /*-----------------------------------------------------------------------
26698 Get message buffer
26699 -----------------------------------------------------------------------*/
26700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
26701 sizeof(halTmMsg),
26702 &pSendBuffer, &usDataOffset, &usSendSize))||
26703 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
26704 {
26705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26706 "Unable to get send buffer in Set PNO req %x %x %x",
26707 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
26708 WDI_ASSERT(0);
26709 return WDI_STATUS_E_FAILURE;
26710 }
26711
26712 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
26713 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
26714
26715 wpalMemoryCopy( pSendBuffer+usDataOffset,
26716 &halTmMsg,
26717 sizeof(halTmMsg));
26718
26719 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
26720 pWDICtx->pfncRspCB = NULL;
26721 /*-------------------------------------------------------------------------
26722 Send Get STA Request to HAL
26723 -------------------------------------------------------------------------*/
26724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26725 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
26726}
26727
26728/* Fill the value from the global features enabled array to the global capabilities
26729 * bitmap struct
26730 */
26731static void
26732FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
26733{
26734 wpt_int8 i;
26735 for (i=0; i<len; i++)
26736 {
26737 setFeatCaps(fCaps, enabledFeat[i]);
26738 }
26739}
26740
26741/**
26742 @brief WDI_featureCapsExchangeReq
26743 Post feature capability bitmap exchange event.
26744 Host will send its own capability to FW in this req and
26745 expect FW to send its capability back as a bitmap in Response
26746
26747 @param
26748
26749 wdiFeatureCapsExchangeCb: callback called on getting the response.
26750 It is kept to mantain similarity between WDI reqs and if needed, can
26751 be used in future. Currently, It is set to NULL
26752
26753 pUserData: user data will be passed back with the
26754 callback
26755
26756 @see
26757 @return Result of the function call
26758*/
26759WDI_Status
26760WDI_featureCapsExchangeReq
26761(
26762 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
26763 void* pUserData
26764)
26765{
26766 WDI_EventInfoType wdiEventData;
26767 wpt_int32 fCapsStructSize;
26768
26769 /*------------------------------------------------------------------------
26770 Sanity Check
26771 ------------------------------------------------------------------------*/
26772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26773 {
26774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26775 "WDI API call before module is initialized - Fail request");
26776
26777 return WDI_STATUS_E_NOT_ALLOWED;
26778 }
26779
26780 /* Allocate memory separately for global variable carrying FW caps */
26781 fCapsStructSize = sizeof(tWlanFeatCaps);
26782 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26783 if ( NULL == gpHostWlanFeatCaps )
26784 {
26785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26786 "Cannot allocate memory for host capability info\n");
26787 WDI_ASSERT(0);
26788 return WDI_STATUS_MEM_FAILURE;
26789 }
26790
26791 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26792
26793 /*------------------------------------------------------------------------
26794 Fill in Event data and post to the Main FSM
26795 ------------------------------------------------------------------------*/
26796 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26797 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26799 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026800 gpHostWlanFeatCaps->featCaps[0],
26801 gpHostWlanFeatCaps->featCaps[1],
26802 gpHostWlanFeatCaps->featCaps[2],
26803 gpHostWlanFeatCaps->featCaps[3]
26804 );
26805
26806 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26807 wdiEventData.pEventData = gpHostWlanFeatCaps;
26808 wdiEventData.uEventDataSize = fCapsStructSize;
26809 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26810 wdiEventData.pUserData = pUserData;
26811
26812 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26813}
26814
26815/**
Yathishd8713192012-12-10 14:21:35 -080026816 @brief Disable Active mode offload in Host
26817
26818 @param void
26819 @see
26820 @return void
26821*/
26822void
26823WDI_disableCapablityFeature(wpt_uint8 feature_index)
26824{
26825 supportEnabledFeatures[feature_index] = 0;
26826 return;
26827}
26828
26829/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 @brief Process Host-FW Capability Exchange Request function
26831
26832 @param pWDICtx: pointer to the WLAN DAL context
26833 pEventData: pointer to the event information structure
26834
26835 @see
26836 @return Result of the function call
26837*/
26838WDI_Status
26839WDI_ProcessFeatureCapsExchangeReq
26840(
26841 WDI_ControlBlockType* pWDICtx,
26842 WDI_EventInfoType* pEventData
26843)
26844{
26845 wpt_uint8* pSendBuffer = NULL;
26846 wpt_uint16 usDataOffset = 0;
26847 wpt_uint16 usSendSize = 0;
26848 wpt_uint16 usLen = 0;
26849
26850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26851
26852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026853 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026854
26855 /*-------------------------------------------------------------------------
26856 Sanity check
26857 -------------------------------------------------------------------------*/
26858 /* Call back function is NULL since not required for cap exchange req */
26859 if (( NULL == pEventData ) ||
26860 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26861 {
26862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026864 WDI_ASSERT(0);
26865 return WDI_STATUS_E_FAILURE;
26866 }
26867
26868 /*-----------------------------------------------------------------------
26869 Get message buffer
26870 -----------------------------------------------------------------------*/
26871 usLen = sizeof(tWlanFeatCaps);
26872
26873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26874 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26875 usLen,
26876 &pSendBuffer, &usDataOffset, &usSendSize))||
26877 ( usSendSize < (usDataOffset + usLen )))
26878 {
26879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26880 "Unable to get send buffer in feat caps exchange req %x %x",
26881 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26882 WDI_ASSERT(0);
26883 return WDI_STATUS_E_FAILURE;
26884 }
26885
26886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026887 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026888 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26889 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26890 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26891 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26892 );
26893
26894 /* Copy host caps after the offset in the send buffer */
26895 wpalMemoryCopy( pSendBuffer+usDataOffset,
26896 (tWlanFeatCaps *)pEventData->pEventData,
26897 usLen);
26898
26899 /*-------------------------------------------------------------------------
26900 Send Start Request to HAL
26901 -------------------------------------------------------------------------*/
26902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26903 (WDI_StartRspCb)pEventData->pCBfnc,
26904 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26905
26906}/*WDI_ProcessFeatureCapsExchangeReq*/
26907
26908/**
26909 @brief Process Host-FW Capability Exchange Response function
26910
26911 @param pWDICtx: pointer to the WLAN DAL context
26912 pEventData: pointer to the event information structure
26913
26914 @see
26915 @return Result of the function call
26916*/
26917WDI_Status
26918WDI_ProcessFeatureCapsExchangeRsp
26919(
26920 WDI_ControlBlockType* pWDICtx,
26921 WDI_EventInfoType* pEventData
26922)
26923{
26924 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26925 wpt_int32 fCapsStructSize;
26926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26927
26928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026929 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026930
26931 /*-------------------------------------------------------------------------
26932 Sanity check
26933 -------------------------------------------------------------------------*/
26934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26935 ( NULL == pEventData->pEventData ))
26936 {
26937 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 WDI_ASSERT(0);
26941 return WDI_STATUS_E_FAILURE;
26942 }
26943
26944 /* Allocate memory separately for global variable carrying FW caps */
26945 fCapsStructSize = sizeof(tWlanFeatCaps);
26946 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26947 if ( NULL == gpFwWlanFeatCaps )
26948 {
26949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26950 "Cannot allocate memory for host capability info\n");
26951 WDI_ASSERT(0);
26952 return WDI_STATUS_MEM_FAILURE;
26953 }
26954
26955 /*-------------------------------------------------------------------------
26956 Unpack HAL Response Message - the header was already extracted by the
26957 main Response Handling procedure
26958 -------------------------------------------------------------------------*/
26959 /*-------------------------------------------------------------------------
26960 Extract response and send it to UMAC
26961 -------------------------------------------------------------------------*/
26962
26963 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26964 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26966 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026967 gpFwWlanFeatCaps->featCaps[0],
26968 gpFwWlanFeatCaps->featCaps[1],
26969 gpFwWlanFeatCaps->featCaps[2],
26970 gpFwWlanFeatCaps->featCaps[3]
26971 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026972 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26973
26974 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26975 if (wdiFeatureCapsExchangeCb != NULL)
26976 wdiFeatureCapsExchangeCb(NULL, NULL);
26977
26978 return WDI_STATUS_SUCCESS;
26979}
26980
Mohit Khanna4a70d262012-09-11 16:30:12 -070026981#ifdef WLAN_FEATURE_11AC
26982WDI_Status
26983WDI_ProcessUpdateVHTOpModeRsp
26984(
26985 WDI_ControlBlockType* pWDICtx,
26986 WDI_EventInfoType* pEventData
26987)
26988{
26989 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26990 WDI_Status wdiStatus;
26991 eHalStatus halStatus;
26992
26993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26994
26995 /*-------------------------------------------------------------------------
26996 Sanity check
26997 -------------------------------------------------------------------------*/
26998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26999 ( NULL == pEventData->pEventData))
27000 {
27001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027002 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027003 WDI_ASSERT(0);
27004 return WDI_STATUS_E_FAILURE;
27005 }
27006 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27007
27008 /*-------------------------------------------------------------------------
27009 Extract response and send it to UMAC
27010 -------------------------------------------------------------------------*/
27011 halStatus = *((eHalStatus*)pEventData->pEventData);
27012 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27013
27014 /*Notify UMAC*/
27015 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27016
27017 return WDI_STATUS_SUCCESS;
27018}
27019#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027020/**
27021 @brief WDI_getHostWlanFeatCaps
27022 WDI API that returns whether the feature passed to it as enum value in
27023 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27024 variable storing host capability bitmap to find this. This can be used by
27025 other moduels to decide certain things like call different APIs based on
27026 whether a particular feature is supported.
27027
27028 @param
27029
27030 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27031
27032 @see
27033 @return
27034 0 - if the feature is NOT supported in host
27035 any non-zero value - if the feature is SUPPORTED in host.
27036*/
27037wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27038{
27039 wpt_uint8 featSupported = 0;
27040 if (gpHostWlanFeatCaps != NULL)
27041 {
27042 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27043 }
27044 else
27045 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027047 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027048 }
27049 return featSupported;
27050}
27051
27052/**
27053 @brief WDI_getFwWlanFeatCaps
27054 WDI API that returns whether the feature passed to it as enum value in
27055 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27056 variable storing host capability bitmap to find this. This can be used by
27057 other moduels to decide certain things like call different APIs based on
27058 whether a particular feature is supported.
27059
27060 @param
27061
27062 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27063 in wlan_hal_msg.h.
27064
27065 @see
27066 @return
27067 0 - if the feature is NOT supported in FW
27068 any non-zero value - if the feature is SUPPORTED in FW.
27069*/
27070wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27071{
27072 wpt_uint8 featSupported = 0;
27073 if (gpFwWlanFeatCaps != NULL)
27074 {
27075 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27076 }
27077 else
27078 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027080 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027081 }
27082 return featSupported;
27083}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027084
27085#ifdef WLAN_FEATURE_11AC
27086WDI_Status
27087WDI_ProcessUpdateVHTOpModeReq
27088(
27089 WDI_ControlBlockType* pWDICtx,
27090 WDI_EventInfoType* pEventData
27091)
27092{
27093 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27094 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27095 wpt_uint8* pSendBuffer = NULL;
27096 wpt_uint16 usDataOffset = 0;
27097 wpt_uint16 usSendSize = 0;
27098
27099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27100
27101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027102 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027103
27104 /*-------------------------------------------------------------------------
27105 Sanity check
27106 -------------------------------------------------------------------------*/
27107 if (( NULL == pEventData ) ||
27108 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27109 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27110 {
27111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027112 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027113 WDI_ASSERT(0);
27114 return WDI_STATUS_E_FAILURE;
27115 }
27116
27117 /*-----------------------------------------------------------------------
27118 Get message buffer
27119 -----------------------------------------------------------------------*/
27120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27121 sizeof(WDI_UpdateVHTOpMode),
27122 &pSendBuffer, &usDataOffset, &usSendSize))||
27123 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27124 {
27125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27126 "Unable to get send buffer in update vht opMode req");
27127 WDI_ASSERT(0);
27128 return WDI_STATUS_E_FAILURE;
27129 }
27130
27131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27132 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27133
27134 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27135 sizeof(WDI_UpdateVHTOpMode));
27136
27137 /*-------------------------------------------------------------------------
27138 Send Start Request to HAL
27139 -------------------------------------------------------------------------*/
27140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27141 wdiVHTOpModeCb,
27142 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27143
27144}
27145
27146WDI_Status
27147WDI_UpdateVHTOpModeReq
27148(
27149 WDI_UpdateVHTOpMode *pData,
27150 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27151 void* pUserData
27152)
27153{
27154 WDI_EventInfoType wdiEventData;
27155
27156 /*------------------------------------------------------------------------
27157 Sanity Check
27158 ------------------------------------------------------------------------*/
27159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27160 {
27161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27162 "WDI API call before module is initialized - Fail request");
27163
27164 return WDI_STATUS_E_NOT_ALLOWED;
27165 }
27166
27167 /*------------------------------------------------------------------------
27168 Fill in Event data and post to the Main FSM
27169 ------------------------------------------------------------------------*/
27170 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27171 wdiEventData.pEventData = pData;
27172 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27173 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27174 wdiEventData.pUserData = pUserData;
27175
27176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27177 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27178
27179 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27180
27181}
27182#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027183
27184/**
27185 @brief WDI_TransportChannelDebug -
27186 Display DXE Channel debugging information
27187 User may request to display DXE channel snapshot
27188 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027189
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027190 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027191 @param enableStallDetect : Enable stall detect feature
27192 This feature will take effect to data performance
27193 Not integrate till fully verification
27194 @see
27195 @return none
27196*/
27197void WDI_TransportChannelDebug
27198(
27199 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027200 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027201)
27202{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027203 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027204 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027205}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027206/**
27207 @brief WDI_SsrTimerCB
27208 Callback function for SSR timer, if this is called then the graceful
27209 shutdown for Riva did not happen.
27210
27211 @param pUserData : user data to timer
27212
27213 @see
27214 @return none
27215*/
27216void
27217WDI_SsrTimerCB
27218(
27219 void *pUserData
27220)
27221{
27222 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27224
27225 if (NULL == pWDICtx )
27226 {
27227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027228 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027229 WDI_ASSERT(0);
27230 return;
27231 }
27232 wpalRivaSubystemRestart();
27233
27234 return;
27235
27236}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027237
27238/**
27239 @brief WDI_SetEnableSSR -
27240 This API is called to enable/disable SSR on WDI timeout.
27241
27242 @param enableSSR : enable/disable SSR
27243
27244 @see
27245 @return none
27246*/
27247void WDI_SetEnableSSR(wpt_boolean enableSSR)
27248{
27249 gWDICb.bEnableSSR = enableSSR;
27250}