blob: e2afdecbf3a6e2b9f00f57c525f02263d5bc6c6d [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
Leo Chang00bc9132013-08-01 19:21:11 -0700367#ifdef FEATURE_WLAN_LPHB
368 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
369#else
370 NULL,
371#endif /* FEATURE_WLAN_LPHB */
schangd82195a2013-03-13 18:41:24 -0700372 /*-------------------------------------------------------------------------
373 Indications
374 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700375 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800376 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530377 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
378 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700379#ifdef WLAN_FEATURE_11W
380 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
381#else
382 NULL,
383#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700384};
385
386
Jeff Johnsone7245742012-09-05 17:12:55 -0700387/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700388 DAL Request Processing Array - the functions in this table will only be
389 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700390 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700391 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700392WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700393{
394 /*INIT*/
395 WDI_ProcessStartRsp, /* WDI_START_RESP */
396 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
397 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
398
399 /*SCAN*/
400 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
401 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
402 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
403 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
404
405 /* ASSOCIATION*/
406 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
407 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
408 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
409 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
410 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
411
412 /* Security */
413 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
414 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
415 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
416 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
417
418 /* QoS and BA APIs */
419 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
420 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
421 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
422 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
423 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
424
425 /* Miscellaneous Control APIs */
426 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
427 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
428 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
429 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
430 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
431
432 /* BA APIs*/
433 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
434 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700435
Jeff Johnson295189b2012-06-20 16:38:30 -0700436 /* IBSS APIs*/
437 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
438 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
439
440 /*Soft AP APIs*/
441 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
442 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
443 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
444 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
445
446 /* PowerSave APIs */
447 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
448 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
449 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
450 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
451 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
452 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
453 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
454 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
455 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
456 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
457 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
458 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
459 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
460 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
461 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
462 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
463 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
464 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700465
Jeff Johnson295189b2012-06-20 16:38:30 -0700466
467 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
468
469 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
470 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
471#ifdef WLAN_FEATURE_VOWIFI_11R
472 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
473#else
474 NULL,
475#endif /* WLAN_FEATURE_VOWIFI_11R */
476 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
477 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700478#ifdef FEATURE_OEM_DATA_SUPPORT
479 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
480#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700481 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700482#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700483 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
484
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700486
Jeff Johnson295189b2012-06-20 16:38:30 -0700487 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700488
Jeff Johnsone7245742012-09-05 17:12:55 -0700489 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
490
Jeff Johnson295189b2012-06-20 16:38:30 -0700491#ifdef FEATURE_WLAN_SCAN_PNO
492 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
493 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
494 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
495#else
496 NULL,
497 NULL,
498 NULL,
499#endif // FEATURE_WLAN_SCAN_PNO
500
501 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
502
503 /*---------------------------------------------------------------------
504 Indications
505 ---------------------------------------------------------------------*/
506#ifdef WLAN_FEATURE_PACKET_FILTERING
507 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700508 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700509 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700510 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700511 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700512 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700513 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700514 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700515#else
516 NULL,
517 NULL,
518 NULL,
519 NULL,
520#endif // WLAN_FEATURE_PACKET_FILTERING
521
522 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
523 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
524
525 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
526#ifdef FEATURE_WLAN_CCX
527 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
528#else
529 NULL,
530#endif
531
532#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700533 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
534 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700535#else
536 NULL,
537 NULL,
538#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700539 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
540 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700541#ifdef WLAN_FEATURE_11AC
542 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700543#else
544 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700545#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800546#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
547 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
548#else
549 NULL,
550#endif
schangd82195a2013-03-13 18:41:24 -0700551 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700552#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700553 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700554#else
555 NULL,
556#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530557#ifdef FEATURE_WLAN_TDLS
558 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
559#else
560 NULL,
561#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700562#ifdef FEATURE_WLAN_LPHB
563 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
564#else
565 NULL,
566#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700567 /*---------------------------------------------------------------------
568 Indications
569 ---------------------------------------------------------------------*/
570 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
571 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
572 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
573 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
574 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
575 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
576
577 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
578
579 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
580
Jeff Johnson295189b2012-06-20 16:38:30 -0700581 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700582
583#ifdef FEATURE_WLAN_SCAN_PNO
584 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
585#else
586 NULL,
587#endif // FEATURE_WLAN_SCAN_PNO
588
589#ifdef WLAN_WAKEUP_EVENTS
590 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
591#else // WLAN_WAKEUP_EVENTS
592 NULL,
593#endif // WLAN_WAKEUP_EVENTS
594
595 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800596
Viral Modi9dc288a2012-12-10 13:09:21 -0800597 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530598#ifdef FEATURE_WLAN_TDLS
599 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
600#else
601 NULL,
602#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700603
604#ifdef FEATURE_WLAN_LPHB
605 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
606#else
607 NULL,
608#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700609};
610
611
Jeff Johnsone7245742012-09-05 17:12:55 -0700612/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700613 WLAN DAL Global Control Block
614 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700615WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700616static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
617
Jeff Johnsone7245742012-09-05 17:12:55 -0700618const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700619
620/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700621WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700622void* WDI_GET_PAL_CTX( void )
623{
Jeff Johnsone7245742012-09-05 17:12:55 -0700624 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700625}/*WDI_GET_PAL_CTX*/
626
Jeff Johnsone7245742012-09-05 17:12:55 -0700627/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700628 Helper inline converters
629 ============================================================================*/
630/*Convert WDI driver type into HAL driver type*/
631WPT_STATIC WPT_INLINE WDI_Status
632WDI_HAL_2_WDI_STATUS
633(
634 eHalStatus halStatus
635);
636
637/*Convert WDI request type into HAL request type*/
638WPT_STATIC WPT_INLINE tHalHostMsgType
639WDI_2_HAL_REQ_TYPE
640(
641 WDI_RequestEnumType wdiReqType
642);
643
644/*Convert WDI response type into HAL response type*/
645WPT_STATIC WPT_INLINE WDI_ResponseEnumType
646HAL_2_WDI_RSP_TYPE
647(
648 tHalHostMsgType halMsg
649);
650
651/*Convert WDI driver type into HAL driver type*/
652WPT_STATIC WPT_INLINE tDriverType
653WDI_2_HAL_DRV_TYPE
654(
655 WDI_DriverType wdiDriverType
656);
657
658/*Convert WDI stop reason into HAL stop reason*/
659WPT_STATIC WPT_INLINE tHalStopType
660WDI_2_HAL_STOP_REASON
661(
662 WDI_StopType wdiStopType
663);
664
665/*Convert WDI scan mode type into HAL scan mode type*/
666WPT_STATIC WPT_INLINE eHalSysMode
667WDI_2_HAL_SCAN_MODE
668(
669 WDI_ScanMode wdiScanMode
670);
671
672/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700673WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700674WDI_2_HAL_SEC_CH_OFFSET
675(
676 WDI_HTSecondaryChannelOffset wdiSecChOffset
677);
678
679/*Convert WDI BSS type into HAL BSS type*/
680WPT_STATIC WPT_INLINE tSirBssType
681WDI_2_HAL_BSS_TYPE
682(
683 WDI_BssType wdiBSSType
684);
685
686/*Convert WDI NW type into HAL NW type*/
687WPT_STATIC WPT_INLINE tSirNwType
688WDI_2_HAL_NW_TYPE
689(
690 WDI_NwType wdiNWType
691);
692
693/*Convert WDI chanel bonding type into HAL cb type*/
694WPT_STATIC WPT_INLINE ePhyChanBondState
695WDI_2_HAL_CB_STATE
696(
697 WDI_PhyChanBondState wdiCbState
698);
699
700/*Convert WDI chanel bonding type into HAL cb type*/
701WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
702WDI_2_HAL_HT_OPER_MODE
703(
704 WDI_HTOperatingMode wdiHTOperMode
705);
706
707/*Convert WDI mimo PS type into HAL mimo PS type*/
708WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
709WDI_2_HAL_MIMO_PS
710(
711 WDI_HTMIMOPowerSaveState wdiHTOperMode
712);
713
714/*Convert WDI ENC type into HAL ENC type*/
715WPT_STATIC WPT_INLINE tAniEdType
716WDI_2_HAL_ENC_TYPE
717(
718 WDI_EncryptType wdiEncType
719);
720
721/*Convert WDI WEP type into HAL WEP type*/
722WPT_STATIC WPT_INLINE tAniWepType
723WDI_2_HAL_WEP_TYPE
724(
725 WDI_WepType wdiWEPType
726);
727
728/*Convert WDI Link State into HAL Link State*/
729WPT_STATIC WPT_INLINE tSirLinkState
730WDI_2_HAL_LINK_STATE
731(
732 WDI_LinkStateType wdiLinkState
733);
734
Jeff Johnsone7245742012-09-05 17:12:55 -0700735/*Translate a STA Context from WDI into HAL*/
736WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700737void
738WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700739(
Jeff Johnson295189b2012-06-20 16:38:30 -0700740 tConfigStaParams* phalConfigSta,
741 WDI_ConfigStaReqInfoType* pwdiConfigSta
742);
Jeff Johnsone7245742012-09-05 17:12:55 -0700743
744/*Translate a Rate set info from WDI into HAL*/
745WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700746WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700747(
Jeff Johnson295189b2012-06-20 16:38:30 -0700748 tSirMacRateSet* pHalRateSet,
749 WDI_RateSet* pwdiRateSet
750);
751
752/*Translate an EDCA Parameter Record from WDI into HAL*/
753WPT_STATIC WPT_INLINE void
754WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700755(
Jeff Johnson295189b2012-06-20 16:38:30 -0700756 tSirMacEdcaParamRecord* phalEdcaParam,
757 WDI_EdcaParamRecord* pWDIEdcaParam
758);
759
760/*Copy a management frame header from WDI fmt into HAL fmt*/
761WPT_STATIC WPT_INLINE void
762WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
763(
764 tSirMacMgmtHdr* pmacMgmtHdr,
765 WDI_MacMgmtHdr* pwdiMacMgmtHdr
766);
767
768/*Copy config bss parameters from WDI fmt into HAL fmt*/
769WPT_STATIC WPT_INLINE void
770WDI_CopyWDIConfigBSSToHALConfigBSS
771(
772 tConfigBssParams* phalConfigBSS,
773 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
774);
775
Jeff Johnsone7245742012-09-05 17:12:55 -0700776/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700777 pointed to by user data */
778WPT_STATIC WPT_INLINE void
779WDI_ExtractRequestCBFromEvent
780(
781 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700782 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700783 void** ppUserData
784);
785
786wpt_uint8
787WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700788(
Jeff Johnson295189b2012-06-20 16:38:30 -0700789 WDI_ControlBlockType* pWDICtx,
790 WDI_BSSSessionType** ppSession
791);
792
793void
794WDI_AddBcastSTAtoSTATable
795(
796 WDI_ControlBlockType* pWDICtx,
797 WDI_AddStaParams * staParams,
798 wpt_uint16 usBcastStaIdx
799);
800
801WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700802(
Jeff Johnson295189b2012-06-20 16:38:30 -0700803 WDI_ControlBlockType* pWDICtx,
804 WDI_EventInfoType* pEventData
805);
806
807void
808WDI_SetPowerStateCb
809(
810 wpt_status status,
811 unsigned int dxePhyAddr,
812 void *pContext
813);
814
815#define CASE_RETURN_STRING( str ) \
816 case ( ( str ) ): return( #str ); break \
817
818/**
819 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700820
821 @param wdiReqMsgId: WDI Message request Id
822
823 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700824 @return Result of the function call
825*/
826static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
827{
828 switch (wdiReqMsgId)
829 {
830 CASE_RETURN_STRING( WDI_START_REQ );
831 CASE_RETURN_STRING( WDI_STOP_REQ );
832 CASE_RETURN_STRING( WDI_CLOSE_REQ );
833 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
834 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
835 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
836 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
837 CASE_RETURN_STRING( WDI_JOIN_REQ );
838 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
839 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
840 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
841 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
842 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
843 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
844 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
845 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
846 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
847 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
848 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
849 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
850 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
851 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
852 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
853 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
854 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
855 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
856 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
857 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
858 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
859 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
860 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
861 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
862 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
863 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
864 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530865#ifdef FEATURE_WLAN_TDLS
866 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
867#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700868 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
869 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
870 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
871 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
872 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
873 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
874 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
875 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
876 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
877 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
878 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
879 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
880 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
881 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
882 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
883 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
884 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
885 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
886 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
887 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
888 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
889 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
890 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
891 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
892 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700893 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700894 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
895 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
896 #ifdef FEATURE_WLAN_SCAN_PNO
897 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
898 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
899 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
900 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700901#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700902 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700903#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700904 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
905 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
906 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
907 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
908 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
909 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
910 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
911 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
912 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800913 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800914 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700915#ifdef WLAN_FEATURE_11W
916 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
917#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700918 default:
919 return "Unknown WDI MessageId";
920 }
921}
922
923
924
925/**
926 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700927
928 @param wdiRespMsgId: WDI Message response Id
929
930 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700931 @return Result of the function call
932*/
933static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
934{
935 switch (wdiRespMsgId)
936 {
937 CASE_RETURN_STRING( WDI_START_RESP );
938 CASE_RETURN_STRING( WDI_STOP_RESP );
939 CASE_RETURN_STRING( WDI_CLOSE_RESP );
940 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
941 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
942 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
943 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
944 CASE_RETURN_STRING( WDI_JOIN_RESP );
945 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
946 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
947 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
948 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
949 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
950 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
951 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
952 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
953 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
954 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
955 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
956 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
957 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
958 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
959 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
960 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
961 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
962 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
963 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
964 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
965 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
966 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
967 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
968 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
969 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
970 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
971 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530972#ifdef FEATURE_WLAN_TDLS
973 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
974 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
975#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700976 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
977 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
978 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
979 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
980 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
981 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
982 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
983 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
984 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
985 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
986 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
987 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
988 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
989 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
990 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
991 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
992 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
993 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
994 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
995 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
996 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
997 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
998 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
999 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1000 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001001 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001002 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1003 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1004 #ifdef FEATURE_WLAN_SCAN_PNO
1005 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1006 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1007 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1008 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001009#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001010 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001011#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001012 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1013 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1014 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1015 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1016 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1017 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1018 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1019 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001020 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 default:
1022 return "Unknown WDI MessageId";
1023 }
1024}
1025
1026/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301027 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1028 Capability bitmap array.
1029 @param capabilityBitmap - Base address of Bitmap array
1030 @see
1031 @returns None
1032 */
1033void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1034{
1035 int i;
1036 char capStr[512];
1037 char *pCapStr = capStr;
1038 for (i = 0; i < 32; i++) {
1039 if ((*(capabilityBitmap + 0) & (1 << i))) {
1040 switch(i) {
1041 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1042 pCapStr += strlen("MCC");
1043 break;
1044 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1045 pCapStr += strlen("P2P");
1046 break;
1047 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1048 pCapStr += strlen("DOT11AC");
1049 break;
1050 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1051 pCapStr += strlen("SLM_SESSIONIZATION");
1052 break;
1053 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1054 pCapStr += strlen("DOT11AC_OPMODE");
1055 break;
1056 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1057 pCapStr += strlen("SAP32STA");
1058 break;
1059 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1060 pCapStr += strlen("TDLS");
1061 break;
1062 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1063 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1064 break;
1065 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1066 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1067 break;
1068 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1069 pCapStr += strlen("BEACON_OFFLOAD");
1070 break;
1071 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1072 pCapStr += strlen("SCAN_OFFLOAD");
1073 break;
1074 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1075 pCapStr += strlen("ROAM_OFFLOAD");
1076 break;
1077 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1078 pCapStr += strlen("BCN_MISS_OFFLOAD");
1079 break;
1080 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1081 pCapStr += strlen("STA_POWERSAVE");
1082 break;
1083 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1084 pCapStr += strlen("AP_UAPSD");
1085 break;
1086 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1087 pCapStr += strlen("AP_DFS");
1088 break;
1089 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1090 pCapStr += strlen("BLOCKACK");
1091 break;
1092 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1093 pCapStr += strlen("PHY_ERR");
1094 break;
1095 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1096 pCapStr += strlen("BCN_FILTER");
1097 break;
1098 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1099 pCapStr += strlen("RTT");
1100 break;
1101 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1102 pCapStr += strlen("RATECTRL");
1103 break;
1104 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1105 pCapStr += strlen("WOW");
1106 break;
1107 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1108 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1109 break;
1110 }
1111 *pCapStr++ = ',';
1112 *pCapStr++ = ' ';
1113 }
1114 }
1115 pCapStr = capStr;
1116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t\t%s", pCapStr);
1117}
1118
1119/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001120 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001121
1122 @param halStatusId: HAL status Id
1123
1124 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001125 @return Result of the function call
1126*/
1127static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1128{
1129 switch (halStatusId)
1130 {
1131 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1132 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1133 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1134 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1135 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1136 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1137 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1138 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1139 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1140 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1141 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1142 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1143 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1144 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1145 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1146 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1147 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1148 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1149 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1150 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1151 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1152 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1153 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1154 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1155 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1156 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1157 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1158 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1159 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1160 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1161 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1162 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1163 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1164 default:
1165 return "Unknown HAL status";
1166 }
1167}
1168
Jeff Johnsone7245742012-09-05 17:12:55 -07001169/*========================================================================
1170
Jeff Johnson295189b2012-06-20 16:38:30 -07001171 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001172
Jeff Johnson295189b2012-06-20 16:38:30 -07001173==========================================================================*/
1174
1175/**
1176 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001177
Jeff Johnson295189b2012-06-20 16:38:30 -07001178 DAL will allocate all the resources it needs. It will open PAL, it will also
1179 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001180 DXE/SMD or any other drivers that they need.
1181
Jeff Johnson295189b2012-06-20 16:38:30 -07001182 @param pOSContext: pointer to the OS context provided by the UMAC
1183 will be passed on to PAL on Open
1184 ppWDIGlobalCtx: output pointer of Global Context
1185 pWdiDevCapability: output pointer of device capability
1186
1187 @return Result of the function call
1188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001190WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001191(
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 void* pOSContext,
1193 void** ppWDIGlobalCtx,
1194 WDI_DeviceCapabilityType* pWdiDevCapability,
1195 unsigned int driverType
1196)
1197{
1198 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001199 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001201 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1203
1204 /*---------------------------------------------------------------------
1205 Sanity check
1206 ---------------------------------------------------------------------*/
1207 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1208 {
1209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1210 "Invalid input parameters in WDI_Init");
1211
Jeff Johnsone7245742012-09-05 17:12:55 -07001212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 }
1214
1215 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001216 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001217 ---------------------------------------------------------------------*/
1218 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1219 {
1220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1221 "WDI module already initialized - return");
1222
Jeff Johnsone7245742012-09-05 17:12:55 -07001223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001224 }
1225
1226 /*Module is now initialized - this flag is to ensure the fact that multiple
1227 init will not happen on WDI
1228 !! - potential race does exist because read and set are not atomic,
1229 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001230 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001231
1232 /*Setup the control block */
1233 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001234 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001235
1236 /*Setup the STA Table*/
1237 wdiStatus = WDI_STATableInit(&gWDICb);
1238 if ( WDI_STATUS_SUCCESS != wdiStatus )
1239 {
1240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1241 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001242 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 goto fail_STATableInit;
1244 }
1245
1246 /*------------------------------------------------------------------------
1247 Open the PAL
1248 ------------------------------------------------------------------------*/
1249 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1250 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1251 {
1252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1253 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001254 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001255 goto fail_wpalOpen;
1256 }
1257
1258 /*Initialize main synchro mutex - it will be used to ensure integrity of
1259 the main WDI Control Block*/
1260 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1261 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1262 {
1263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1264 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001265 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 goto fail_mutex;
1267 }
1268
1269 /*Initialize the response timer - it will be used to time all messages
1270 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001271 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1272 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001273 &gWDICb);
1274 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1275 {
1276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1277 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001278 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001279 goto fail_timer;
1280 }
1281
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001282 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1283 WDI_SsrTimerCB,
1284 &gWDICb);
1285 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1286 {
1287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1288 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001289 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001290 goto fail_timer2;
1291 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 /* Initialize the WDI Pending Request Queue*/
1293 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1294 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1295 {
1296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1297 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001298 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001299 goto fail_pend_queue;
1300 }
1301
1302 /*Init WDI Pending Assoc Id Queue */
1303 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1304 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1305 {
1306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1307 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001308 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001309 goto fail_assoc_queue;
1310 }
1311
1312 /*Initialize the BSS sessions pending Queue */
1313 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1314 {
1315 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1316 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1317 {
1318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1319 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001320 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001321 goto fail_bss_queue;
1322 }
1323 }
1324
1325 /*Indicate the control block is sufficiently initialized for callbacks*/
1326 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1327
1328 /*------------------------------------------------------------------------
1329 Initialize the Data Path Utility Module
1330 ------------------------------------------------------------------------*/
1331 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1332 if ( WDI_STATUS_SUCCESS != wdiStatus )
1333 {
1334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1335 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001336 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001337 goto fail_dp_util_init;
1338 }
1339
1340 /* Init Set power state event */
1341 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001342 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001343 {
1344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1345 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001346 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 goto fail_power_event;
1348 }
1349
1350 /* Init WCTS action event */
1351 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001352 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 {
1354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1355 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001356 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001357 goto fail_wcts_event;
1358 }
1359
1360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001361 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 ------------------------------------------------------------------------*/
1363 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1364 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001365 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001366 wctsCBs.wctsRxMsgCBData = &gWDICb;
1367
Jeff Johnsone7245742012-09-05 17:12:55 -07001368 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001370 WDI_CT_CHANNEL_SIZE,
1371 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001372
1373 if ( NULL == gWDICb.wctsHandle )
1374 {
1375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001376 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 goto fail_wcts_open;
1378 }
1379
1380 gWDICb.driverMode = (tDriverType)driverType;
1381 /* FTM mode not need to open Transport Driver */
1382 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001383 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001384 /*------------------------------------------------------------------------
1385 Open the Data Transport
1386 ------------------------------------------------------------------------*/
1387 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1388 {
1389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001390 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 goto fail_wdts_open;
1392 }
1393 }
1394
1395 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001396 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001397
1398 /*Send the context as a ptr to the global WDI Control Block*/
1399 *ppWDIGlobalCtx = &gWDICb;
1400
1401 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001402 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1404 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1405 return WDI_STATUS_SUCCESS;
1406
1407 /* ERROR handlers
1408 Undo everything that completed successfully */
1409
1410 fail_wdts_open:
1411 {
1412 wpt_status eventStatus;
1413
1414 /* Closing WCTS in this scenario is tricky since it has to close
1415 the SMD channel and then we get notified asynchronously when
1416 the channel has been closed. So we take some of the logic from
1417 the "normal" close procedure in WDI_Close()
1418 */
1419
1420 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001421 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001422 {
1423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001424 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 }
1426
1427 WCTS_CloseTransport(gWDICb.wctsHandle);
1428
1429 /* Wait for WCTS to close the control transport. If we were able
1430 to reset the event flag, then we'll wait for the event,
1431 otherwise we'll wait for a maximum amount of time required for
1432 the channel to be closed */
1433 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1434 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 WDI_WCTS_ACTION_TIMEOUT);
1437 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1438 {
1439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001440 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 }
1442 }
1443 else
1444 {
1445 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1446 }
1447 }
1448 fail_wcts_open:
1449 wpalEventDelete(&gWDICb.wctsActionEvent);
1450 fail_wcts_event:
1451 wpalEventDelete(&gWDICb.setPowerStateEvent);
1452 fail_power_event:
1453 WDI_DP_UtilsExit(&gWDICb);
1454 fail_dp_util_init:
1455 gWDICb.magic = 0;
1456 fail_bss_queue:
1457 /* entries 0 thru i-1 were successfully initialized */
1458 while (0 < i)
1459 {
1460 i--;
1461 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1462 }
1463 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1464 fail_assoc_queue:
1465 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1466 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001467 wpalTimerDelete(&gWDICb.ssrTimer);
1468 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 wpalTimerDelete(&gWDICb.wptResponseTimer);
1470 fail_timer:
1471 wpalMutexDelete(&gWDICb.wptMutex);
1472 fail_mutex:
1473 wpalClose(gWDICb.pPALContext);
1474 fail_wpalOpen:
1475 WDI_STATableClose(&gWDICb);
1476 fail_STATableInit:
1477 gWDIInitialized = eWLAN_PAL_FALSE;
1478
1479 return WDI_STATUS_E_FAILURE;
1480
1481}/*WDI_Init*/;
1482
1483/**
1484 @brief WDI_Start will be called when the upper MAC is ready to
1485 commence operation with the WLAN Device. Upon the call
1486 of this API the WLAN DAL will pack and send a HAL Start
1487 message to the lower RIVA sub-system if the SMD channel
1488 has been fully opened and the RIVA subsystem is up.
1489
1490 If the RIVA sub-system is not yet up and running DAL
1491 will queue the request for Open and will wait for the
1492 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001493 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001494
1495 WDI_Init must have been called.
1496
Jeff Johnsone7245742012-09-05 17:12:55 -07001497 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001498 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001499
Jeff Johnson295189b2012-06-20 16:38:30 -07001500 wdiStartRspCb: callback for passing back the response of
1501 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001502
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001504 callback
1505
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 @see WDI_Start
1507 @return Result of the function call
1508*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001509WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001510WDI_Start
1511(
1512 WDI_StartReqParamsType* pwdiStartParams,
1513 WDI_StartRspCb wdiStartRspCb,
1514 void* pUserData
1515)
1516{
1517 WDI_EventInfoType wdiEventData;
1518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1519
1520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 ------------------------------------------------------------------------*/
1523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1524 {
1525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1526 "WDI API call before module is initialized - Fail request");
1527
Jeff Johnsone7245742012-09-05 17:12:55 -07001528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001529 }
1530
1531 /*------------------------------------------------------------------------
1532 Fill in Event data and post to the Main FSM
1533 ------------------------------------------------------------------------*/
1534 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001535 wdiEventData.pEventData = pwdiStartParams;
1536 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1537 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 wdiEventData.pUserData = pUserData;
1539
1540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1541
1542}/*WDI_Start*/
1543
1544/**
1545 @brief WDI_Stop will be called when the upper MAC is ready to
1546 stop any operation with the WLAN Device. Upon the call
1547 of this API the WLAN DAL will pack and send a HAL Stop
1548 message to the lower RIVA sub-system if the DAL Core is
1549 in started state.
1550
1551 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001552
1553 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001554
1555 WDI_Start must have been called.
1556
Jeff Johnsone7245742012-09-05 17:12:55 -07001557 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001558 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001559
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 wdiStopRspCb: callback for passing back the response of
1561 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001562
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001564 callback
1565
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 @see WDI_Start
1567 @return Result of the function call
1568*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001569WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001570WDI_Stop
1571(
1572 WDI_StopReqParamsType* pwdiStopParams,
1573 WDI_StopRspCb wdiStopRspCb,
1574 void* pUserData
1575)
1576{
1577 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001578 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1580
1581 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001582 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 ------------------------------------------------------------------------*/
1584 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1585 {
1586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1587 "WDI API call before module is initialized - Fail request");
1588
Jeff Johnsone7245742012-09-05 17:12:55 -07001589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001590 }
1591
Jeff Johnson43971f52012-07-17 12:26:56 -07001592 /*Access to the global state must be locked before cleaning */
1593 wpalMutexAcquire(&pWDICtx->wptMutex);
1594
1595 /*Clear all pending request*/
1596 WDI_ClearPendingRequests(pWDICtx);
1597
1598 /*We have completed cleaning unlock now*/
1599 wpalMutexRelease(&pWDICtx->wptMutex);
1600
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 /* Free the global variables */
1602 wpalMemoryFree(gpHostWlanFeatCaps);
1603 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001604 gpHostWlanFeatCaps = NULL;
1605 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001606
1607 /*------------------------------------------------------------------------
1608 Fill in Event data and post to the Main FSM
1609 ------------------------------------------------------------------------*/
1610 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001611 wdiEventData.pEventData = pwdiStopParams;
1612 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1613 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001614 wdiEventData.pUserData = pUserData;
1615
1616 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1617
1618}/*WDI_Stop*/
1619
1620
1621
1622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001623 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001624 needs to interact with DAL. DAL will free its control
1625 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001626
1627 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001628
1629 WDI_Stop must have been called.
1630
1631 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001632
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 @see WDI_Stop
1634 @return Result of the function call
1635*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001636WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001637WDI_Close
1638(
1639 void
1640)
1641{
1642 wpt_uint8 i;
1643 WDI_EventInfoType wdiEventData;
1644 wpt_status wptStatus;
1645 wpt_status eventStatus;
1646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1647
1648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001649 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001650 ------------------------------------------------------------------------*/
1651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1652 {
1653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1654 "WDI API call before module is initialized - Fail request");
1655
Jeff Johnsone7245742012-09-05 17:12:55 -07001656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 }
1658
1659 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1660 (the control transport will be closed by the FSM and we'll want
1661 to wait until that completes)*/
1662 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001663 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001666 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001667 /* fall through and try to finish closing via the FSM */
1668 }
1669
1670 /*------------------------------------------------------------------------
1671 Fill in Event data and post to the Main FSM
1672 ------------------------------------------------------------------------*/
1673 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001674 wdiEventData.pEventData = NULL;
1675 wdiEventData.uEventDataSize = 0;
1676 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 wdiEventData.pUserData = NULL;
1678
1679 gWDIInitialized = eWLAN_PAL_FALSE;
1680
1681 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1682
1683 /*Wait for WCTS to close the control transport
1684 (but only if we were able to reset the event flag*/
1685 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1686 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001687 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 WDI_WCTS_ACTION_TIMEOUT);
1689 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1690 {
1691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001692 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001693 }
1694 }
1695
1696 /* Destroy the WCTS action event */
1697 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1698 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1699 {
1700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1701 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001702 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 }
1704
1705 /* Destroy the Set Power State event */
1706 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1707 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1708 {
1709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1710 "WDI Close failed to destroy an event");
1711
Jeff Johnsone7245742012-09-05 17:12:55 -07001712 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 }
1714
1715 /*------------------------------------------------------------------------
1716 Closes the Data Path Utility Module
1717 ------------------------------------------------------------------------*/
1718 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1719 {
1720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1721 "WDI Init failed to close the DP Util Module");
1722
Jeff Johnsone7245742012-09-05 17:12:55 -07001723 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001724 }
1725
1726 /*destroy the BSS sessions pending Queue */
1727 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1728 {
1729 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1730 }
1731
1732 /* destroy the WDI Pending Assoc Id Request Queue*/
1733 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1734
1735 /* destroy the WDI Pending Request Queue*/
1736 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001737
Jeff Johnson295189b2012-06-20 16:38:30 -07001738 /*destroy the response timer */
1739 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1740
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001741 /*destroy the SSR timer */
1742 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1743
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 /*invalidate the main synchro mutex */
1745 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1746 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1747 {
1748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1749 "Failed to delete mutex %d", wptStatus);
1750 WDI_ASSERT(0);
1751 }
1752
1753 /*Clear control block. note that this will clear the "magic"
1754 which will inhibit all asynchronous callbacks*/
1755 WDI_CleanCB(&gWDICb);
1756
1757 return wptStatus;
1758
1759}/*WDI_Close*/
1760
1761/**
1762 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1763 This will do most of the WDI stop & close
1764 operations without doing any handshake with Riva
1765
1766 This will also make sure that the control transport
1767 will NOT be closed.
1768
1769 This request will not be queued.
1770
1771
1772 WDI_Start must have been called.
1773
1774 @param closeTransport: Close control channel if this is set
1775
1776 @return Result of the function call
1777*/
1778WDI_Status
1779WDI_Shutdown
1780(
1781 wpt_boolean closeTransport
1782)
1783{
1784 WDI_EventInfoType wdiEventData;
1785 wpt_status wptStatus;
1786 int i = 0;
1787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1788
1789 /*------------------------------------------------------------------------
1790 Sanity Check
1791 ------------------------------------------------------------------------*/
1792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1793 {
1794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1795 "WDI API call before module is initialized - Fail request");
1796
1797 return WDI_STATUS_E_NOT_ALLOWED;
1798 }
1799
1800 /*------------------------------------------------------------------------
1801 Fill in Event data and post to the Main FSM
1802 ------------------------------------------------------------------------*/
1803 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1804 wdiEventData.pEventData = NULL;
1805 wdiEventData.uEventDataSize = 0;
1806
1807 /* Shutdown will not be queued, if the state is busy timer will be
1808 * stopped & this message will be processed.*/
1809 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1810 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1811 {
1812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001813 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 }
1815 /* Destroy the Set Power State event */
1816 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1817 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1818 {
1819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1820 "WDI Close failed to destroy an event");
1821
1822 WDI_ASSERT(0);
1823 }
1824 /*------------------------------------------------------------------------
1825 Closes the Data Path Utility Module
1826 ------------------------------------------------------------------------*/
1827 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1828 {
1829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1830 "WDI Init failed to close the DP Util Module");
1831
1832 WDI_ASSERT(0);
1833 }
1834 if ( closeTransport )
1835 {
1836 /* Close control transport, called from module unload */
1837 WCTS_CloseTransport(gWDICb.wctsHandle);
1838 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001839 else
1840 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001841 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001842 the pending messages in the transport queue */
1843 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1844 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001845 /*destroy the BSS sessions pending Queue */
1846 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1847 {
1848 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1849 }
1850
1851 /* destroy the WDI Pending Assoc Id Request Queue*/
1852 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1853 /* destroy the WDI Pending Request Queue*/
1854 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1855 /*destroy the response timer */
1856 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001857 /*destroy the SSR timer */
1858 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001859
1860 /*invalidate the main synchro mutex */
1861 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1862 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1863 {
1864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001865 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 WDI_ASSERT(0);
1867 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001868 /* Free the global variables */
1869 wpalMemoryFree(gpHostWlanFeatCaps);
1870 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001871 gpHostWlanFeatCaps = NULL;
1872 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 /*Clear control block. note that this will clear the "magic"
1874 which will inhibit all asynchronous callbacks*/
1875 WDI_CleanCB(&gWDICb);
1876 return wptStatus;
1877
1878}/*WDI_Shutdown*/
1879
1880
Jeff Johnsone7245742012-09-05 17:12:55 -07001881/*========================================================================
1882
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885==========================================================================*/
1886
1887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001888 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 the WLAN Device to get ready for a scan procedure. Upon
1890 the call of this API the WLAN DAL will pack and send a
1891 HAL Init Scan request message to the lower RIVA
1892 sub-system if DAL is in state STARTED.
1893
1894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001896
1897 WDI_Start must have been called.
1898
1899 @param wdiInitScanParams: the init scan parameters as specified
1900 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001901
Jeff Johnson295189b2012-06-20 16:38:30 -07001902 wdiInitScanRspCb: callback for passing back the response
1903 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001904
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001906 callback
1907
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 @see WDI_Start
1909 @return Result of the function call
1910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001912WDI_InitScanReq
1913(
1914 WDI_InitScanReqParamsType* pwdiInitScanParams,
1915 WDI_InitScanRspCb wdiInitScanRspCb,
1916 void* pUserData
1917)
1918{
1919 WDI_EventInfoType wdiEventData;
1920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1921
1922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001924 ------------------------------------------------------------------------*/
1925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1926 {
1927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1928 "WDI API call before module is initialized - Fail request");
1929
Jeff Johnsone7245742012-09-05 17:12:55 -07001930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001931 }
1932
1933 /*------------------------------------------------------------------------
1934 Fill in Event data and post to the Main FSM
1935 ------------------------------------------------------------------------*/
1936 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001937 wdiEventData.pEventData = pwdiInitScanParams;
1938 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1939 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 wdiEventData.pUserData = pUserData;
1941
1942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1943
1944}/*WDI_InitScanReq*/
1945
1946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 wishes to change the Scan channel on the WLAN Device.
1949 Upon the call of this API the WLAN DAL will pack and
1950 send a HAL Start Scan request message to the lower RIVA
1951 sub-system if DAL is in state STARTED.
1952
1953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001955
1956 WDI_InitScanReq must have been called.
1957
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001960
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 wdiStartScanRspCb: callback for passing back the
1962 response of the start scan operation received from the
1963 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001964
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001966 callback
1967
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 @see WDI_InitScanReq
1969 @return Result of the function call
1970*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001971WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001972WDI_StartScanReq
1973(
1974 WDI_StartScanReqParamsType* pwdiStartScanParams,
1975 WDI_StartScanRspCb wdiStartScanRspCb,
1976 void* pUserData
1977)
1978{
1979 WDI_EventInfoType wdiEventData;
1980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1981
1982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 ------------------------------------------------------------------------*/
1985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1986 {
1987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1988 "WDI API call before module is initialized - Fail request");
1989
Jeff Johnsone7245742012-09-05 17:12:55 -07001990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 }
1992
1993 /*------------------------------------------------------------------------
1994 Fill in Event data and post to the Main FSM
1995 ------------------------------------------------------------------------*/
1996 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001997 wdiEventData.pEventData = pwdiStartScanParams;
1998 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1999 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 wdiEventData.pUserData = pUserData;
2001
2002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2003
2004}/*WDI_StartScanReq*/
2005
2006
2007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002008 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 wants to end scanning for a particular channel that it
2010 had set before by calling Scan Start on the WLAN Device.
2011 Upon the call of this API the WLAN DAL will pack and
2012 send a HAL End Scan request message to the lower RIVA
2013 sub-system if DAL is in state STARTED.
2014
2015 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002017
2018 WDI_StartScanReq must have been called.
2019
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002022
Jeff Johnson295189b2012-06-20 16:38:30 -07002023 wdiEndScanRspCb: callback for passing back the response
2024 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002025
Jeff Johnson295189b2012-06-20 16:38:30 -07002026 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 callback
2028
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 @see WDI_StartScanReq
2030 @return Result of the function call
2031*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002033WDI_EndScanReq
2034(
2035 WDI_EndScanReqParamsType* pwdiEndScanParams,
2036 WDI_EndScanRspCb wdiEndScanRspCb,
2037 void* pUserData
2038)
2039{
2040 WDI_EventInfoType wdiEventData;
2041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2042
2043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 ------------------------------------------------------------------------*/
2046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2047 {
2048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2049 "WDI API call before module is initialized - Fail request");
2050
Jeff Johnsone7245742012-09-05 17:12:55 -07002051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 }
2053
2054 /*------------------------------------------------------------------------
2055 Fill in Event data and post to the Main FSM
2056 ------------------------------------------------------------------------*/
2057 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002058 wdiEventData.pEventData = pwdiEndScanParams;
2059 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2060 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002061 wdiEventData.pUserData = pUserData;
2062
2063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2064
2065}/*WDI_EndScanReq*/
2066
2067
2068/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002069 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 completed the scan process on the WLAN Device. Upon the
2071 call of this API the WLAN DAL will pack and send a HAL
2072 Finish Scan Request request message to the lower RIVA
2073 sub-system if DAL is in state STARTED.
2074
2075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002077
2078 WDI_InitScanReq must have been called.
2079
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002082
Jeff Johnson295189b2012-06-20 16:38:30 -07002083 wdiFinishScanRspCb: callback for passing back the
2084 response of the finish scan operation received from the
2085 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002086
Jeff Johnson295189b2012-06-20 16:38:30 -07002087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 callback
2089
Jeff Johnson295189b2012-06-20 16:38:30 -07002090 @see WDI_InitScanReq
2091 @return Result of the function call
2092*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002094WDI_FinishScanReq
2095(
2096 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2097 WDI_FinishScanRspCb wdiFinishScanRspCb,
2098 void* pUserData
2099)
2100{
2101 WDI_EventInfoType wdiEventData;
2102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2103
2104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 ------------------------------------------------------------------------*/
2107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2108 {
2109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2110 "WDI API call before module is initialized - Fail request");
2111
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002113 }
2114
2115 /*------------------------------------------------------------------------
2116 Fill in Event data and post to the Main FSM
2117 ------------------------------------------------------------------------*/
2118 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002119 wdiEventData.pEventData = pwdiFinishScanParams;
2120 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2121 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 wdiEventData.pUserData = pUserData;
2123
2124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2125
2126}/*WDI_FinishScanReq*/
2127
Jeff Johnsone7245742012-09-05 17:12:55 -07002128/*========================================================================
2129
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002131
Jeff Johnson295189b2012-06-20 16:38:30 -07002132==========================================================================*/
2133
2134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002135 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 to start an association procedure to a BSS. Upon the
2137 call of this API the WLAN DAL will pack and send a HAL
2138 Join request message to the lower RIVA sub-system if
2139 DAL is in state STARTED.
2140
2141 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002142 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002143
2144 WDI_Start must have been called.
2145
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002148
Jeff Johnson295189b2012-06-20 16:38:30 -07002149 wdiJoinRspCb: callback for passing back the response of
2150 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002151
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 callback
2154
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 @see WDI_Start
2156 @return Result of the function call
2157*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002158WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002159WDI_JoinReq
2160(
2161 WDI_JoinReqParamsType* pwdiJoinParams,
2162 WDI_JoinRspCb wdiJoinRspCb,
2163 void* pUserData
2164)
2165{
2166 WDI_EventInfoType wdiEventData;
2167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2168
2169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002170 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 ------------------------------------------------------------------------*/
2172 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2173 {
2174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2175 "WDI API call before module is initialized - Fail request");
2176
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 }
2179
2180 /*------------------------------------------------------------------------
2181 Fill in Event data and post to the Main FSM
2182 ------------------------------------------------------------------------*/
2183 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002184 wdiEventData.pEventData = pwdiJoinParams;
2185 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2186 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 wdiEventData.pUserData = pUserData;
2188
2189 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2190
2191}/*WDI_JoinReq*/
2192
2193/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002194 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 wishes to configure the newly acquired or in process of
2196 being acquired BSS to the HW . Upon the call of this API
2197 the WLAN DAL will pack and send a HAL Config BSS request
2198 message to the lower RIVA sub-system if DAL is in state
2199 STARTED.
2200
2201 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002203
2204 WDI_JoinReq must have been called.
2205
Jeff Johnsone7245742012-09-05 17:12:55 -07002206 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002207 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002208
Jeff Johnson295189b2012-06-20 16:38:30 -07002209 wdiConfigBSSRspCb: callback for passing back the
2210 response of the config BSS operation received from the
2211 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002212
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002214 callback
2215
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 @see WDI_JoinReq
2217 @return Result of the function call
2218*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002219WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002220WDI_ConfigBSSReq
2221(
2222 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2223 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2224 void* pUserData
2225)
2226{
2227 WDI_EventInfoType wdiEventData;
2228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2229
2230 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 ------------------------------------------------------------------------*/
2233 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2234 {
2235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2236 "WDI API call before module is initialized - Fail request");
2237
Jeff Johnsone7245742012-09-05 17:12:55 -07002238 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 }
2240
2241 /*------------------------------------------------------------------------
2242 Fill in Event data and post to the Main FSM
2243 ------------------------------------------------------------------------*/
2244 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002245 wdiEventData.pEventData = pwdiConfigBSSParams;
2246 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2247 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 wdiEventData.pUserData = pUserData;
2249
2250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2251
2252}/*WDI_ConfigBSSReq*/
2253
2254/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002255 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 disassociating from the BSS and wishes to notify HW.
2257 Upon the call of this API the WLAN DAL will pack and
2258 send a HAL Del BSS request message to the lower RIVA
2259 sub-system if DAL is in state STARTED.
2260
2261 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002262 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002263
2264 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2265
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002268
Jeff Johnson295189b2012-06-20 16:38:30 -07002269 wdiDelBSSRspCb: callback for passing back the response
2270 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002271
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 callback
2274
2275 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 @return Result of the function call
2277*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002278WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002279WDI_DelBSSReq
2280(
2281 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2282 WDI_DelBSSRspCb wdiDelBSSRspCb,
2283 void* pUserData
2284)
2285{
2286 WDI_EventInfoType wdiEventData;
2287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2288
2289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 ------------------------------------------------------------------------*/
2292 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2293 {
2294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2295 "WDI API call before module is initialized - Fail request");
2296
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 }
2299
2300 /*------------------------------------------------------------------------
2301 Fill in Event data and post to the Main FSM
2302 ------------------------------------------------------------------------*/
2303 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002304 wdiEventData.pEventData = pwdiDelBSSParams;
2305 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2306 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 wdiEventData.pUserData = pUserData;
2308
2309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2310
2311}/*WDI_DelBSSReq*/
2312
2313/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 associated to a BSS and wishes to configure HW for
2316 associated state. Upon the call of this API the WLAN DAL
2317 will pack and send a HAL Post Assoc request message to
2318 the lower RIVA sub-system if DAL is in state STARTED.
2319
2320 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002321 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002322
2323 WDI_JoinReq must have been called.
2324
2325 @param wdiPostAssocReqParams: the assoc parameters as specified
2326 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002327
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 wdiPostAssocRspCb: callback for passing back the
2329 response of the post assoc operation received from the
2330 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002331
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002333 callback
2334
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 @see WDI_JoinReq
2336 @return Result of the function call
2337*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002338WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002339WDI_PostAssocReq
2340(
2341 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2342 WDI_PostAssocRspCb wdiPostAssocRspCb,
2343 void* pUserData
2344)
2345{
2346 WDI_EventInfoType wdiEventData;
2347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2348
2349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 ------------------------------------------------------------------------*/
2352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2353 {
2354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2355 "WDI API call before module is initialized - Fail request");
2356
Jeff Johnsone7245742012-09-05 17:12:55 -07002357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 }
2359
2360 /*------------------------------------------------------------------------
2361 Fill in Event data and post to the Main FSM
2362 ------------------------------------------------------------------------*/
2363 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 wdiEventData.pEventData = pwdiPostAssocReqParams;
2365 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2366 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 wdiEventData.pUserData = pUserData;
2368
2369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2370
2371}/*WDI_PostAssocReq*/
2372
2373/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002375 association with another STA has ended and the station
2376 must be deleted from HW. Upon the call of this API the
2377 WLAN DAL will pack and send a HAL Del STA request
2378 message to the lower RIVA sub-system if DAL is in state
2379 STARTED.
2380
2381 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002383
2384 WDI_PostAssocReq must have been called.
2385
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002388
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 wdiDelSTARspCb: callback for passing back the response
2390 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002391
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 callback
2394
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 @see WDI_PostAssocReq
2396 @return Result of the function call
2397*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002398WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002399WDI_DelSTAReq
2400(
2401 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2402 WDI_DelSTARspCb wdiDelSTARspCb,
2403 void* pUserData
2404)
2405{
2406 WDI_EventInfoType wdiEventData;
2407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2408
2409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 ------------------------------------------------------------------------*/
2412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2413 {
2414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2415 "WDI API call before module is initialized - Fail request");
2416
Jeff Johnsone7245742012-09-05 17:12:55 -07002417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 }
2419
2420 /*------------------------------------------------------------------------
2421 Fill in Event data and post to the Main FSM
2422 ------------------------------------------------------------------------*/
2423 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002424 wdiEventData.pEventData = pwdiDelSTAParams;
2425 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2426 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 wdiEventData.pUserData = pUserData;
2428
2429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2430
2431}/*WDI_DelSTAReq*/
2432
Jeff Johnsone7245742012-09-05 17:12:55 -07002433/*========================================================================
2434
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002436
Jeff Johnson295189b2012-06-20 16:38:30 -07002437==========================================================================*/
2438
2439/**
2440 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2441 install a BSS encryption key on the HW. Upon the call of this
2442 API the WLAN DAL will pack and send a Set BSS Key request
2443 message to the lower RIVA sub-system if DAL is in state
2444 STARTED.
2445
2446 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002448
2449 WDI_PostAssocReq must have been called.
2450
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002453
Jeff Johnson295189b2012-06-20 16:38:30 -07002454 wdiSetBSSKeyRspCb: callback for passing back the
2455 response of the set BSS Key operation received from the
2456 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 callback
2460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 @see WDI_PostAssocReq
2462 @return Result of the function call
2463*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002464WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002465WDI_SetBSSKeyReq
2466(
2467 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2468 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2469 void* pUserData
2470)
2471{
2472 WDI_EventInfoType wdiEventData;
2473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2474
2475 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 ------------------------------------------------------------------------*/
2478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2479 {
2480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2481 "WDI API call before module is initialized - Fail request");
2482
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 }
2485
2486 /*------------------------------------------------------------------------
2487 Fill in Event data and post to the Main FSM
2488 ------------------------------------------------------------------------*/
2489 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2491 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2492 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 wdiEventData.pUserData = pUserData;
2494
2495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2496
2497}/*WDI_SetBSSKeyReq*/
2498
2499/**
2500 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2501 uninstall a BSS key from HW. Upon the call of this API the
2502 WLAN DAL will pack and send a HAL Remove BSS Key request
2503 message to the lower RIVA sub-system if DAL is in state
2504 STARTED.
2505
2506 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002507 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002508
2509 WDI_SetBSSKeyReq must have been called.
2510
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002513
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 wdiRemoveBSSKeyRspCb: callback for passing back the
2515 response of the remove BSS key operation received from
2516 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002517
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 callback
2520
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 @see WDI_SetBSSKeyReq
2522 @return Result of the function call
2523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002525WDI_RemoveBSSKeyReq
2526(
2527 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2528 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2529 void* pUserData
2530)
2531{
2532 WDI_EventInfoType wdiEventData;
2533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2534
2535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 ------------------------------------------------------------------------*/
2538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2539 {
2540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2541 "WDI API call before module is initialized - Fail request");
2542
Jeff Johnsone7245742012-09-05 17:12:55 -07002543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 }
2545
2546 /*------------------------------------------------------------------------
2547 Fill in Event data and post to the Main FSM
2548 ------------------------------------------------------------------------*/
2549 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2551 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2552 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 wdiEventData.pUserData = pUserData;
2554
2555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2556
2557}/*WDI_RemoveBSSKeyReq*/
2558
2559
2560/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 ready to install a STA(ast) encryption key in HW. Upon
2563 the call of this API the WLAN DAL will pack and send a
2564 HAL Set STA Key request message to the lower RIVA
2565 sub-system if DAL is in state STARTED.
2566
2567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002569
2570 WDI_PostAssocReq must have been called.
2571
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002574
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 wdiSetSTAKeyRspCb: callback for passing back the
2576 response of the set STA key operation received from the
2577 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002578
Jeff Johnson295189b2012-06-20 16:38:30 -07002579 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 callback
2581
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 @see WDI_PostAssocReq
2583 @return Result of the function call
2584*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002585WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002586WDI_SetSTAKeyReq
2587(
2588 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2589 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2590 void* pUserData
2591)
2592{
2593 WDI_EventInfoType wdiEventData;
2594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2595
2596 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002597 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 ------------------------------------------------------------------------*/
2599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2600 {
2601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2602 "WDI API call before module is initialized - Fail request");
2603
Jeff Johnsone7245742012-09-05 17:12:55 -07002604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 }
2606
2607 /*------------------------------------------------------------------------
2608 Fill in Event data and post to the Main FSM
2609 ------------------------------------------------------------------------*/
2610 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2612 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2613 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 wdiEventData.pUserData = pUserData;
2615
2616 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2617
2618}/*WDI_SetSTAKeyReq*/
2619
2620
2621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 wants to uninstall a previously set STA key in HW. Upon
2624 the call of this API the WLAN DAL will pack and send a
2625 HAL Remove STA Key request message to the lower RIVA
2626 sub-system if DAL is in state STARTED.
2627
2628 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002630
2631 WDI_SetSTAKeyReq must have been called.
2632
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002635
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 wdiRemoveSTAKeyRspCb: callback for passing back the
2637 response of the remove STA key operation received from
2638 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002639
Jeff Johnson295189b2012-06-20 16:38:30 -07002640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 callback
2642
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 @see WDI_SetSTAKeyReq
2644 @return Result of the function call
2645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002647WDI_RemoveSTAKeyReq
2648(
2649 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2650 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2651 void* pUserData
2652)
2653{
2654 WDI_EventInfoType wdiEventData;
2655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2656
2657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 ------------------------------------------------------------------------*/
2660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2661 {
2662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2663 "WDI API call before module is initialized - Fail request");
2664
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 }
2667
2668 /*------------------------------------------------------------------------
2669 Fill in Event data and post to the Main FSM
2670 ------------------------------------------------------------------------*/
2671 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2673 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2674 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 wdiEventData.pUserData = pUserData;
2676
2677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2678
2679}/*WDI_RemoveSTAKeyReq*/
2680
2681
2682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 wants to install a STA Bcast encryption key on the HW.
2685 Upon the call of this API the WLAN DAL will pack and
2686 send a HAL Start request message to the lower RIVA
2687 sub-system if DAL is in state STARTED.
2688
2689 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002690 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002691
2692 WDI_PostAssocReq must have been called.
2693
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002696
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 wdiSetSTABcastKeyRspCb: callback for passing back the
2698 response of the set BSS Key operation received from the
2699 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002700
Jeff Johnson295189b2012-06-20 16:38:30 -07002701 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 callback
2703
Jeff Johnson295189b2012-06-20 16:38:30 -07002704 @see WDI_PostAssocReq
2705 @return Result of the function call
2706*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002707WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002708WDI_SetSTABcastKeyReq
2709(
2710 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2711 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2712 void* pUserData
2713)
2714
2715{
2716 WDI_EventInfoType wdiEventData;
2717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2718
2719 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002720 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 ------------------------------------------------------------------------*/
2722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2723 {
2724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2725 "WDI API call before module is initialized - Fail request");
2726
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002728 }
2729
2730 /*------------------------------------------------------------------------
2731 Fill in Event data and post to the Main FSM
2732 ------------------------------------------------------------------------*/
2733 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002734 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2735 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2736 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002737 wdiEventData.pUserData = pUserData;
2738
2739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2740
2741}/*WDI_SetSTABcastKeyReq*/
2742
2743/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002744 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 MAC wants to uninstall a STA Bcast key from HW. Upon the
2746 call of this API the WLAN DAL will pack and send a HAL
2747 Remove STA Bcast Key request message to the lower RIVA
2748 sub-system if DAL is in state STARTED.
2749
2750 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002751 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002752
2753 WDI_SetSTABcastKeyReq must have been called.
2754
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 parameters as specified by the Device
2757 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002758
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2760 response of the remove STA Bcast key operation received
2761 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002762
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 callback
2765
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 @see WDI_SetSTABcastKeyReq
2767 @return Result of the function call
2768*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002769WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002770WDI_RemoveSTABcastKeyReq
2771(
2772 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2773 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2774 void* pUserData
2775)
2776{
2777 WDI_EventInfoType wdiEventData;
2778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2779
2780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 ------------------------------------------------------------------------*/
2783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2784 {
2785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2786 "WDI API call before module is initialized - Fail request");
2787
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 }
2790
2791 /*------------------------------------------------------------------------
2792 Fill in Event data and post to the Main FSM
2793 ------------------------------------------------------------------------*/
2794 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2796 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2797 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 wdiEventData.pUserData = pUserData;
2799
2800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2801
2802}/*WDI_RemoveSTABcastKeyReq*/
2803
2804/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002805 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002806 MAC wants to set Max Tx Power to HW. Upon the
2807 call of this API the WLAN DAL will pack and send a HAL
2808 Remove STA Bcast Key request message to the lower RIVA
2809 sub-system if DAL is in state STARTED.
2810
2811 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002812 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002813
2814 WDI_SetSTABcastKeyReq must have been called.
2815
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 parameters as specified by the Device
2818 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002819
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2821 response of the remove STA Bcast key operation received
2822 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002823
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 callback
2826
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 @see WDI_SetMaxTxPowerReq
2828 @return Result of the function call
2829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002831WDI_SetMaxTxPowerReq
2832(
2833 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2834 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2835 void* pUserData
2836)
2837{
2838 WDI_EventInfoType wdiEventData;
2839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2840
2841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 ------------------------------------------------------------------------*/
2844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2845 {
2846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2847 "WDI API call before module is initialized - Fail request");
2848
Jeff Johnsone7245742012-09-05 17:12:55 -07002849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 }
2851
2852 /*------------------------------------------------------------------------
2853 Fill in Event data and post to the Main FSM
2854 ------------------------------------------------------------------------*/
2855 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2857 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2858 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 wdiEventData.pUserData = pUserData;
2860
2861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2862}
2863
schangd82195a2013-03-13 18:41:24 -07002864/**
2865 @brief WDI_SetTxPowerReq will be called when the upper
2866 MAC wants to set Tx Power to HW.
2867 In state BUSY this request will be queued. Request won't
2868 be allowed in any other state.
2869
2870
2871 @param pwdiSetTxPowerParams: set TS Power parameters
2872 BSSID and target TX Power with dbm included
2873
2874 wdiReqStatusCb: callback for passing back the response
2875
2876 pUserData: user data will be passed back with the
2877 callback
2878
2879 @return Result of the function call
2880*/
2881WDI_Status
2882WDI_SetTxPowerReq
2883(
2884 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2885 WDA_SetTxPowerRspCb wdiReqStatusCb,
2886 void* pUserData
2887)
2888{
2889 WDI_EventInfoType wdiEventData;
2890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2891
2892 /*------------------------------------------------------------------------
2893 Sanity Check
2894 ------------------------------------------------------------------------*/
2895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2896 {
2897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2898 "WDI API call before module is initialized - Fail request");
2899
2900 return WDI_STATUS_E_NOT_ALLOWED;
2901 }
2902
2903 /*------------------------------------------------------------------------
2904 Fill in Event data and post to the Main FSM
2905 ------------------------------------------------------------------------*/
2906 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2907 wdiEventData.pEventData = pwdiSetTxPowerParams;
2908 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2909 wdiEventData.pCBfnc = wdiReqStatusCb;
2910 wdiEventData.pUserData = pUserData;
2911
2912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2913}
2914
Jeff Johnson295189b2012-06-20 16:38:30 -07002915#ifdef FEATURE_WLAN_CCX
2916WDI_Status
2917WDI_TSMStatsReq
2918(
2919 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2920 WDI_TsmRspCb wdiReqStatusCb,
2921 void* pUserData
2922)
2923{
2924 WDI_EventInfoType wdiEventData;
2925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 /*------------------------------------------------------------------------
2927 Sanity Check
2928 ------------------------------------------------------------------------*/
2929 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2930 {
2931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2932 "WDI API call before module is initialized - Fail request");
2933
2934 return WDI_STATUS_E_NOT_ALLOWED;
2935 }
2936
2937 /*------------------------------------------------------------------------
2938 Fill in Event data and post to the Main FSM
2939 ------------------------------------------------------------------------*/
2940 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2941 wdiEventData.pEventData = pwdiTsmReqParams;
2942 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2943 wdiEventData.pCBfnc = wdiReqStatusCb;
2944 wdiEventData.pUserData = pUserData;
2945
2946 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2947
2948}
2949#endif
2950
2951/*========================================================================
2952
2953 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002954
Jeff Johnson295189b2012-06-20 16:38:30 -07002955==========================================================================*/
2956
2957/**
2958 @brief WDI_AddTSReq will be called when the upper MAC to inform
2959 the device of a successful add TSpec negotiation. HW
2960 needs to receive the TSpec Info from the UMAC in order
2961 to configure properly the QoS data traffic. Upon the
2962 call of this API the WLAN DAL will pack and send a HAL
2963 Add TS request message to the lower RIVA sub-system if
2964 DAL is in state STARTED.
2965
2966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002968
2969 WDI_PostAssocReq must have been called.
2970
2971 @param wdiAddTsReqParams: the add TS parameters as specified by
2972 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002973
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 wdiAddTsRspCb: callback for passing back the response of
2975 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002976
Jeff Johnson295189b2012-06-20 16:38:30 -07002977 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 callback
2979
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 @see WDI_PostAssocReq
2981 @return Result of the function call
2982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002984WDI_AddTSReq
2985(
2986 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2987 WDI_AddTsRspCb wdiAddTsRspCb,
2988 void* pUserData
2989)
2990{
2991 WDI_EventInfoType wdiEventData;
2992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2993
2994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002995 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 ------------------------------------------------------------------------*/
2997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2998 {
2999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3000 "WDI API call before module is initialized - Fail request");
3001
Jeff Johnsone7245742012-09-05 17:12:55 -07003002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 }
3004
3005 /*------------------------------------------------------------------------
3006 Fill in Event data and post to the Main FSM
3007 ------------------------------------------------------------------------*/
3008 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003009 wdiEventData.pEventData = pwdiAddTsReqParams;
3010 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3011 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 wdiEventData.pUserData = pUserData;
3013
3014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3015
3016}/*WDI_AddTSReq*/
3017
3018
3019
3020/**
3021 @brief WDI_DelTSReq will be called when the upper MAC has ended
3022 admission on a specific AC. This is to inform HW that
3023 QoS traffic parameters must be rest. Upon the call of
3024 this API the WLAN DAL will pack and send a HAL Del TS
3025 request message to the lower RIVA sub-system if DAL is
3026 in state STARTED.
3027
3028 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003029 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003030
3031 WDI_AddTSReq must have been called.
3032
3033 @param wdiDelTsReqParams: the del TS parameters as specified by
3034 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003035
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 wdiDelTsRspCb: callback for passing back the response of
3037 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003038
Jeff Johnson295189b2012-06-20 16:38:30 -07003039 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 callback
3041
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 @see WDI_AddTSReq
3043 @return Result of the function call
3044*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003045WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003046WDI_DelTSReq
3047(
3048 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3049 WDI_DelTsRspCb wdiDelTsRspCb,
3050 void* pUserData
3051)
3052{
3053 WDI_EventInfoType wdiEventData;
3054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3055
3056 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 ------------------------------------------------------------------------*/
3059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3060 {
3061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3062 "WDI API call before module is initialized - Fail request");
3063
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 }
3066
3067 /*------------------------------------------------------------------------
3068 Fill in Event data and post to the Main FSM
3069 ------------------------------------------------------------------------*/
3070 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 wdiEventData.pEventData = pwdiDelTsReqParams;
3072 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3073 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003074 wdiEventData.pUserData = pUserData;
3075
3076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3077
3078}/*WDI_DelTSReq*/
3079
3080
3081
3082/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003084 wishes to update the EDCA parameters used by HW for QoS
3085 data traffic. Upon the call of this API the WLAN DAL
3086 will pack and send a HAL Update EDCA Params request
3087 message to the lower RIVA sub-system if DAL is in state
3088 STARTED.
3089
3090 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003091 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003092
3093 WDI_PostAssocReq must have been called.
3094
Jeff Johnsone7245742012-09-05 17:12:55 -07003095 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003096 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003097
Jeff Johnson295189b2012-06-20 16:38:30 -07003098 wdiUpdateEDCAParamsRspCb: callback for passing back the
3099 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003100
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 callback
3103
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 @see WDI_PostAssocReq
3105 @return Result of the function call
3106*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003107WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003108WDI_UpdateEDCAParams
3109(
3110 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3111 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3112 void* pUserData
3113)
3114{
3115 WDI_EventInfoType wdiEventData;
3116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3117
3118 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 ------------------------------------------------------------------------*/
3121 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3122 {
3123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3124 "WDI API call before module is initialized - Fail request");
3125
Jeff Johnsone7245742012-09-05 17:12:55 -07003126 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 }
3128
3129 /*------------------------------------------------------------------------
3130 Fill in Event data and post to the Main FSM
3131 ------------------------------------------------------------------------*/
3132 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3134 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3135 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 wdiEventData.pUserData = pUserData;
3137
3138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3139
3140}/*WDI_UpdateEDCAParams*/
3141
3142
3143/**
3144 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3145 successfully a BA session and needs to notify the HW for
3146 the appropriate settings to take place. Upon the call of
3147 this API the WLAN DAL will pack and send a HAL Add BA
3148 request message to the lower RIVA sub-system if DAL is
3149 in state STARTED.
3150
3151 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003153
3154 WDI_PostAssocReq must have been called.
3155
3156 @param wdiAddBAReqParams: the add BA parameters as specified by
3157 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003158
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 wdiAddBARspCb: callback for passing back the response of
3160 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003161
Jeff Johnson295189b2012-06-20 16:38:30 -07003162 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 callback
3164
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 @see WDI_PostAssocReq
3166 @return Result of the function call
3167*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003168WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003169WDI_AddBASessionReq
3170(
3171 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3172 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3173 void* pUserData
3174)
3175{
3176 WDI_EventInfoType wdiEventData;
3177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3178
3179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 ------------------------------------------------------------------------*/
3182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3183 {
3184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3185 "WDI API call before module is initialized - Fail request");
3186
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003188 }
3189
3190 /*------------------------------------------------------------------------
3191 Fill in Event data and post to the Main FSM
3192 ------------------------------------------------------------------------*/
3193 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3195 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3196 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 wdiEventData.pUserData = pUserData;
3198
3199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3200
3201}/*WDI_AddBASessionReq*/
3202
3203/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003204 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 inform HW that it has deleted a previously created BA
3206 session. Upon the call of this API the WLAN DAL will
3207 pack and send a HAL Del BA request message to the lower
3208 RIVA sub-system if DAL is in state STARTED.
3209
3210 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003212
3213 WDI_AddBAReq must have been called.
3214
3215 @param wdiDelBAReqParams: the del BA parameters as specified by
3216 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003217
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 wdiDelBARspCb: callback for passing back the response of
3219 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003220
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003222 callback
3223
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 @see WDI_AddBAReq
3225 @return Result of the function call
3226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003228WDI_DelBAReq
3229(
3230 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3231 WDI_DelBARspCb wdiDelBARspCb,
3232 void* pUserData
3233)
3234{
3235 WDI_EventInfoType wdiEventData;
3236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3237
3238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 ------------------------------------------------------------------------*/
3241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3242 {
3243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3244 "WDI API call before module is initialized - Fail request");
3245
Jeff Johnsone7245742012-09-05 17:12:55 -07003246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003247 }
3248
3249 /*------------------------------------------------------------------------
3250 Fill in Event data and post to the Main FSM
3251 ------------------------------------------------------------------------*/
3252 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003253 wdiEventData.pEventData = pwdiDelBAReqParams;
3254 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3255 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 wdiEventData.pUserData = pUserData;
3257
3258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3259
3260}/*WDI_DelBAReq*/
3261
Jeff Johnsone7245742012-09-05 17:12:55 -07003262/*========================================================================
3263
Jeff Johnson295189b2012-06-20 16:38:30 -07003264 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003265
Jeff Johnson295189b2012-06-20 16:38:30 -07003266==========================================================================*/
3267
3268/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003269 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003270 wants to set the power save related configurations of
3271 the WLAN Device. Upon the call of this API the WLAN DAL
3272 will pack and send a HAL Update CFG request message to
3273 the lower RIVA sub-system if DAL is in state STARTED.
3274
3275 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003276 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003277
3278 WDI_Start must have been called.
3279
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003281 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003282
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 wdiSetPwrSaveCfgCb: callback for passing back the
3284 response of the set power save cfg operation received
3285 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
Jeff Johnsone7245742012-09-05 17:12:55 -07003291 @return Result of the function call
3292*/
3293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003294WDI_SetPwrSaveCfgReq
3295(
3296 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3297 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3298 void* pUserData
3299)
3300{
3301 WDI_EventInfoType wdiEventData;
3302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3303
3304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 ------------------------------------------------------------------------*/
3307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3308 {
3309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3310 "WDI API call before module is initialized - Fail request");
3311
Jeff Johnsone7245742012-09-05 17:12:55 -07003312 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 }
3314
3315 /*------------------------------------------------------------------------
3316 Fill in Event data and post to the Main FSM
3317 ------------------------------------------------------------------------*/
3318 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003319 wdiEventData.pEventData = pwdiPowerSaveCfg;
3320 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3321 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003322 wdiEventData.pUserData = pUserData;
3323
3324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3325
3326}/*WDI_SetPwrSaveCfgReq*/
3327
3328/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003329 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 request the device to get into IMPS power state. Upon
3331 the call of this API the WLAN DAL will send a HAL Enter
3332 IMPS request message to the lower RIVA sub-system if DAL
3333 is in state STARTED.
3334
3335 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003336 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003337
Jeff Johnsone7245742012-09-05 17:12:55 -07003338
3339 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 response of the Enter IMPS operation received from the
3341 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003342
Jeff Johnson295189b2012-06-20 16:38:30 -07003343 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003344 callback
3345
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 @see WDI_Start
3347 @return Result of the function call
3348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003350WDI_EnterImpsReq
3351(
3352 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3353 void* pUserData
3354)
3355{
3356 WDI_EventInfoType wdiEventData;
3357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3358
3359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 ------------------------------------------------------------------------*/
3362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3363 {
3364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3365 "WDI API call before module is initialized - Fail request");
3366
Jeff Johnsone7245742012-09-05 17:12:55 -07003367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 }
3369
3370 /*------------------------------------------------------------------------
3371 Fill in Event data and post to the Main FSM
3372 ------------------------------------------------------------------------*/
3373 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 wdiEventData.pEventData = NULL;
3375 wdiEventData.uEventDataSize = 0;
3376 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 wdiEventData.pUserData = pUserData;
3378
3379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3380
3381}/*WDI_EnterImpsReq*/
3382
3383/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003384 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 request the device to get out of IMPS power state. Upon
3386 the call of this API the WLAN DAL will send a HAL Exit
3387 IMPS request message to the lower RIVA sub-system if DAL
3388 is in state STARTED.
3389
3390 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003392
Jeff Johnson295189b2012-06-20 16:38:30 -07003393
Jeff Johnsone7245742012-09-05 17:12:55 -07003394
3395 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003397
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 callback
3400
Jeff Johnson295189b2012-06-20 16:38:30 -07003401 @see WDI_Start
3402 @return Result of the function call
3403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003405WDI_ExitImpsReq
3406(
3407 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3408 void* pUserData
3409)
3410{
3411 WDI_EventInfoType wdiEventData;
3412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3413
3414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003415 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 ------------------------------------------------------------------------*/
3417 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3418 {
3419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3420 "WDI API call before module is initialized - Fail request");
3421
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 }
3424
3425 /*------------------------------------------------------------------------
3426 Fill in Event data and post to the Main FSM
3427 ------------------------------------------------------------------------*/
3428 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 wdiEventData.pEventData = NULL;
3430 wdiEventData.uEventDataSize = 0;
3431 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003432 wdiEventData.pUserData = pUserData;
3433
3434 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3435
3436}/*WDI_ExitImpsReq*/
3437
3438/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003439 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 request the device to get into BMPS power state. Upon
3441 the call of this API the WLAN DAL will pack and send a
3442 HAL Enter BMPS request message to the lower RIVA
3443 sub-system if DAL is in state STARTED.
3444
3445 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003446 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003447
3448 WDI_PostAssocReq must have been called.
3449
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003452
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 wdiEnterBmpsRspCb: callback for passing back the
3454 response of the Enter BMPS operation received from the
3455 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003456
Jeff Johnson295189b2012-06-20 16:38:30 -07003457 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 callback
3459
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 @see WDI_PostAssocReq
3461 @return Result of the function call
3462*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003463WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003464WDI_EnterBmpsReq
3465(
3466 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3467 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3468 void* pUserData
3469)
3470{
3471 WDI_EventInfoType wdiEventData;
3472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3473
3474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 ------------------------------------------------------------------------*/
3477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3478 {
3479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3480 "WDI API call before module is initialized - Fail request");
3481
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 }
3484
3485 /*------------------------------------------------------------------------
3486 Fill in Event data and post to the Main FSM
3487 ------------------------------------------------------------------------*/
3488 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003489 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3490 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3491 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 wdiEventData.pUserData = pUserData;
3493
3494 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3495
3496}/*WDI_EnterBmpsReq*/
3497
3498/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 request the device to get out of BMPS power state. Upon
3501 the call of this API the WLAN DAL will pack and send a
3502 HAL Exit BMPS request message to the lower RIVA
3503 sub-system if DAL is in state STARTED.
3504
3505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003507
3508 WDI_PostAssocReq must have been called.
3509
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003512
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 wdiExitBmpsRspCb: callback for passing back the response
3514 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003515
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 callback
3518
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 @see WDI_PostAssocReq
3520 @return Result of the function call
3521*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003522WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003523WDI_ExitBmpsReq
3524(
3525 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3526 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3527 void* pUserData
3528)
3529{
3530 WDI_EventInfoType wdiEventData;
3531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3532
3533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 ------------------------------------------------------------------------*/
3536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3537 {
3538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3539 "WDI API call before module is initialized - Fail request");
3540
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 }
3543
3544 /*------------------------------------------------------------------------
3545 Fill in Event data and post to the Main FSM
3546 ------------------------------------------------------------------------*/
3547 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3549 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3550 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 wdiEventData.pUserData = pUserData;
3552
3553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3554
3555}/*WDI_ExitBmpsReq*/
3556
3557/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 request the device to get into UAPSD power state. Upon
3560 the call of this API the WLAN DAL will pack and send a
3561 HAL Enter UAPSD request message to the lower RIVA
3562 sub-system if DAL is in state STARTED.
3563
3564 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003566
3567 WDI_PostAssocReq must have been called.
3568 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003569
3570 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003571 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003572
Jeff Johnson295189b2012-06-20 16:38:30 -07003573 wdiEnterUapsdRspCb: callback for passing back the
3574 response of the Enter UAPSD operation received from the
3575 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003576
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003578 callback
3579
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3581 @return Result of the function call
3582*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003583WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003584WDI_EnterUapsdReq
3585(
3586 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3587 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3588 void* pUserData
3589)
3590{
3591 WDI_EventInfoType wdiEventData;
3592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3593
3594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003595 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 ------------------------------------------------------------------------*/
3597 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3598 {
3599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3600 "WDI API call before module is initialized - Fail request");
3601
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 }
3604
3605 /*------------------------------------------------------------------------
3606 Fill in Event data and post to the Main FSM
3607 ------------------------------------------------------------------------*/
3608 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003609 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3610 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3611 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 wdiEventData.pUserData = pUserData;
3613
3614 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3615
3616}/*WDI_EnterUapsdReq*/
3617
3618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 request the device to get out of UAPSD power state. Upon
3621 the call of this API the WLAN DAL will send a HAL Exit
3622 UAPSD request message to the lower RIVA sub-system if
3623 DAL is in state STARTED.
3624
3625 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003627
3628 WDI_PostAssocReq must have been called.
3629
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 response of the Exit UAPSD operation received from the
3632 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003633
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 callback
3636
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 @see WDI_PostAssocReq
3638 @return Result of the function call
3639*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003640WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003641WDI_ExitUapsdReq
3642(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003643 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003644 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3645 void* pUserData
3646)
3647{
3648 WDI_EventInfoType wdiEventData;
3649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3650
3651 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 ------------------------------------------------------------------------*/
3654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3655 {
3656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3657 "WDI API call before module is initialized - Fail request");
3658
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 }
3661
3662 /*------------------------------------------------------------------------
3663 Fill in Event data and post to the Main FSM
3664 ------------------------------------------------------------------------*/
3665 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003666 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3667 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003668 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003669 wdiEventData.pUserData = pUserData;
3670
3671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3672
3673}/*WDI_ExitUapsdReq*/
3674
3675/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003676 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003677 MAC wants to set the UAPSD related configurations
3678 of an associated STA (while acting as an AP) to the WLAN
3679 Device. Upon the call of this API the WLAN DAL will pack
3680 and send a HAL Update UAPSD params request message to
3681 the lower RIVA sub-system if DAL is in state STARTED.
3682
3683 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003685
3686 WDI_ConfigBSSReq must have been called.
3687
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003690
Jeff Johnson295189b2012-06-20 16:38:30 -07003691 wdiUpdateUapsdParamsCb: callback for passing back the
3692 response of the update UAPSD params operation received
3693 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003694
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 callback
3697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 @see WDI_ConfigBSSReq
3699 @return Result of the function call
3700*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003701WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003702WDI_UpdateUapsdParamsReq
3703(
3704 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3705 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3706 void* pUserData
3707)
3708{
3709 WDI_EventInfoType wdiEventData;
3710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3711
3712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 ------------------------------------------------------------------------*/
3715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3716 {
3717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3718 "WDI API call before module is initialized - Fail request");
3719
Jeff Johnsone7245742012-09-05 17:12:55 -07003720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 }
3722
3723 /*------------------------------------------------------------------------
3724 Fill in Event data and post to the Main FSM
3725 ------------------------------------------------------------------------*/
3726 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003727 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003728 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 wdiEventData.pUserData = pUserData;
3731
3732 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3733
3734}/*WDI_UpdateUapsdParamsReq*/
3735
3736/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 MAC wants to set the UAPSD related configurations before
3739 requesting for enter UAPSD power state to the WLAN
3740 Device. Upon the call of this API the WLAN DAL will pack
3741 and send a HAL Set UAPSD params request message to
3742 the lower RIVA sub-system if DAL is in state STARTED.
3743
3744 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003746
3747 WDI_PostAssocReq must have been called.
3748
3749 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3750 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003751
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 wdiSetUapsdAcParamsCb: callback for passing back the
3753 response of the set UAPSD params operation received from
3754 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003755
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003757 callback
3758
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 @see WDI_PostAssocReq
3760 @return Result of the function call
3761*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003762WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003763WDI_SetUapsdAcParamsReq
3764(
3765 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3766 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3767 void* pUserData
3768)
3769{
3770 WDI_EventInfoType wdiEventData;
3771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3772
3773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 ------------------------------------------------------------------------*/
3776 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3777 {
3778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3779 "WDI API call before module is initialized - Fail request");
3780
Jeff Johnsone7245742012-09-05 17:12:55 -07003781 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 }
3783
3784 /*------------------------------------------------------------------------
3785 Fill in Event data and post to the Main FSM
3786 ------------------------------------------------------------------------*/
3787 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 wdiEventData.pEventData = pwdiUapsdInfo;
3789 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3790 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 wdiEventData.pUserData = pUserData;
3792
3793 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3794
3795}/*WDI_SetUapsdAcParamsReq*/
3796
3797/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 MAC wants to set/reset the RXP filters for received pkts
3800 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3801 and send a HAL configure RXP filter request message to
3802 the lower RIVA sub-system.
3803
3804 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003805 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003806
Jeff Johnsone7245742012-09-05 17:12:55 -07003807
3808 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 filter as specified by the Device
3810 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003811
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 wdiConfigureRxpFilterCb: callback for passing back the
3813 response of the configure RXP filter operation received
3814 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003815
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 callback
3818
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 @return Result of the function call
3820*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003821WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003822WDI_ConfigureRxpFilterReq
3823(
3824 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3825 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3826 void* pUserData
3827)
3828{
3829 WDI_EventInfoType wdiEventData;
3830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3831
3832 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 ------------------------------------------------------------------------*/
3835 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3836 {
3837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3838 "WDI API call before module is initialized - Fail request");
3839
Jeff Johnsone7245742012-09-05 17:12:55 -07003840 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 }
3842
3843 /*------------------------------------------------------------------------
3844 Fill in Event data and post to the Main FSM
3845 ------------------------------------------------------------------------*/
3846 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3848 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3849 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 wdiEventData.pUserData = pUserData;
3851
3852 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3853}/*WDI_ConfigureRxpFilterReq*/
3854
3855/**
3856 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3857 wants to set the beacon filters while in power save.
3858 Upon the call of this API the WLAN DAL will pack and
3859 send a Beacon filter request message to the
3860 lower RIVA sub-system.
3861
3862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003864
Jeff Johnsone7245742012-09-05 17:12:55 -07003865
3866 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 filter as specified by the Device
3868 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003869
Jeff Johnson295189b2012-06-20 16:38:30 -07003870 wdiBeaconFilterCb: callback for passing back the
3871 response of the set beacon filter operation received
3872 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003873
Jeff Johnson295189b2012-06-20 16:38:30 -07003874 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 callback
3876
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 @return Result of the function call
3878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003880WDI_SetBeaconFilterReq
3881(
3882 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3883 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3884 void* pUserData
3885)
3886{
3887 WDI_EventInfoType wdiEventData;
3888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3889
3890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 ------------------------------------------------------------------------*/
3893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3894 {
3895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3896 "WDI API call before module is initialized - Fail request");
3897
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 }
3900
3901 /*------------------------------------------------------------------------
3902 Fill in Event data and post to the Main FSM
3903 ------------------------------------------------------------------------*/
3904 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003906 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 wdiEventData.pUserData = pUserData;
3909
3910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3911}/*WDI_SetBeaconFilterReq*/
3912
3913/**
3914 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3915 wants to remove the beacon filter for particular IE
3916 while in power save. Upon the call of this API the WLAN
3917 DAL will pack and send a remove Beacon filter request
3918 message to the lower RIVA sub-system.
3919
3920 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003922
Jeff Johnsone7245742012-09-05 17:12:55 -07003923
3924 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 filter as specified by the Device
3926 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003927
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 wdiBeaconFilterCb: callback for passing back the
3929 response of the remove beacon filter operation received
3930 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003931
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 callback
3934
Jeff Johnson295189b2012-06-20 16:38:30 -07003935 @return Result of the function call
3936*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003937WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003938WDI_RemBeaconFilterReq
3939(
3940 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3941 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3942 void* pUserData
3943)
3944{
3945 WDI_EventInfoType wdiEventData;
3946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3947
3948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 ------------------------------------------------------------------------*/
3951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3952 {
3953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3954 "WDI API call before module is initialized - Fail request");
3955
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 }
3958
3959 /*------------------------------------------------------------------------
3960 Fill in Event data and post to the Main FSM
3961 ------------------------------------------------------------------------*/
3962 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003964 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 wdiEventData.pUserData = pUserData;
3967
3968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3969}/*WDI_RemBeaconFilterReq*/
3970
3971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 MAC wants to set the RSSI thresholds related
3974 configurations while in power save. Upon the call of
3975 this API the WLAN DAL will pack and send a HAL Set RSSI
3976 thresholds request message to the lower RIVA
3977 sub-system if DAL is in state STARTED.
3978
3979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003981
3982 WDI_PostAssocReq must have been called.
3983
3984 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3985 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003986
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 wdiSetUapsdAcParamsCb: callback for passing back the
3988 response of the set UAPSD params operation received from
3989 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003990
Jeff Johnson295189b2012-06-20 16:38:30 -07003991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 callback
3993
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 @see WDI_PostAssocReq
3995 @return Result of the function call
3996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003998WDI_SetRSSIThresholdsReq
3999(
4000 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4001 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4002 void* pUserData
4003)
4004{
4005 WDI_EventInfoType wdiEventData;
4006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4007
4008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 ------------------------------------------------------------------------*/
4011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4012 {
4013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4014 "WDI API call before module is initialized - Fail request");
4015
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 }
4018
4019 /*------------------------------------------------------------------------
4020 Fill in Event data and post to the Main FSM
4021 ------------------------------------------------------------------------*/
4022 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004023 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004024 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 wdiEventData.pUserData = pUserData;
4027
4028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4029}/* WDI_SetRSSIThresholdsReq*/
4030
4031/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 wants to set the filter to minimize unnecessary host
4034 wakeup due to broadcast traffic while in power save.
4035 Upon the call of this API the WLAN DAL will pack and
4036 send a HAL host offload request message to the
4037 lower RIVA sub-system if DAL is in state STARTED.
4038
4039 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004041
4042 WDI_PostAssocReq must have been called.
4043
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004046
Jeff Johnson295189b2012-06-20 16:38:30 -07004047 wdiHostOffloadCb: callback for passing back the response
4048 of the host offload operation received from the
4049 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004050
Jeff Johnson295189b2012-06-20 16:38:30 -07004051 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 callback
4053
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 @see WDI_PostAssocReq
4055 @return Result of the function call
4056*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004057WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004058WDI_HostOffloadReq
4059(
4060 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4061 WDI_HostOffloadCb wdiHostOffloadCb,
4062 void* pUserData
4063)
4064{
4065 WDI_EventInfoType wdiEventData;
4066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4067
4068 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 ------------------------------------------------------------------------*/
4071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4072 {
4073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4074 "WDI API call before module is initialized - Fail request");
4075
Jeff Johnsone7245742012-09-05 17:12:55 -07004076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004077 }
4078
4079 /*------------------------------------------------------------------------
4080 Fill in Event data and post to the Main FSM
4081 ------------------------------------------------------------------------*/
4082 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004083 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004084 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 wdiEventData.pUserData = pUserData;
4087
4088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4089}/*WDI_HostOffloadReq*/
4090
4091/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 @brief WDI_KeepAliveReq will be called when the upper MAC
4093 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 and minimize unnecessary host wakeups due to while in power save.
4095 Upon the call of this API the WLAN DAL will pack and
4096 send a HAL Keep Alive request message to the
4097 lower RIVA sub-system if DAL is in state STARTED.
4098
4099 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004101
4102 WDI_PostAssocReq must have been called.
4103
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004106
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 wdiKeepAliveCb: callback for passing back the response
4108 of the Keep Alive operation received from the
4109 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004110
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 callback
4113
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 @see WDI_PostAssocReq
4115 @return Result of the function call
4116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004118WDI_KeepAliveReq
4119(
4120 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4121 WDI_KeepAliveCb wdiKeepAliveCb,
4122 void* pUserData
4123)
4124{
4125 WDI_EventInfoType wdiEventData;
4126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4127
4128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 ------------------------------------------------------------------------*/
4131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4132 {
4133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4134 "WDI_KeepAliveReq: WDI API call before module "
4135 "is initialized - Fail request");
4136
Jeff Johnsone7245742012-09-05 17:12:55 -07004137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 }
4139
4140 /*------------------------------------------------------------------------
4141 Fill in Event data and post to the Main FSM
4142 ------------------------------------------------------------------------*/
4143 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004144 wdiEventData.pEventData = pwdiKeepAliveParams;
4145 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4146 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 wdiEventData.pUserData = pUserData;
4148
4149 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4150}/*WDI_KeepAliveReq*/
4151
4152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 wants to set the Wowl Bcast ptrn to minimize unnecessary
4155 host wakeup due to broadcast traffic while in power
4156 save. Upon the call of this API the WLAN DAL will pack
4157 and send a HAL Wowl Bcast ptrn request message to the
4158 lower RIVA sub-system if DAL is in state STARTED.
4159
4160 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004162
4163 WDI_PostAssocReq must have been called.
4164
Jeff Johnsone7245742012-09-05 17:12:55 -07004165 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004167
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 wdiWowlAddBcPtrnCb: callback for passing back the
4169 response of the add Wowl bcast ptrn operation received
4170 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004171
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 callback
4174
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 @see WDI_PostAssocReq
4176 @return Result of the function call
4177*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004178WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004179WDI_WowlAddBcPtrnReq
4180(
4181 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4182 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4183 void* pUserData
4184)
4185{
4186 WDI_EventInfoType wdiEventData;
4187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4188
4189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 ------------------------------------------------------------------------*/
4192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4193 {
4194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4195 "WDI API call before module is initialized - Fail request");
4196
Jeff Johnsone7245742012-09-05 17:12:55 -07004197 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 }
4199
4200 /*------------------------------------------------------------------------
4201 Fill in Event data and post to the Main FSM
4202 ------------------------------------------------------------------------*/
4203 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004204 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004205 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 wdiEventData.pUserData = pUserData;
4208
4209 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4210}/*WDI_WowlAddBcPtrnReq*/
4211
4212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 wants to clear the Wowl Bcast ptrn. Upon the call of
4215 this API the WLAN DAL will pack and send a HAL delete
4216 Wowl Bcast ptrn request message to the lower RIVA
4217 sub-system if DAL is in state STARTED.
4218
4219 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004221
4222 WDI_WowlAddBcPtrnReq must have been called.
4223
Jeff Johnsone7245742012-09-05 17:12:55 -07004224 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004225 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004226
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 wdiWowlDelBcPtrnCb: callback for passing back the
4228 response of the del Wowl bcast ptrn operation received
4229 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004230
Jeff Johnson295189b2012-06-20 16:38:30 -07004231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 callback
4233
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 @see WDI_WowlAddBcPtrnReq
4235 @return Result of the function call
4236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004238WDI_WowlDelBcPtrnReq
4239(
4240 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4241 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4242 void* pUserData
4243)
4244{
4245 WDI_EventInfoType wdiEventData;
4246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4247
4248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 ------------------------------------------------------------------------*/
4251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4252 {
4253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4254 "WDI API call before module is initialized - Fail request");
4255
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 }
4258
4259 /*------------------------------------------------------------------------
4260 Fill in Event data and post to the Main FSM
4261 ------------------------------------------------------------------------*/
4262 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004264 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004266 wdiEventData.pUserData = pUserData;
4267
4268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4269}/*WDI_WowlDelBcPtrnReq*/
4270
4271/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 wants to enter the Wowl state to minimize unnecessary
4274 host wakeup while in power save. Upon the call of this
4275 API the WLAN DAL will pack and send a HAL Wowl enter
4276 request message to the lower RIVA sub-system if DAL is
4277 in state STARTED.
4278
4279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004281
4282 WDI_PostAssocReq must have been called.
4283
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004286
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 wdiWowlEnterReqCb: callback for passing back the
4288 response of the enter Wowl operation received from the
4289 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004290
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004292 callback
4293
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 @see WDI_PostAssocReq
4295 @return Result of the function call
4296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004298WDI_WowlEnterReq
4299(
4300 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4301 WDI_WowlEnterReqCb wdiWowlEnterCb,
4302 void* pUserData
4303)
4304{
4305 WDI_EventInfoType wdiEventData;
4306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4307
4308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 ------------------------------------------------------------------------*/
4311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4312 {
4313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4314 "WDI API call before module is initialized - Fail request");
4315
Jeff Johnsone7245742012-09-05 17:12:55 -07004316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004317 }
4318
4319 /*------------------------------------------------------------------------
4320 Fill in Event data and post to the Main FSM
4321 ------------------------------------------------------------------------*/
4322 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004323 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004324 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 wdiEventData.pUserData = pUserData;
4327
4328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4329}/*WDI_WowlEnterReq*/
4330
4331/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004333 wants to exit the Wowl state. Upon the call of this API
4334 the WLAN DAL will pack and send a HAL Wowl exit request
4335 message to the lower RIVA sub-system if DAL is in state
4336 STARTED.
4337
4338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004340
4341 WDI_WowlEnterReq must have been called.
4342
Jeff Johnsone7245742012-09-05 17:12:55 -07004343 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004344 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004345
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 wdiWowlExitReqCb: callback for passing back the response
4347 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004348
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 callback
4351
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 @see WDI_WowlEnterReq
4353 @return Result of the function call
4354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004356WDI_WowlExitReq
4357(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004358 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 WDI_WowlExitReqCb wdiWowlExitCb,
4360 void* pUserData
4361)
4362{
4363 WDI_EventInfoType wdiEventData;
4364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4365
4366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 ------------------------------------------------------------------------*/
4369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4370 {
4371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4372 "WDI API call before module is initialized - Fail request");
4373
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 }
4376
4377 /*------------------------------------------------------------------------
4378 Fill in Event data and post to the Main FSM
4379 ------------------------------------------------------------------------*/
4380 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004381 wdiEventData.pEventData = pwdiWowlExitParams;
4382 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004383 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004384 wdiEventData.pUserData = pUserData;
4385
4386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4387}/*WDI_WowlExitReq*/
4388
4389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004390 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004391 the upper MAC wants to dynamically adjusts the listen
4392 interval based on the WLAN/MSM activity. Upon the call
4393 of this API the WLAN DAL will pack and send a HAL
4394 configure Apps Cpu Wakeup State request message to the
4395 lower RIVA sub-system.
4396
4397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004399
Jeff Johnsone7245742012-09-05 17:12:55 -07004400
4401 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 Apps Cpu Wakeup State as specified by the
4403 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004404
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4406 back the response of the configure Apps Cpu Wakeup State
4407 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004408
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 callback
4411
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 @return Result of the function call
4413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004415WDI_ConfigureAppsCpuWakeupStateReq
4416(
4417 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4418 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4419 void* pUserData
4420)
4421{
4422 WDI_EventInfoType wdiEventData;
4423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4424
4425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 ------------------------------------------------------------------------*/
4428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4429 {
4430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4431 "WDI API call before module is initialized - Fail request");
4432
Jeff Johnsone7245742012-09-05 17:12:55 -07004433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 }
4435
4436 /*------------------------------------------------------------------------
4437 Fill in Event data and post to the Main FSM
4438 ------------------------------------------------------------------------*/
4439 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004440 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4441 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4442 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004443 wdiEventData.pUserData = pUserData;
4444
4445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4446}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4447/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004448 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004449 to to perform a flush operation on a given AC. Upon the
4450 call of this API the WLAN DAL will pack and send a HAL
4451 Flush AC request message to the lower RIVA sub-system if
4452 DAL is in state STARTED.
4453
4454 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004455 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004456
4457 WDI_AddBAReq must have been called.
4458
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004461
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 wdiFlushAcRspCb: callback for passing back the response
4463 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004464
Jeff Johnson295189b2012-06-20 16:38:30 -07004465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 callback
4467
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 @see WDI_AddBAReq
4469 @return Result of the function call
4470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004472WDI_FlushAcReq
4473(
4474 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4475 WDI_FlushAcRspCb wdiFlushAcRspCb,
4476 void* pUserData
4477)
4478{
4479 WDI_EventInfoType wdiEventData;
4480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4481
4482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 ------------------------------------------------------------------------*/
4485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4486 {
4487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4488 "WDI API call before module is initialized - Fail request");
4489
Jeff Johnsone7245742012-09-05 17:12:55 -07004490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 }
4492
4493 /*------------------------------------------------------------------------
4494 Fill in Event data and post to the Main FSM
4495 ------------------------------------------------------------------------*/
4496 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 wdiEventData.pEventData = pwdiFlushAcReqParams;
4498 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4499 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 wdiEventData.pUserData = pUserData;
4501
4502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4503
4504}/*WDI_FlushAcReq*/
4505
4506/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004507 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004508 wants to notify the lower mac on a BT AMP event. This is
4509 to inform BTC-SLM that some BT AMP event occurred. Upon
4510 the call of this API the WLAN DAL will pack and send a
4511 HAL BT AMP event request message to the lower RIVA
4512 sub-system if DAL is in state STARTED.
4513
4514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004516
Jeff Johnsone7245742012-09-05 17:12:55 -07004517
4518 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004520
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 wdiBtAmpEventRspCb: callback for passing back the
4522 response of the BT AMP event operation received from the
4523 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004524
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 callback
4527
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 @return Result of the function call
4529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004531WDI_BtAmpEventReq
4532(
4533 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4534 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4535 void* pUserData
4536)
4537{
4538 WDI_EventInfoType wdiEventData;
4539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4540
4541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 ------------------------------------------------------------------------*/
4544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4545 {
4546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4547 "WDI API call before module is initialized - Fail request");
4548
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 }
4551
4552 /*------------------------------------------------------------------------
4553 Fill in Event data and post to the Main FSM
4554 ------------------------------------------------------------------------*/
4555 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4557 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4558 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 wdiEventData.pUserData = pUserData;
4560
4561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4562
4563}/*WDI_BtAmpEventReq*/
4564
Jeff Johnsone7245742012-09-05 17:12:55 -07004565#ifdef FEATURE_OEM_DATA_SUPPORT
4566/**
4567 @brief WDI_Start Oem Data Req will be called when the upper MAC
4568 wants to notify the lower mac on a oem data Req event.Upon
4569 the call of this API the WLAN DAL will pack and send a
4570 HAL OEM Data Req event request message to the lower RIVA
4571 sub-system if DAL is in state STARTED.
4572
4573 In state BUSY this request will be queued. Request won't
4574 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004575
4576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
4578 @param pwdiOemDataReqParams: the Oem Data Req as
4579 specified by the Device Interface
4580
4581 wdiStartOemDataRspCb: callback for passing back the
4582 response of the Oem Data Req received from the
4583 device
4584
4585 pUserData: user data will be passed back with the
4586 callback
4587
4588 @return Result of the function call
4589*/
4590WDI_Status
4591WDI_StartOemDataReq
4592(
4593 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4594 WDI_oemDataRspCb wdiOemDataRspCb,
4595 void* pUserData
4596)
4597{
4598 WDI_EventInfoType wdiEventData;
4599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4600
4601 /*------------------------------------------------------------------------
4602 Sanity Check
4603 ------------------------------------------------------------------------*/
4604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4605 {
4606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4607 "WDI API call before module is initialized - Fail request");
4608
4609 return WDI_STATUS_E_NOT_ALLOWED;
4610 }
4611
4612 /*------------------------------------------------------------------------
4613 Fill in Event data and post to the Main FSM
4614 ------------------------------------------------------------------------*/
4615 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4616 wdiEventData.pEventData = pwdiOemDataReqParams;
4617 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4618 wdiEventData.pCBfnc = wdiOemDataRspCb;
4619 wdiEventData.pUserData = pUserData;
4620
4621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4622
4623
4624}
4625
4626#endif
4627
4628
4629/*========================================================================
4630
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004632
Jeff Johnson295189b2012-06-20 16:38:30 -07004633==========================================================================*/
4634/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004635 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004636 the WLAN HW to change the current channel of operation.
4637 Upon the call of this API the WLAN DAL will pack and
4638 send a HAL Start request message to the lower RIVA
4639 sub-system if DAL is in state STARTED.
4640
4641 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004642 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004643
4644 WDI_Start must have been called.
4645
Jeff Johnsone7245742012-09-05 17:12:55 -07004646 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004648
Jeff Johnson295189b2012-06-20 16:38:30 -07004649 wdiSwitchChRspCb: callback for passing back the response
4650 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004651
Jeff Johnson295189b2012-06-20 16:38:30 -07004652 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004653 callback
4654
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 @see WDI_Start
4656 @return Result of the function call
4657*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004659WDI_SwitchChReq
4660(
4661 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4662 WDI_SwitchChRspCb wdiSwitchChRspCb,
4663 void* pUserData
4664)
4665{
4666 WDI_EventInfoType wdiEventData;
4667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4668
4669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 ------------------------------------------------------------------------*/
4672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4673 {
4674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4675 "WDI API call before module is initialized - Fail request");
4676
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004678 }
4679
4680 /*------------------------------------------------------------------------
4681 Fill in Event data and post to the Main FSM
4682 ------------------------------------------------------------------------*/
4683 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004684 wdiEventData.pEventData = pwdiSwitchChReqParams;
4685 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4686 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 wdiEventData.pUserData = pUserData;
4688
4689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4690
4691}/*WDI_SwitchChReq*/
4692
4693
4694/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004696 wishes to add or update a STA in HW. Upon the call of
4697 this API the WLAN DAL will pack and send a HAL Start
4698 message request message to the lower RIVA sub-system if
4699 DAL is in state STARTED.
4700
4701 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004702 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004703
4704 WDI_Start must have been called.
4705
Jeff Johnsone7245742012-09-05 17:12:55 -07004706 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004707 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004708
Jeff Johnson295189b2012-06-20 16:38:30 -07004709 wdiConfigSTARspCb: callback for passing back the
4710 response of the config STA operation received from the
4711 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004712
Jeff Johnson295189b2012-06-20 16:38:30 -07004713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004714 callback
4715
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 @see WDI_Start
4717 @return Result of the function call
4718*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004719WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004720WDI_ConfigSTAReq
4721(
4722 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4723 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4724 void* pUserData
4725)
4726{
4727 WDI_EventInfoType wdiEventData;
4728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4729
4730 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 ------------------------------------------------------------------------*/
4733 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4734 {
4735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4736 "WDI API call before module is initialized - Fail request");
4737
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004739 }
4740
4741 /*------------------------------------------------------------------------
4742 Fill in Event data and post to the Main FSM
4743 ------------------------------------------------------------------------*/
4744 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004745 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4746 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4747 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 wdiEventData.pUserData = pUserData;
4749
4750 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4751
4752}/*WDI_ConfigSTAReq*/
4753
4754/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004755 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 wants to change the state of an ongoing link. Upon the
4757 call of this API the WLAN DAL will pack and send a HAL
4758 Start message request message to the lower RIVA
4759 sub-system if DAL is in state STARTED.
4760
4761 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004762 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004763
4764 WDI_JoinStartReq must have been called.
4765
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004768
Jeff Johnson295189b2012-06-20 16:38:30 -07004769 wdiSetLinkStateRspCb: callback for passing back the
4770 response of the set link state operation received from
4771 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004772
Jeff Johnson295189b2012-06-20 16:38:30 -07004773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004774 callback
4775
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 @see WDI_JoinStartReq
4777 @return Result of the function call
4778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004780WDI_SetLinkStateReq
4781(
4782 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4783 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4784 void* pUserData
4785)
4786{
4787 WDI_EventInfoType wdiEventData;
4788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4789
4790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 ------------------------------------------------------------------------*/
4793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4794 {
4795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4796 "WDI API call before module is initialized - Fail request");
4797
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 }
4800
4801 /*------------------------------------------------------------------------
4802 Fill in Event data and post to the Main FSM
4803 ------------------------------------------------------------------------*/
4804 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004805 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4806 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4807 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 wdiEventData.pUserData = pUserData;
4809
4810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4811
4812}/*WDI_SetLinkStateReq*/
4813
4814
4815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 to get statistics (MIB counters) from the device. Upon
4818 the call of this API the WLAN DAL will pack and send a
4819 HAL Start request message to the lower RIVA sub-system
4820 if DAL is in state STARTED.
4821
4822 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004824
4825 WDI_Start must have been called.
4826
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004829
Jeff Johnson295189b2012-06-20 16:38:30 -07004830 wdiGetStatsRspCb: callback for passing back the response
4831 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004832
Jeff Johnson295189b2012-06-20 16:38:30 -07004833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004834 callback
4835
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 @see WDI_Start
4837 @return Result of the function call
4838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004840WDI_GetStatsReq
4841(
4842 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4843 WDI_GetStatsRspCb wdiGetStatsRspCb,
4844 void* pUserData
4845)
4846{
4847 WDI_EventInfoType wdiEventData;
4848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4849
4850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 ------------------------------------------------------------------------*/
4853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4854 {
4855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4856 "WDI API call before module is initialized - Fail request");
4857
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 }
4860
4861 /*------------------------------------------------------------------------
4862 Fill in Event data and post to the Main FSM
4863 ------------------------------------------------------------------------*/
4864 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004865 wdiEventData.pEventData = pwdiGetStatsReqParams;
4866 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4867 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 wdiEventData.pUserData = pUserData;
4869
4870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4871
4872}/*WDI_GetStatsReq*/
4873
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004874#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4875/**
4876 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4877 to get roam rssi from the device. Upon
4878 the call of this API the WLAN DAL will pack and send a
4879 HAL Start request message to the lower RIVA sub-system
4880 if DAL is in state STARTED.
4881
4882 In state BUSY this request will be queued. Request won't
4883 be allowed in any other state.
4884
4885 WDI_Start must have been called.
4886
4887 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4888 specified by the Device Interface
4889
4890 wdiGetRoamRssiRspCb: callback for passing back the response
4891 of the get stats operation received from the device
4892
4893 pUserData: user data will be passed back with the
4894 callback
4895
4896 @see WDI_Start
4897 @return Result of the function call
4898*/
4899WDI_Status
4900WDI_GetRoamRssiReq
4901(
4902 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4903 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4904 void* pUserData
4905)
4906{
4907 WDI_EventInfoType wdiEventData;
4908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4909
4910 /*------------------------------------------------------------------------
4911 Sanity Check
4912 ------------------------------------------------------------------------*/
4913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4914 {
4915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4916 "WDI API call before module is initialized - Fail request");
4917
4918 return WDI_STATUS_E_NOT_ALLOWED;
4919 }
4920 /*------------------------------------------------------------------------
4921 Fill in Event data and post to the Main FSM
4922 ------------------------------------------------------------------------*/
4923 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4924 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4925 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4926 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4927 wdiEventData.pUserData = pUserData;
4928
4929 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4930
4931}/*WDI_GetRoamRssiReq*/
4932#endif
4933
Jeff Johnson295189b2012-06-20 16:38:30 -07004934
4935/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004936 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004937 it wishes to change the configuration of the WLAN
4938 Device. Upon the call of this API the WLAN DAL will pack
4939 and send a HAL Update CFG request message to the lower
4940 RIVA sub-system if DAL is in state STARTED.
4941
4942 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004943 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004944
4945 WDI_Start must have been called.
4946
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004949
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 wdiUpdateCfgsRspCb: callback for passing back the
4951 response of the update cfg operation received from the
4952 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004953
Jeff Johnson295189b2012-06-20 16:38:30 -07004954 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 callback
4956
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 @see WDI_Start
4958 @return Result of the function call
4959*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004960WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004961WDI_UpdateCfgReq
4962(
4963 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4964 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4965 void* pUserData
4966)
4967{
4968 WDI_EventInfoType wdiEventData;
4969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4970
4971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004972 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 ------------------------------------------------------------------------*/
4974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4975 {
4976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4977 "WDI API call before module is initialized - Fail request");
4978
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 }
4981
4982 /*------------------------------------------------------------------------
4983 Fill in Event data and post to the Main FSM
4984 ------------------------------------------------------------------------*/
4985 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4987 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4988 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 wdiEventData.pUserData = pUserData;
4990
4991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4992
4993}/*WDI_UpdateCfgReq*/
4994
4995
4996
4997/**
4998 @brief WDI_AddBAReq will be called when the upper MAC has setup
4999 successfully a BA session and needs to notify the HW for
5000 the appropriate settings to take place. Upon the call of
5001 this API the WLAN DAL will pack and send a HAL Add BA
5002 request message to the lower RIVA sub-system if DAL is
5003 in state STARTED.
5004
5005 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005006 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005007
5008 WDI_PostAssocReq must have been called.
5009
5010 @param wdiAddBAReqParams: the add BA parameters as specified by
5011 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005012
Jeff Johnson295189b2012-06-20 16:38:30 -07005013 wdiAddBARspCb: callback for passing back the response of
5014 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005015
Jeff Johnson295189b2012-06-20 16:38:30 -07005016 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 callback
5018
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 @see WDI_PostAssocReq
5020 @return Result of the function call
5021*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005022WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005023WDI_AddBAReq
5024(
5025 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5026 WDI_AddBARspCb wdiAddBARspCb,
5027 void* pUserData
5028)
5029{
5030 WDI_EventInfoType wdiEventData;
5031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5032
5033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 ------------------------------------------------------------------------*/
5036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5037 {
5038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5039 "WDI API call before module is initialized - Fail request");
5040
Jeff Johnsone7245742012-09-05 17:12:55 -07005041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 }
5043
5044 /*------------------------------------------------------------------------
5045 Fill in Event data and post to the Main FSM
5046 ------------------------------------------------------------------------*/
5047 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005048 wdiEventData.pEventData = pwdiAddBAReqParams;
5049 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5050 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 wdiEventData.pUserData = pUserData;
5052
5053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5054
5055}/*WDI_AddBAReq*/
5056
5057
5058/**
5059 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5060 successfully a BA session and needs to notify the HW for
5061 the appropriate settings to take place. Upon the call of
5062 this API the WLAN DAL will pack and send a HAL Add BA
5063 request message to the lower RIVA sub-system if DAL is
5064 in state STARTED.
5065
5066 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005068
5069 WDI_PostAssocReq must have been called.
5070
5071 @param wdiAddBAReqParams: the add BA parameters as specified by
5072 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005073
Jeff Johnson295189b2012-06-20 16:38:30 -07005074 wdiAddBARspCb: callback for passing back the response of
5075 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005076
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005078 callback
5079
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 @see WDI_PostAssocReq
5081 @return Result of the function call
5082*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005083WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005084WDI_TriggerBAReq
5085(
5086 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5087 WDI_TriggerBARspCb wdiTriggerBARspCb,
5088 void* pUserData
5089)
5090{
5091 WDI_EventInfoType wdiEventData;
5092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5093
5094 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 ------------------------------------------------------------------------*/
5097 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5098 {
5099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5100 "WDI API call before module is initialized - Fail request");
5101
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 }
5104
5105 /*------------------------------------------------------------------------
5106 Fill in Event data and post to the Main FSM
5107 ------------------------------------------------------------------------*/
5108 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5110 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5111 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 wdiEventData.pUserData = pUserData;
5113
5114 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5115
5116}/*WDI_AddBAReq*/
5117
5118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005119 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 wishes to update any of the Beacon parameters used by HW.
5121 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5122 message to the lower RIVA sub-system if DAL is in state
5123 STARTED.
5124
5125 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005126 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005127
5128 WDI_PostAssocReq must have been called.
5129
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005132
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 wdiUpdateBeaconParamsRspCb: callback for passing back the
5134 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005135
Jeff Johnson295189b2012-06-20 16:38:30 -07005136 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 callback
5138
Jeff Johnson295189b2012-06-20 16:38:30 -07005139 @see WDI_PostAssocReq
5140 @return Result of the function call
5141*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005142WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005143WDI_UpdateBeaconParamsReq
5144(
5145 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5146 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5147 void* pUserData
5148)
5149{
5150 WDI_EventInfoType wdiEventData;
5151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5152
5153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005154 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 ------------------------------------------------------------------------*/
5156 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5157 {
5158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5159 "WDI API call before module is initialized - Fail request");
5160
Jeff Johnsone7245742012-09-05 17:12:55 -07005161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 }
5163
5164 /*------------------------------------------------------------------------
5165 Fill in Event data and post to the Main FSM
5166 ------------------------------------------------------------------------*/
5167 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005168 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5169 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5170 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 wdiEventData.pUserData = pUserData;
5172
5173 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5174
5175}/*WDI_UpdateBeaconParamsReq*/
5176
5177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 wishes to update the Beacon template used by HW.
5180 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5181 message to the lower RIVA sub-system if DAL is in state
5182 STARTED.
5183
5184 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005185 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005186
5187 WDI_PostAssocReq must have been called.
5188
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005191
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 wdiSendBeaconParamsRspCb: callback for passing back the
5193 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005194
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 callback
5197
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 @see WDI_PostAssocReq
5199 @return Result of the function call
5200*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005201WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005202WDI_SendBeaconParamsReq
5203(
5204 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5205 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5206 void* pUserData
5207)
5208{
5209 WDI_EventInfoType wdiEventData;
5210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5211
5212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005214 ------------------------------------------------------------------------*/
5215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5216 {
5217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5218 "WDI API call before module is initialized - Fail request");
5219
Jeff Johnsone7245742012-09-05 17:12:55 -07005220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005221 }
5222
5223 /*------------------------------------------------------------------------
5224 Fill in Event data and post to the Main FSM
5225 ------------------------------------------------------------------------*/
5226 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005227 wdiEventData.pEventData = pwdiSendBeaconParams;
5228 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5229 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005230 wdiEventData.pUserData = pUserData;
5231
5232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5233
5234}/*WDI_SendBeaconParamsReq*/
5235
5236/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005237 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005238 upper MAC wants to update the probe response template to
5239 be transmitted as Soft AP
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*/
5261
Jeff Johnsone7245742012-09-05 17:12:55 -07005262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005263WDI_UpdateProbeRspTemplateReq
5264(
5265 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5266 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5267 void* pUserData
5268)
5269{
5270 WDI_EventInfoType wdiEventData;
5271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5272
5273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 ------------------------------------------------------------------------*/
5276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5277 {
5278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5279 "WDI API call before module is initialized - Fail request");
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 }
5283
5284 /*------------------------------------------------------------------------
5285 Fill in Event data and post to the Main FSM
5286 ------------------------------------------------------------------------*/
5287 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5289 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5290 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 wdiEventData.pUserData = pUserData;
5292
5293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5294
5295}/*WDI_UpdateProbeRspTemplateReq*/
5296
5297/**
5298 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5299 to the NV memory.
5300
5301
5302 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5303 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005304
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 wdiNvDownloadRspCb: callback for passing back the response of
5306 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005307
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 callback
5310
Jeff Johnson295189b2012-06-20 16:38:30 -07005311 @see WDI_PostAssocReq
5312 @return Result of the function call
5313*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005314WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005315WDI_NvDownloadReq
5316(
5317 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5318 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5319 void* pUserData
5320)
5321{
5322 WDI_EventInfoType wdiEventData;
5323
5324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 ------------------------------------------------------------------------*/
5327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5328 {
5329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5330 "WDI API call before module is initialized - Fail request");
5331
Jeff Johnsone7245742012-09-05 17:12:55 -07005332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 }
5334
5335 /*------------------------------------------------------------------------
5336 Fill in Event data and post to the Main FSM
5337 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005338 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5339 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5340 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5341 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 wdiEventData.pUserData = pUserData;
5343
5344 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5345
5346}/*WDI_NVDownloadReq*/
5347
Jeff Johnson295189b2012-06-20 16:38:30 -07005348/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005349 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 upper MAC wants to send Notice of Absence
5351 Upon the call of this API the WLAN DAL will
5352 pack and send the probe rsp template message to the
5353 lower RIVA sub-system if DAL is in state STARTED.
5354
5355 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005356 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005357
5358
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 wdiSendBeaconParamsRspCb: callback for passing back the
5363 response of the Send Beacon Params operation received
5364 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005365
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005367 callback
5368
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 @see WDI_AddBAReq
5370 @return Result of the function call
5371*/
5372WDI_Status
5373WDI_SetP2PGONOAReq
5374(
5375 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5376 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5377 void* pUserData
5378)
5379{
5380 WDI_EventInfoType wdiEventData;
5381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5382
5383 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005384 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 ------------------------------------------------------------------------*/
5386 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5387 {
5388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5389 "WDI API call before module is initialized - Fail request");
5390
Jeff Johnsone7245742012-09-05 17:12:55 -07005391 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005392 }
5393
5394 /*------------------------------------------------------------------------
5395 Fill in Event data and post to the Main FSM
5396 ------------------------------------------------------------------------*/
5397 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005398 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5399 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5400 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 wdiEventData.pUserData = pUserData;
5402
5403 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5404
5405}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005406
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305407#ifdef FEATURE_WLAN_TDLS
5408/**
5409 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5410 upper MAC wants to send TDLS Link Establish Request Parameters
5411 Upon the call of this API the WLAN DAL will
5412 pack and send the TDLS Link Establish Request message to the
5413 lower RIVA sub-system if DAL is in state STARTED.
5414
5415 In state BUSY this request will be queued. Request won't
5416 be allowed in any other state.
5417
5418
5419 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5420 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5421
5422 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5423 response of the TDLS Link Establish request received
5424 from the device
5425
5426 pUserData: user data will be passed back with the
5427 callback
5428
5429 @see
5430 @return Result of the function call
5431*/
5432WDI_Status
5433WDI_SetTDLSLinkEstablishReq
5434(
5435 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5436 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5437 void* pUserData
5438)
5439{
5440 WDI_EventInfoType wdiEventData;
5441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5442
5443 /*------------------------------------------------------------------------
5444 Sanity Check
5445 ------------------------------------------------------------------------*/
5446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5447 {
5448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5449 "WDI API call before module is initialized - Fail request");
5450
5451 return WDI_STATUS_E_NOT_ALLOWED;
5452 }
5453
5454 /*------------------------------------------------------------------------
5455 Fill in Event data and post to the Main FSM
5456 ------------------------------------------------------------------------*/
5457 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5458 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5459 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5460 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5461 wdiEventData.pUserData = pUserData;
5462
5463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5464
5465}/*WDI_SetTDLSLinkEstablishReq*/
5466#endif
5467
Jeff Johnson295189b2012-06-20 16:38:30 -07005468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005469 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 UMAC wanted to add STA self while opening any new session
5471 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005472 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005473
5474
Jeff Johnsone7245742012-09-05 17:12:55 -07005475 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 callback
5480
5481 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005482 @return Result of the function call
5483*/
5484WDI_Status
5485WDI_AddSTASelfReq
5486(
5487 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5488 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
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_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005510 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5511 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5512 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 wdiEventData.pUserData = pUserData;
5514
5515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5516
5517}/*WDI_AddSTASelfReq*/
5518
5519
Jeff Johnsone7245742012-09-05 17:12:55 -07005520#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005521/**
5522 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5523 the device of a successful add TSpec negotiation. HW
5524 needs to receive the TSpec Info from the UMAC in order
5525 to configure properly the QoS data traffic. Upon the
5526 call of this API the WLAN DAL will pack and send a HAL
5527 Add TS request message to the lower RIVA sub-system if
5528 DAL is in state STARTED.
5529
5530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005532
5533 WDI_PostAssocReq must have been called.
5534
5535 @param wdiAddTsReqParams: the add TS parameters as specified by
5536 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 wdiAddTsRspCb: callback for passing back the response of
5539 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005540
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 callback
5543
Jeff Johnson295189b2012-06-20 16:38:30 -07005544 @see WDI_PostAssocReq
5545 @return Result of the function call
5546*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005547WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005548WDI_AggrAddTSReq
5549(
5550 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5551 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5552 void* pUserData
5553)
5554{
5555 WDI_EventInfoType wdiEventData;
5556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5557
5558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 ------------------------------------------------------------------------*/
5561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5562 {
5563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5564 "WDI API call before module is initialized - Fail request");
5565
Jeff Johnsone7245742012-09-05 17:12:55 -07005566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 }
5568
5569 /*------------------------------------------------------------------------
5570 Fill in Event data and post to the Main FSM
5571 ------------------------------------------------------------------------*/
5572 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005573 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5574 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5575 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005576 wdiEventData.pUserData = pUserData;
5577
5578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5579
5580}/*WDI_AggrAddTSReq*/
5581
5582#endif /* WLAN_FEATURE_VOWIFI_11R */
5583
Jeff Johnson295189b2012-06-20 16:38:30 -07005584/**
5585 @brief WDI_FTMCommandReq
5586 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005587
5588 @param ftmCommandReq: FTM Command Body
5589 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005590 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005591
Jeff Johnson295189b2012-06-20 16:38:30 -07005592 @see
5593 @return Result of the function call
5594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005596WDI_FTMCommandReq
5597(
5598 WDI_FTMCommandReqType *ftmCommandReq,
5599 WDI_FTMCommandRspCb ftmCommandRspCb,
5600 void *pUserData
5601)
5602{
5603 WDI_EventInfoType wdiEventData;
5604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5605
5606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 ------------------------------------------------------------------------*/
5609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5610 {
5611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5612 "WDI API call before module is initialized - Fail request");
5613
Jeff Johnsone7245742012-09-05 17:12:55 -07005614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005615 }
5616
5617 /*------------------------------------------------------------------------
5618 Fill in Event data and post to the Main FSM
5619 ------------------------------------------------------------------------*/
5620 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5621 wdiEventData.pEventData = (void *)ftmCommandReq;
5622 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5623 wdiEventData.pCBfnc = ftmCommandRspCb;
5624 wdiEventData.pUserData = pUserData;
5625
5626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5627}
Jeff Johnson295189b2012-06-20 16:38:30 -07005628/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005629 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005630
5631 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005632 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005633
5634
5635 @param pwdiResumeReqParams: as specified by
5636 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005637
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 wdiResumeReqRspCb: callback for passing back the response of
5639 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005640
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 callback
5643
5644 @see
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_HostResumeReq
5649(
5650 WDI_ResumeParamsType* pwdiResumeReqParams,
5651 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
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_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005673 wdiEventData.pEventData = pwdiResumeReqParams;
5674 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5675 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiEventData.pUserData = pUserData;
5677
5678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5679
5680}/*WDI_HostResumeReq*/
5681
5682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005683 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005684
5685 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005686 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005687
5688
5689 @param pwdiDelStaSelfReqParams: as specified by
5690 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005691
Jeff Johnson295189b2012-06-20 16:38:30 -07005692 wdiDelStaSelfRspCb: callback for passing back the response of
5693 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005694
Jeff Johnson295189b2012-06-20 16:38:30 -07005695 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 callback
5697
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 @see WDI_PostAssocReq
5699 @return Result of the function call
5700*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005701WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005702WDI_DelSTASelfReq
5703(
5704 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5705 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5706 void* pUserData
5707)
5708{
5709 WDI_EventInfoType wdiEventData;
5710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5711
5712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005713 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 ------------------------------------------------------------------------*/
5715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5716 {
5717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5718 "WDI API call before module is initialized - Fail request");
5719
Jeff Johnsone7245742012-09-05 17:12:55 -07005720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 }
5722
5723 /*------------------------------------------------------------------------
5724 Fill in Event data and post to the Main FSM
5725 ------------------------------------------------------------------------*/
5726 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5728 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5729 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 wdiEventData.pUserData = pUserData;
5731
5732 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5733
5734}/*WDI_AggrAddTSReq*/
5735
5736/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005737 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5738 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 Upon the call of this API the WLAN DAL will pack
5740 and send a HAL Set Tx Per Tracking request message to the
5741 lower RIVA sub-system if DAL is in state STARTED.
5742
5743 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005745
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 pwdiSetTxPerTrackingRspCb: callback for passing back the
5750 response of the set Tx PER Tracking configurations operation received
5751 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005752
Jeff Johnson295189b2012-06-20 16:38:30 -07005753 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005754 callback
5755
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 @return Result of the function call
5757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005759WDI_SetTxPerTrackingReq
5760(
5761 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5762 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5763 void* pUserData
5764)
5765{
5766 WDI_EventInfoType wdiEventData;
5767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5768
5769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005771 ------------------------------------------------------------------------*/
5772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5773 {
5774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5775 "WDI API call before module is initialized - Fail request");
5776
Jeff Johnsone7245742012-09-05 17:12:55 -07005777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005778 }
5779
5780 /*------------------------------------------------------------------------
5781 Fill in Event data and post to the Main FSM
5782 ------------------------------------------------------------------------*/
5783 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005784 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005787 wdiEventData.pUserData = pUserData;
5788
5789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5790
5791}/*WDI_SetTxPerTrackingReq*/
5792
5793/**
5794 @brief WDI_SetTmLevelReq
5795 If HW Thermal condition changed, driver should react based on new
5796 HW thermal condition.
5797
5798 @param pwdiSetTmLevelReq: New thermal condition information
5799
5800 pwdiSetTmLevelRspCb: callback
5801
5802 usrData: user data will be passed back with the
5803 callback
5804
5805 @return Result of the function call
5806*/
5807WDI_Status
5808WDI_SetTmLevelReq
5809(
5810 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5811 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5812 void *usrData
5813)
5814{
5815 WDI_EventInfoType wdiEventData;
5816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5817
5818 /*------------------------------------------------------------------------
5819 Sanity Check
5820 ------------------------------------------------------------------------*/
5821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5822 {
5823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5824 "WDI API call before module is initialized - Fail request");
5825
5826 return WDI_STATUS_E_NOT_ALLOWED;
5827 }
5828
5829 /*------------------------------------------------------------------------
5830 Fill in Event data and post to the Main FSM
5831 ------------------------------------------------------------------------*/
5832 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5833 wdiEventData.pEventData = pwdiSetTmLevelReq;
5834 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5835 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5836 wdiEventData.pUserData = usrData;
5837
5838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5839}
5840
5841/**
5842 @brief WDI_HostSuspendInd
5843
5844 Suspend Indication from the upper layer will be sent
5845 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005846
Jeff Johnson295189b2012-06-20 16:38:30 -07005847 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005848
5849 @see
5850
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 @return Status of the request
5852*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005853WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005854WDI_HostSuspendInd
5855(
5856 WDI_SuspendParamsType* pwdiSuspendIndParams
5857)
5858{
5859
5860 WDI_EventInfoType wdiEventData;
5861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5862
5863 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005864 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 ------------------------------------------------------------------------*/
5866 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5867 {
5868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5869 "WDI API call before module is initialized - Fail request");
5870
Jeff Johnsone7245742012-09-05 17:12:55 -07005871 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 }
5873
5874 /*------------------------------------------------------------------------
5875 Fill in Event data and post to the Main FSM
5876 ------------------------------------------------------------------------*/
5877 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 wdiEventData.pEventData = pwdiSuspendIndParams;
5879 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5880 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 wdiEventData.pUserData = NULL;
5882
5883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5884
5885}/*WDI_HostSuspendInd*/
5886
5887/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005888 @brief WDI_TrafficStatsInd
5889 Traffic Stats from the upper layer will be sent
5890 down to HAL
5891
5892 @param WDI_TrafficStatsIndType
5893
5894 @see
5895
5896 @return Status of the request
5897*/
5898WDI_Status
5899WDI_TrafficStatsInd
5900(
5901 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5902)
5903{
5904
5905 WDI_EventInfoType wdiEventData;
5906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5907
5908 /*------------------------------------------------------------------------
5909 Sanity Check
5910 ------------------------------------------------------------------------*/
5911 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5912 {
5913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5914 "WDI API call before module is initialized - Fail request");
5915
5916 return WDI_STATUS_E_NOT_ALLOWED;
5917 }
5918
5919 /*------------------------------------------------------------------------
5920 Fill in Event data and post to the Main FSM
5921 ------------------------------------------------------------------------*/
5922 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5923 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5924 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5925 wdiEventData.pCBfnc = NULL;
5926 wdiEventData.pUserData = NULL;
5927
5928 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5929
5930}/*WDI_TrafficStatsInd*/
5931
Chet Lanctota96bb432013-03-18 10:26:30 -07005932#ifdef WLAN_FEATURE_11W
5933/**
5934 @brief WDI_ExcludeUnencryptedInd
5935 Register with HAL to receive/drop unencrypted frames
5936
5937 @param WDI_ExcludeUnencryptIndType
5938
5939 @see
5940
5941 @return Status of the request
5942*/
5943WDI_Status
5944WDI_ExcludeUnencryptedInd
5945(
5946 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5947)
5948{
5949
5950 WDI_EventInfoType wdiEventData;
5951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5952
5953 /*------------------------------------------------------------------------
5954 Sanity Check
5955 ------------------------------------------------------------------------*/
5956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5957 {
5958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5959 "WDI API call before module is initialized - Fail request");
5960
5961 return WDI_STATUS_E_NOT_ALLOWED;
5962 }
5963
5964 /*------------------------------------------------------------------------
5965 Fill in Event data and post to the Main FSM
5966 ------------------------------------------------------------------------*/
5967 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5968 wdiEventData.pEventData = pWdiExcUnencParams;
5969 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5970 wdiEventData.pCBfnc = NULL;
5971 wdiEventData.pUserData = NULL;
5972
5973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5974
5975}/*WDI_TrafficStatsInd*/
5976#endif
5977
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005978/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005979 @brief WDI_HALDumpCmdReq
5980 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005981
5982 @param halDumpCmdReqParams: Hal Dump Command Body
5983 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005984 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005985
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 @see
5987 @return Result of the function call
5988*/
5989WDI_Status WDI_HALDumpCmdReq
5990(
5991 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5992 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5993 void *pUserData
5994)
5995{
5996 WDI_EventInfoType wdiEventData;
5997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5998
5999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 ------------------------------------------------------------------------*/
6002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6003 {
6004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6005 "WDI API call before module is initialized - Fail request");
6006
Jeff Johnsone7245742012-09-05 17:12:55 -07006007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 }
6009
6010 /*------------------------------------------------------------------------
6011 Fill in Event data and post to the Main FSM
6012 ------------------------------------------------------------------------*/
6013 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6014 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6015 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6016 wdiEventData.pCBfnc = halDumpCmdRspCb;
6017 wdiEventData.pUserData = pUserData;
6018
6019 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6020}
6021
Jeff Johnsone7245742012-09-05 17:12:55 -07006022/*============================================================================
6023
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006025
Jeff Johnson295189b2012-06-20 16:38:30 -07006026 ============================================================================*/
6027
6028/**
6029 @brief Main FSM Start function for all states except BUSY
6030
Jeff Johnsone7245742012-09-05 17:12:55 -07006031
6032 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 wdiEV: event posted to the main DAL FSM
6034 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006035 structure
6036
Jeff Johnson295189b2012-06-20 16:38:30 -07006037 @see
6038 @return Result of the function call
6039*/
6040WDI_Status
6041WDI_PostMainEvent
6042(
Jeff Johnsone7245742012-09-05 17:12:55 -07006043 WDI_ControlBlockType* pWDICtx,
6044 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006046
Jeff Johnson295189b2012-06-20 16:38:30 -07006047)
6048{
Jeff Johnsone7245742012-09-05 17:12:55 -07006049 WDI_Status wdiStatus;
6050 WDI_MainFuncType pfnWDIMainEvHdlr;
6051 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6053
6054 /*-------------------------------------------------------------------------
6055 Sanity check
6056 -------------------------------------------------------------------------*/
6057 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6058 ( wdiEV >= WDI_MAX_EVENT ))
6059 {
6060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6061 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6062 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006063 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 }
6065
6066 /*Access to the global state must be locked */
6067 wpalMutexAcquire(&pWDICtx->wptMutex);
6068
6069 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006070 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006071
6072 wdiOldState = pWDICtx->uGlobalState;
6073
6074 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006075 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6076 response comes from CCPU for the request sent by host:
6077 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 -07006078 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 -07006079 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 CCPU:
6081 don't change the state */
6082 if ( WDI_RESPONSE_EVENT != wdiEV)
6083 {
6084 /*Transition to BUSY State - the request is now being processed by the FSM,
6085 if the request fails we shall transition back to the old state, if not
6086 the request will manage its own state transition*/
6087 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6088 }
6089 /* If the state function associated with the EV is NULL it means that this
6090 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006091 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 {
6093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006094 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006095 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098 else
6099 {
6100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006103 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006104 }
6105
6106 /* If a request handles itself well it will end up in a success or in a
6107 pending
6108 Success - means that the request was processed and the proper state
6109 transition already occurred or will occur when the resp is received
6110 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006111
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 Pending - means the request could not be processed at this moment in time
6113 because the FSM was already busy so no state transition or dequeueing
6114 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 Success for synchronous case means that the transition may occur and
6117 processing of pending requests may continue - so it should go through
6118 and restores the state and continue processing queued requests*/
6119 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6120 ( WDI_STATUS_PENDING != wdiStatus ))
6121 {
6122 if ( WDI_RESPONSE_EVENT != wdiEV)
6123 {
6124 /*The request has failed or could not be processed - transition back to
6125 the old state - check to see if anything was queued and try to execute
6126 The dequeue logic should post a message to a thread and return - no
6127 actual processing can occur */
6128 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6129 }
6130 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 }
6133
6134 /* we have completed processing the event */
6135 wpalMutexRelease(&pWDICtx->wptMutex);
6136
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006138
6139}/*WDI_PostMainEvent*/
6140
6141
6142/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006144--------------------------------------------------------------------------*/
6145/**
6146 @brief Main FSM Start function for all states except BUSY
6147
Jeff Johnsone7245742012-09-05 17:12:55 -07006148
6149 @param pWDICtx: pointer to the WLAN DAL context
6150 pEventData: pointer to the event information structure
6151
Jeff Johnson295189b2012-06-20 16:38:30 -07006152 @see
6153 @return Result of the function call
6154*/
6155WDI_Status
6156WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006157(
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 WDI_ControlBlockType* pWDICtx,
6159 WDI_EventInfoType* pEventData
6160)
6161{
6162
6163 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006165 ----------------------------------------------------------------------*/
6166 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6167 {
6168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006169 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 pWDICtx, pEventData);
6171 return WDI_STATUS_E_FAILURE;
6172 }
6173
6174 wpalMutexAcquire(&pWDICtx->wptMutex);
6175
6176 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006177 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 ----------------------------------------------------------------------*/
6179 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6180 {
6181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6182 "Control Transport not yet Open - queueing the request");
6183
6184 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006186
6187 wpalMutexRelease(&pWDICtx->wptMutex);
6188 return WDI_STATUS_PENDING;
6189 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 wpalMutexRelease(&pWDICtx->wptMutex);
6192
6193 /*Return Success*/
6194 return WDI_ProcessRequest( pWDICtx, pEventData );
6195
6196}/*WDI_MainStart*/
6197
6198/**
6199 @brief Main FSM Response function for state INIT
6200
Jeff Johnsone7245742012-09-05 17:12:55 -07006201
6202 @param pWDICtx: pointer to the WLAN DAL context
6203 pEventData: pointer to the event information structure
6204
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 @see
6206 @return Result of the function call
6207*/
6208WDI_Status
6209WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006210(
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 WDI_ControlBlockType* pWDICtx,
6212 WDI_EventInfoType* pEventData
6213)
6214{
6215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006218 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006219
6220 /*Return Success*/
6221 return WDI_STATUS_E_NOT_ALLOWED;
6222}/* WDI_MainRspInit */
6223
6224/**
6225 @brief Main FSM Close function for all states except BUSY
6226
Jeff Johnsone7245742012-09-05 17:12:55 -07006227
6228 @param pWDICtx: pointer to the WLAN DAL context
6229 pEventData: pointer to the event information structure
6230
Jeff Johnson295189b2012-06-20 16:38:30 -07006231 @see
6232 @return Result of the function call
6233*/
6234WDI_Status
6235WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006236(
Jeff Johnson295189b2012-06-20 16:38:30 -07006237 WDI_ControlBlockType* pWDICtx,
6238 WDI_EventInfoType* pEventData
6239)
6240{
6241
6242 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006243 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 ----------------------------------------------------------------------*/
6245 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6246 {
6247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006248 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 pWDICtx, pEventData);
6250 return WDI_STATUS_E_FAILURE;
6251 }
6252
6253 /*Return Success*/
6254 return WDI_ProcessRequest( pWDICtx, pEventData );
6255
6256}/*WDI_MainClose*/
6257/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006258 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006259--------------------------------------------------------------------------*/
6260/**
6261 @brief Main FSM Start function for state STARTED
6262
Jeff Johnsone7245742012-09-05 17:12:55 -07006263
6264 @param pWDICtx: pointer to the WLAN DAL context
6265 pEventData: pointer to the event information structure
6266
Jeff Johnson295189b2012-06-20 16:38:30 -07006267 @see
6268 @return Result of the function call
6269*/
6270WDI_Status
6271WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006272(
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 WDI_ControlBlockType* pWDICtx,
6274 WDI_EventInfoType* pEventData
6275)
6276{
6277 WDI_StartRspCb wdiStartRspCb = NULL;
6278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6279
6280 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006281 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 ----------------------------------------------------------------------*/
6283 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6284 {
6285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006286 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006287 pWDICtx, pEventData);
6288 return WDI_STATUS_E_FAILURE;
6289 }
6290
6291 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006292 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006293 ----------------------------------------------------------------------*/
6294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006296
6297 wpalMutexAcquire(&pWDICtx->wptMutex);
6298
6299 /*Transition back to started because the post function transitioned us to
6300 busy*/
6301 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6302
6303 /*Check to see if any request is pending*/
6304 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006305
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 wpalMutexRelease(&pWDICtx->wptMutex);
6307
6308 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 /*Notify UMAC*/
6312 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6313
6314 /*Return Success*/
6315 return WDI_STATUS_SUCCESS;
6316
6317}/*WDI_MainStartStarted*/
6318
6319/**
6320 @brief Main FSM Stop function for state STARTED
6321
Jeff Johnsone7245742012-09-05 17:12:55 -07006322
6323 @param pWDICtx: pointer to the WLAN DAL context
6324 pEventData: pointer to the event information structure
6325
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 @see
6327 @return Result of the function call
6328*/
6329WDI_Status
6330WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006331(
Jeff Johnson295189b2012-06-20 16:38:30 -07006332 WDI_ControlBlockType* pWDICtx,
6333 WDI_EventInfoType* pEventData
6334)
6335{
6336 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 ----------------------------------------------------------------------*/
6339 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6340 {
6341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006342 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006343 pWDICtx, pEventData);
6344 return WDI_STATUS_E_FAILURE;
6345 }
6346
6347 /*State at this point is BUSY - because we enter this state before posting
6348 an event to the FSM in order to prevent potential race conditions*/
6349
6350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6351 "Processing stop request in FSM");
6352
6353 /*Return Success*/
6354 return WDI_ProcessRequest( pWDICtx, pEventData );
6355
6356}/*WDI_MainStopStarted*/
6357/**
6358 @brief Main FSM Request function for state started
6359
Jeff Johnsone7245742012-09-05 17:12:55 -07006360
6361 @param pWDICtx: pointer to the WLAN DAL context
6362 pEventData: pointer to the event information structure
6363
Jeff Johnson295189b2012-06-20 16:38:30 -07006364 @see
6365 @return Result of the function call
6366*/
6367WDI_Status
6368WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006369(
Jeff Johnson295189b2012-06-20 16:38:30 -07006370 WDI_ControlBlockType* pWDICtx,
6371 WDI_EventInfoType* pEventData
6372)
6373{
6374
6375 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 ----------------------------------------------------------------------*/
6378 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6379 {
6380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006381 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006382 pWDICtx, pEventData);
6383 return WDI_STATUS_E_FAILURE;
6384 }
6385
6386 /*State at this point is BUSY - because we enter this state before posting
6387 an event to the FSM in order to prevent potential race conditions*/
6388
6389 /*Return Success*/
6390 return WDI_ProcessRequest( pWDICtx, pEventData );
6391
6392}/*WDI_MainReqStarted*/
6393
6394/**
6395 @brief Main FSM Response function for all states except INIT
6396
Jeff Johnsone7245742012-09-05 17:12:55 -07006397
6398 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006400
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 @see
6402 @return Result of the function call
6403*/
6404WDI_Status
6405WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006406(
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 WDI_ControlBlockType* pWDICtx,
6408 WDI_EventInfoType* pEventData
6409)
6410{
Jeff Johnsone7245742012-09-05 17:12:55 -07006411 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006412 wpt_boolean expectedResponse;
6413
6414 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 ----------------------------------------------------------------------*/
6417 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6418 {
6419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006420 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006421 pWDICtx, pEventData);
6422 return WDI_STATUS_E_FAILURE;
6423 }
6424
6425 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6426 {
6427 /* we received an expected response */
6428 expectedResponse = eWLAN_PAL_TRUE;
6429
6430 /*We expect that we will transition to started after this processing*/
6431 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6432
6433 /* we are no longer expecting a response */
6434 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6435 }
6436 else
6437 {
6438 /* we received an indication or unexpected response */
6439 expectedResponse = eWLAN_PAL_FALSE;
6440 /* for indications no need to update state from what it is right
6441 now, unless it explicitly does it in the indication handler (say
6442 for device failure ind) */
6443 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6444 }
6445
6446 /*Process the response and indication */
6447 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6448
6449 /*Lock the CB as we are about to do a state transition*/
6450 wpalMutexAcquire(&pWDICtx->wptMutex);
6451
6452 /*Transition to the expected state after the response processing
6453 - this should always be started state with the following exceptions:
6454 1. processing of a failed start response
6455 2. device failure detected while processing response
6456 3. stop response received*/
6457 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006458
Jeff Johnson295189b2012-06-20 16:38:30 -07006459 /*Dequeue request that may have been queued while we were waiting for the
6460 response */
6461 if ( expectedResponse )
6462 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 }
6465
6466 wpalMutexRelease(&pWDICtx->wptMutex);
6467
6468 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006470
6471}/*WDI_MainRsp*/
6472
6473/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006474 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006475--------------------------------------------------------------------------*/
6476/**
6477 @brief Main FSM Stop function for state STOPPED
6478
Jeff Johnsone7245742012-09-05 17:12:55 -07006479
6480 @param pWDICtx: pointer to the WLAN DAL context
6481 pEventData: pointer to the event information structure
6482
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 @see
6484 @return Result of the function call
6485*/
6486WDI_Status
6487WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006488(
Jeff Johnson295189b2012-06-20 16:38:30 -07006489 WDI_ControlBlockType* pWDICtx,
6490 WDI_EventInfoType* pEventData
6491)
6492{
6493 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006495 ----------------------------------------------------------------------*/
6496 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6497 {
6498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 pWDICtx, pEventData);
6501 return WDI_STATUS_E_FAILURE;
6502 }
6503
6504 /*We should normally not get a STOP request if we are already stopped
6505 since we should normally be stopped by the UMAC. However in some
6506 error situations we put ourselves in the stopped state without the
6507 UMAC knowing, so when we get a STOP request in this state we still
6508 process it since we need to clean up the underlying state */
6509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6510 "Processing stop request while stopped in FSM");
6511
6512 /*Return Success*/
6513 return WDI_ProcessRequest( pWDICtx, pEventData );
6514
6515}/*WDI_MainStopStopped*/
6516
6517/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006519--------------------------------------------------------------------------*/
6520/**
6521 @brief Main FSM Start function for state BUSY
6522
Jeff Johnsone7245742012-09-05 17:12:55 -07006523
6524 @param pWDICtx: pointer to the WLAN DAL context
6525 pEventData: pointer to the event information structure
6526
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 @see
6528 @return Result of the function call
6529*/
6530WDI_Status
6531WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006532(
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 WDI_ControlBlockType* pWDICtx,
6534 WDI_EventInfoType* pEventData
6535)
6536{
6537 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006538 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006539 ----------------------------------------------------------------------*/
6540 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6541 {
6542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 pWDICtx, pEventData);
6545 return WDI_STATUS_E_FAILURE;
6546 }
6547
6548 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006549 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 ----------------------------------------------------------------------*/
6551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6552 "WDI Busy state - queue start request");
6553
6554 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006555 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006556
6557 /*Return Success*/
6558 return WDI_STATUS_PENDING;
6559}/*WDI_MainStartBusy*/
6560
6561/**
6562 @brief Main FSM Stop function for state BUSY
6563
Jeff Johnsone7245742012-09-05 17:12:55 -07006564
6565 @param pWDICtx: pointer to the WLAN DAL context
6566 pEventData: pointer to the event information structure
6567
Jeff Johnson295189b2012-06-20 16:38:30 -07006568 @see
6569 @return Result of the function call
6570*/
6571WDI_Status
6572WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006573(
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 WDI_ControlBlockType* pWDICtx,
6575 WDI_EventInfoType* pEventData
6576)
6577{
6578 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 ----------------------------------------------------------------------*/
6581 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6582 {
6583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 pWDICtx, pEventData);
6586 return WDI_STATUS_E_FAILURE;
6587 }
6588
6589 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006590 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 ----------------------------------------------------------------------*/
6592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6593 "WDI Busy state - queue stop request");
6594
Jeff Johnsone7245742012-09-05 17:12:55 -07006595 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006596 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006597
Jeff Johnson295189b2012-06-20 16:38:30 -07006598}/*WDI_MainStopBusy*/
6599
6600/**
6601 @brief Main FSM Request function for state BUSY
6602
Jeff Johnsone7245742012-09-05 17:12:55 -07006603
6604 @param pWDICtx: pointer to the WLAN DAL context
6605 pEventData: pointer to the event information structure
6606
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 @see
6608 @return Result of the function call
6609*/
6610WDI_Status
6611WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006612(
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 WDI_ControlBlockType* pWDICtx,
6614 WDI_EventInfoType* pEventData
6615)
6616{
6617 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006618 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 ----------------------------------------------------------------------*/
6620 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6621 {
6622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006624 pWDICtx, pEventData);
6625 return WDI_STATUS_E_FAILURE;
6626 }
6627
6628 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006629 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 ----------------------------------------------------------------------*/
6631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6632 "WDI Busy state - queue request %d because waiting for response %d",
6633 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6634
Jeff Johnsone7245742012-09-05 17:12:55 -07006635 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006636 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006637
Jeff Johnson295189b2012-06-20 16:38:30 -07006638}/*WDI_MainReqBusy*/
6639/**
6640 @brief Main FSM Close function for state BUSY
6641
Jeff Johnsone7245742012-09-05 17:12:55 -07006642
6643 @param pWDICtx: pointer to the WLAN DAL context
6644 pEventData: pointer to the event information structure
6645
Jeff Johnson295189b2012-06-20 16:38:30 -07006646 @see
6647 @return Result of the function call
6648*/
6649WDI_Status
6650WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006651(
Jeff Johnson295189b2012-06-20 16:38:30 -07006652 WDI_ControlBlockType* pWDICtx,
6653 WDI_EventInfoType* pEventData
6654)
6655{
6656 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 ----------------------------------------------------------------------*/
6659 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6660 {
6661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006662 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 pWDICtx, pEventData);
6664 return WDI_STATUS_E_FAILURE;
6665 }
6666
6667 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 ----------------------------------------------------------------------*/
6670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6671 "WDI Busy state - queue close request");
6672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006675
Jeff Johnson295189b2012-06-20 16:38:30 -07006676}/*WDI_MainCloseBusy*/
6677
6678/**
6679 @brief Main FSM Shutdown function for INIT & STARTED states
6680
6681
6682 @param pWDICtx: pointer to the WLAN DAL context
6683 pEventData: pointer to the event information structure
6684
6685 @see
6686 @return Result of the function call
6687*/
6688WDI_Status
6689WDI_MainShutdown
6690(
6691 WDI_ControlBlockType* pWDICtx,
6692 WDI_EventInfoType* pEventData
6693)
6694{
6695 /*--------------------------------------------------------------------
6696 Sanity Check
6697 ----------------------------------------------------------------------*/
6698 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6699 {
6700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6701 "Invalid parameters on Main Start %x %x",
6702 pWDICtx, pEventData);
6703 return WDI_STATUS_E_FAILURE;
6704 }
6705
6706 /*State at this point is BUSY - because we enter this state before posting
6707 an event to the FSM in order to prevent potential race conditions*/
6708
6709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6710 "Processing shutdown request in FSM");
6711
6712 /*Return Success*/
6713 return WDI_ProcessRequest( pWDICtx, pEventData );
6714
6715}/*WDI_MainShutdown*/
6716
6717/**
6718 @brief Main FSM Shutdown function for BUSY state
6719
6720
6721 @param pWDICtx: pointer to the WLAN DAL context
6722 pEventData: pointer to the event information structure
6723
6724 @see
6725 @return Result of the function call
6726*/
6727WDI_Status
6728WDI_MainShutdownBusy
6729(
6730 WDI_ControlBlockType* pWDICtx,
6731 WDI_EventInfoType* pEventData
6732)
6733{
6734 /*--------------------------------------------------------------------
6735 Sanity Check
6736 ----------------------------------------------------------------------*/
6737 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6738 {
6739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6740 "Invalid parameters on Main Start %x %x",
6741 pWDICtx, pEventData);
6742 return WDI_STATUS_E_FAILURE;
6743 }
6744
6745 /* If you are waiting for a HAL response at this stage, you are not
6746 * going to get it. Riva is already shutdown/crashed.
6747 */
6748 wpalTimerStop(&gWDICb.wptResponseTimer);
6749
6750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6751 "Processing shutdown request in FSM: Busy state ");
6752
6753 return WDI_ProcessRequest( pWDICtx, pEventData );
6754
6755}/*WDI_MainShutdownBusy*/
6756
6757
Jeff Johnsone7245742012-09-05 17:12:55 -07006758/*=======================================================================
6759
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006761
Jeff Johnson295189b2012-06-20 16:38:30 -07006762*=======================================================================*/
6763
6764/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006765 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006766========================================================================*/
6767/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006770
6771 @param pWDICtx: pointer to the WLAN DAL context
6772 pEventData: pointer to the event information structure
6773
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 @see
6775 @return Result of the function call
6776*/
6777WDI_Status
6778WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006779(
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 WDI_ControlBlockType* pWDICtx,
6781 WDI_EventInfoType* pEventData
6782)
6783{
6784 WDI_StartReqParamsType* pwdiStartParams = NULL;
6785 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006786 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 wpt_uint16 usDataOffset = 0;
6788 wpt_uint16 usSendSize = 0;
6789
Jeff Johnsone7245742012-09-05 17:12:55 -07006790 tHalMacStartReqMsg halStartReq;
6791 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6793
6794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 -------------------------------------------------------------------------*/
6797 if (( NULL == pEventData ) ||
6798 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6799 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6800 {
6801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006805 }
6806
6807 /*-----------------------------------------------------------------------
6808 Get message buffer
6809 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006810 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 pwdiStartParams->usConfigBufferLen;
6812
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 usLen,
6815 &pSendBuffer, &usDataOffset, &usSendSize))||
6816 ( usSendSize < (usDataOffset + usLen )))
6817 {
6818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6819 "Unable to get send buffer in start req %x %x %x",
6820 pEventData, pwdiStartParams, wdiStartRspCb);
6821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 }
6824
6825 /*-----------------------------------------------------------------------
6826 Fill in the message
6827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 halStartReq.startReqParams.driverType =
6829 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006830
Jeff Johnsone7245742012-09-05 17:12:55 -07006831 halStartReq.startReqParams.uConfigBufferLen =
6832 pwdiStartParams->usConfigBufferLen;
6833 wpalMemoryCopy( pSendBuffer+usDataOffset,
6834 &halStartReq.startReqParams,
6835 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006836
Jeff Johnsone7245742012-09-05 17:12:55 -07006837 usDataOffset += sizeof(halStartReq.startReqParams);
6838 wpalMemoryCopy( pSendBuffer+usDataOffset,
6839 pwdiStartParams->pConfigBuffer,
6840 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006841
6842 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006844
6845 /*Save Low Level Ind CB and associated user data - it will be used further
6846 on when an indication is coming from the lower MAC*/
6847 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006849
Jeff Johnsone7245742012-09-05 17:12:55 -07006850 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6856
Jeff Johnsone7245742012-09-05 17:12:55 -07006857
Jeff Johnson295189b2012-06-20 16:38:30 -07006858}/*WDI_ProcessStartReq*/
6859
6860/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006861 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006863
6864 @param pWDICtx: pointer to the WLAN DAL context
6865 pEventData: pointer to the event information structure
6866
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 @see
6868 @return Result of the function call
6869*/
6870WDI_Status
6871WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006872(
Jeff Johnson295189b2012-06-20 16:38:30 -07006873 WDI_ControlBlockType* pWDICtx,
6874 WDI_EventInfoType* pEventData
6875)
6876{
6877 WDI_StopReqParamsType* pwdiStopParams = NULL;
6878 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 wpt_uint16 usDataOffset = 0;
6881 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006882 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006883 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6885
6886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 -------------------------------------------------------------------------*/
6889 if (( NULL == pEventData ) ||
6890 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6891 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6892 {
6893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006896 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 }
6898
6899 /*-----------------------------------------------------------------------
6900 Get message buffer
6901 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 sizeof(halStopReq.stopReqParams),
6904 &pSendBuffer, &usDataOffset, &usSendSize))||
6905 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6906 {
6907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6908 "Unable to get send buffer in stop req %x %x %x",
6909 pEventData, pwdiStopParams, wdiStopRspCb);
6910 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006911 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006912 }
6913
6914 /*-----------------------------------------------------------------------
6915 Fill in the message
6916 -----------------------------------------------------------------------*/
6917 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6918 pwdiStopParams->wdiStopReason);
6919
Jeff Johnsone7245742012-09-05 17:12:55 -07006920 wpalMemoryCopy( pSendBuffer+usDataOffset,
6921 &halStopReq.stopReqParams,
6922 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006923
6924 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006926
6927 /*! TO DO: stop the data services */
6928 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6929 {
6930 /*Stop the STA Table !UT- check this logic again
6931 It is safer to do it here than on the response - because a stop is imminent*/
6932 WDI_STATableStop(pWDICtx);
6933
6934 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006935 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6936 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 {
6938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6939 "WDI Init failed to reset power state event");
6940
Jeff Johnsone7245742012-09-05 17:12:55 -07006941 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006942 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 }
6944 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006945 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6946 if( eWLAN_PAL_STATUS_SUCCESS != status )
6947 {
6948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6949 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6950 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006951 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006952 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006956 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6957 WDI_SET_POWER_STATE_TIMEOUT);
6958 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 {
6960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6961 "WDI Init failed to wait on an event");
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006964 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 }
6966 }
6967
6968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6973
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006974fail:
6975 // Release the message buffer so we don't leak
6976 wpalMemoryFree(pSendBuffer);
6977
6978failRequest:
6979 //WDA should have failure check to avoid the memory leak
6980 return WDI_STATUS_E_FAILURE;
6981
Jeff Johnson295189b2012-06-20 16:38:30 -07006982}/*WDI_ProcessStopReq*/
6983
6984/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006987
6988 @param pWDICtx: pointer to the WLAN DAL context
6989 pEventData: pointer to the event information structure
6990
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 @see
6992 @return Result of the function call
6993*/
6994WDI_Status
6995WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006996(
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 WDI_ControlBlockType* pWDICtx,
6998 WDI_EventInfoType* pEventData
6999)
7000{
Jeff Johnsone7245742012-09-05 17:12:55 -07007001 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7003
7004 /*Lock control block for cleanup*/
7005 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007006
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 /*Clear all pending request*/
7008 WDI_ClearPendingRequests(pWDICtx);
7009
7010 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007012
7013 /* Close Data transport*/
7014 /* FTM mode does not open Data Path */
7015 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7016 {
7017 WDTS_Close(pWDICtx);
7018 }
7019
7020 /*Close the STA Table !UT- check this logic again*/
7021 WDI_STATableClose(pWDICtx);
7022
7023 /*close the PAL */
7024 wptStatus = wpalClose(pWDICtx->pPALContext);
7025 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7026 {
7027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7028 "Failed to wpal Close %d", wptStatus);
7029 WDI_ASSERT(0);
7030 }
7031
7032 /*Transition back to init state*/
7033 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7034
7035 wpalMutexRelease(&pWDICtx->wptMutex);
7036
7037 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007038 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007039
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007041}/*WDI_ProcessCloseReq*/
7042
7043
7044/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007045 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007046===========================================================================*/
7047
7048/**
7049 @brief Process Init Scan Request function (called when Main FSM
7050 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007051
7052 @param pWDICtx: pointer to the WLAN DAL context
7053 pEventData: pointer to the event information structure
7054
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 @see
7056 @return Result of the function call
7057*/
7058WDI_Status
7059WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007060(
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 WDI_ControlBlockType* pWDICtx,
7062 WDI_EventInfoType* pEventData
7063)
7064{
7065 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7066 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007068 wpt_uint16 usDataOffset = 0;
7069 wpt_uint16 usSendSize = 0;
7070 wpt_uint8 i = 0;
7071
7072 tHalInitScanReqMsg halInitScanReqMsg;
7073
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 * It shold be removed once host and riva changes are in sync*/
7076 tHalInitScanConReqMsg halInitScanConReqMsg;
7077
7078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7079
7080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 -------------------------------------------------------------------------*/
7083 if (( NULL == pEventData ) ||
7084 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7085 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7086 {
7087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 }
7092
7093#if 0
7094 wpalMutexAcquire(&pWDICtx->wptMutex);
7095 /*-----------------------------------------------------------------------
7096 Check to see if SCAN is already in progress - if so reject the req
7097 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007099 -----------------------------------------------------------------------*/
7100 if ( pWDICtx->bScanInProgress )
7101 {
7102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7103 "Scan is already in progress - subsequent scan is not allowed"
7104 " until the first scan completes");
7105
7106 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007107 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 }
7109
Jeff Johnsone7245742012-09-05 17:12:55 -07007110 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7111 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007112
7113 wpalMutexRelease(&pWDICtx->wptMutex);
7114#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007115 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 * It shold be removed once host and riva changes are in sync*/
7119 /*-----------------------------------------------------------------------
7120 Get message buffer
7121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007122 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 sizeof(halInitScanConReqMsg.initScanParams),
7124 &pSendBuffer, &usDataOffset, &usSendSize))||
7125 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7126 {
7127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7128 "Unable to get send buffer in init scan req %x %x %x",
7129 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 }
7133
7134
7135 /*-----------------------------------------------------------------------
7136 Fill in the message
7137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007139 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7140
7141 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7142 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7143
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7150
7151 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7152 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7153
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7155 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007156
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7159
7160 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7161 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007162 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7164 }
7165
Jeff Johnsone7245742012-09-05 17:12:55 -07007166 wpalMemoryCopy( pSendBuffer+usDataOffset,
7167 &halInitScanConReqMsg.initScanParams,
7168 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 }
7170 else
7171 {
7172 /*-----------------------------------------------------------------------
7173 Get message buffer
7174 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 sizeof(halInitScanReqMsg.initScanParams),
7177 &pSendBuffer, &usDataOffset, &usSendSize))||
7178 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7179 {
7180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7181 "Unable to get send buffer in init scan req %x %x %x",
7182 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 }
7186
7187
7188 /*-----------------------------------------------------------------------
7189 Fill in the message
7190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007191 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7193
7194 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7195 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7196
Jeff Johnsone7245742012-09-05 17:12:55 -07007197 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007201 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7203
7204 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7205 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7206
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7209
7210 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7211 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007213 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7214 }
7215
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 wpalMemoryCopy( pSendBuffer+usDataOffset,
7217 &halInitScanReqMsg.initScanParams,
7218 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 }
7220
7221 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007223
7224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7229
7230}/*WDI_ProcessInitScanReq*/
7231
7232/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007235
7236 @param pWDICtx: pointer to the WLAN DAL context
7237 pEventData: pointer to the event information structure
7238
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 @see
7240 @return Result of the function call
7241*/
7242WDI_Status
7243WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007244(
Jeff Johnson295189b2012-06-20 16:38:30 -07007245 WDI_ControlBlockType* pWDICtx,
7246 WDI_EventInfoType* pEventData
7247)
7248{
7249 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7250 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 wpt_uint16 usDataOffset = 0;
7253 wpt_uint16 usSendSize = 0;
7254
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7257
7258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 -------------------------------------------------------------------------*/
7261 if (( NULL == pEventData ) ||
7262 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7263 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7264 {
7265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 }
7270
7271#if 0
7272 wpalMutexAcquire(&pWDICtx->wptMutex);
7273 /*-----------------------------------------------------------------------
7274 Check to see if SCAN is already in progress - start scan is only
7275 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7280 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7281 {
7282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7283 "Scan start not allowed in this state %d %d",
7284 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007285
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 }
7289
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007291
7292 wpalMutexRelease(&pWDICtx->wptMutex);
7293#endif
7294
7295 /*-----------------------------------------------------------------------
7296 Get message buffer
7297 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 sizeof(halStartScanReqMsg.startScanParams),
7300 &pSendBuffer, &usDataOffset, &usSendSize))||
7301 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7302 {
7303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7304 "Unable to get send buffer in start scan req %x %x %x",
7305 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 }
7309
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 wpalMemoryCopy( pSendBuffer+usDataOffset,
7313 &halStartScanReqMsg.startScanParams,
7314 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007315
7316 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318
7319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7324}/*WDI_ProcessStartScanReq*/
7325
7326
7327/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007330
7331 @param pWDICtx: pointer to the WLAN DAL context
7332 pEventData: pointer to the event information structure
7333
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 @see
7335 @return Result of the function call
7336*/
7337WDI_Status
7338WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007339(
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 WDI_ControlBlockType* pWDICtx,
7341 WDI_EventInfoType* pEventData
7342)
7343{
7344 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7345 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 wpt_uint16 usDataOffset = 0;
7348 wpt_uint16 usSendSize = 0;
7349
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7352
7353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 -------------------------------------------------------------------------*/
7356 if (( NULL == pEventData ) ||
7357 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7358 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7359 {
7360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 }
7365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7367 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 * forwarded to HAL and result in hang*/
7369#if 0
7370 wpalMutexAcquire(&pWDICtx->wptMutex);
7371 /*-----------------------------------------------------------------------
7372 Check to see if SCAN is already in progress - end scan is only
7373 allowed when a scan is ongoing and the state of the scan procedure
7374 is started
7375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7378 {
7379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7380 "End start not allowed in this state %d %d",
7381 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007382
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 }
7386
Jeff Johnsone7245742012-09-05 17:12:55 -07007387 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007388
7389 wpalMutexRelease(&pWDICtx->wptMutex);
7390#endif
7391
7392 /*-----------------------------------------------------------------------
7393 Get message buffer
7394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 sizeof(halEndScanReqMsg.endScanParams),
7397 &pSendBuffer, &usDataOffset, &usSendSize))||
7398 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7399 {
7400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7401 "Unable to get send buffer in start scan req %x %x %x",
7402 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 }
7406
7407 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7408
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 wpalMemoryCopy( pSendBuffer+usDataOffset,
7410 &halEndScanReqMsg.endScanParams,
7411 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007412
7413 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007414 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007415
7416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7421}/*WDI_ProcessEndScanReq*/
7422
7423
7424/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007427
7428 @param pWDICtx: pointer to the WLAN DAL context
7429 pEventData: pointer to the event information structure
7430
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 @see
7432 @return Result of the function call
7433*/
7434WDI_Status
7435WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007436(
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 WDI_ControlBlockType* pWDICtx,
7438 WDI_EventInfoType* pEventData
7439)
7440{
7441 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7442 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 wpt_uint16 usDataOffset = 0;
7445 wpt_uint16 usSendSize = 0;
7446 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007447 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7450
7451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 -------------------------------------------------------------------------*/
7454 if (( NULL == pEventData ) ||
7455 ( NULL == pEventData->pEventData) ||
7456 ( NULL == pEventData->pCBfnc))
7457 {
7458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 }
7463
7464 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7465 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7467 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 * forwarded to HAL and result in hang*/
7469#if 0
7470 wpalMutexAcquire(&pWDICtx->wptMutex);
7471 /*-----------------------------------------------------------------------
7472 Check to see if SCAN is already in progress
7473 Finish scan gets invoked any scan states. ie. abort scan
7474 It should be allowed in any states.
7475 -----------------------------------------------------------------------*/
7476 if ( !pWDICtx->bScanInProgress )
7477 {
7478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7479 "Finish start not allowed in this state %d",
7480 pWDICtx->bScanInProgress );
7481
7482 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007483 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 }
7485
7486 /*-----------------------------------------------------------------------
7487 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7491 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 wpalMutexRelease(&pWDICtx->wptMutex);
7493#endif
7494
7495 if ( pWDICtx->bInBmps )
7496 {
7497 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007498 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7499 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7500 {
7501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7502 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7503 WDI_ASSERT(0);
7504 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 }
7506
7507 /*-----------------------------------------------------------------------
7508 Get message buffer
7509 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 sizeof(halFinishScanReqMsg.finishScanParams),
7512 &pSendBuffer, &usDataOffset, &usSendSize))||
7513 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7514 {
7515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7516 "Unable to get send buffer in start scan req %x %x %x",
7517 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 }
7521
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7524
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7527
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7530
7531 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7532 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7533
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7540
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7543
7544 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7545 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7548 }
7549
7550 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7551 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7552
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 wpalMemoryCopy( pSendBuffer+usDataOffset,
7554 &halFinishScanReqMsg.finishScanParams,
7555 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007556
7557 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007559
7560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7565}/*WDI_ProcessFinishScanReq*/
7566
7567
7568/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007570==========================================================================*/
7571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 @brief Process BSS Join for a given Session
7573
7574 @param pWDICtx: pointer to the WLAN DAL context
7575 pEventData: pointer to the event information structure
7576
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 @see
7578 @return Result of the function call
7579*/
7580WDI_Status
7581WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007582(
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 WDI_ControlBlockType* pWDICtx,
7584 WDI_JoinReqParamsType* pwdiJoinParams,
7585 WDI_JoinRspCb wdiJoinRspCb,
7586 void* pUserData
7587)
7588{
7589 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 wpt_uint16 usDataOffset = 0;
7592 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007594
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7597
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007598 wpalMutexAcquire(&pWDICtx->wptMutex);
7599
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 /*------------------------------------------------------------------------
7601 Check to see if we have any session with this BSSID already stored, we
7602 should not
7603 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7605 pwdiJoinParams->wdiReqInfo.macBSSID,
7606 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007607
7608 if ( NULL != pBSSSes )
7609 {
7610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007611 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7612 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007613
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007614 /*reset the bAssociationInProgress otherwise the next
7615 *join request will be queued*/
7616 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7617 wpalMutexRelease(&pWDICtx->wptMutex);
7618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 }
7620
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 if ( NULL == pBSSSes )
7626 {
7627
7628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7629 "DAL has no free sessions - cannot run another join");
7630
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007631 /*reset the bAssociationInProgress otherwise the next
7632 *join request will be queued*/
7633 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 }
7637
7638 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7640 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 WDI_MAC_ADDR_LEN);
7642
7643 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007646
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 wpalMutexRelease(&pWDICtx->wptMutex);
7648
7649 /*-----------------------------------------------------------------------
7650 Get message buffer
7651 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 sizeof(halJoinReqMsg.joinReqParams),
7654 &pSendBuffer, &usDataOffset, &usSendSize))||
7655 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7656 {
7657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7658 "Unable to get send buffer in join req %x %x %x",
7659 pUserData, pwdiJoinParams, wdiJoinRspCb);
7660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 }
7663
7664 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007665 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007666
7667 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 pwdiJoinParams->wdiReqInfo.macSTASelf,
7669 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007670
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7673
7674 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7675
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007676#ifdef WLAN_FEATURE_VOWIFI
7677 halJoinReqMsg.joinReqParams.maxTxPower =
7678 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7679#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7682#endif
7683
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7686 wdiSecondaryChannelOffset);
7687
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 wpalMemoryCopy( pSendBuffer+usDataOffset,
7689 &halJoinReqMsg.joinReqParams,
7690 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007691
7692 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007693 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007694
7695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7699 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007700
7701}/*WDI_ProcessBSSSessionJoinReq*/
7702
7703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007704 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007705 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007706
7707 @param pWDICtx: pointer to the WLAN DAL context
7708 pEventData: pointer to the event information structure
7709
Jeff Johnson295189b2012-06-20 16:38:30 -07007710 @see
7711 @return Result of the function call
7712*/
7713WDI_Status
7714WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007715(
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 WDI_ControlBlockType* pWDICtx,
7717 WDI_EventInfoType* pEventData
7718)
7719{
7720 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7721 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7722 WDI_JoinRspCb wdiJoinRspCb = NULL;
7723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7724
7725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 -------------------------------------------------------------------------*/
7728 if (( NULL == pEventData ) ||
7729 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7730 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7731 {
7732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007737
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 /*-------------------------------------------------------------------------
7739 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 -------------------------------------------------------------------------*/
7742 wpalMutexAcquire(&pWDICtx->wptMutex);
7743
7744 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7745 {
7746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7747 "Association is currently in progress, queueing new join req");
7748
7749 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 pwdiJoinParams->wdiReqInfo.macBSSID);
7752
7753 wpalMutexRelease(&pWDICtx->wptMutex);
7754
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 }
7757
7758 /*Starting a new association */
7759 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7760 wpalMutexRelease(&pWDICtx->wptMutex);
7761
7762 /*Process the Join Request*/
7763 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7764 wdiJoinRspCb,pEventData->pUserData);
7765
7766}/*WDI_ProcessJoinReq*/
7767
7768
7769/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007772
7773 @param pWDICtx: pointer to the WLAN DAL context
7774 pEventData: pointer to the event information structure
7775
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 @see
7777 @return Result of the function call
7778*/
7779WDI_Status
7780WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007781(
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 WDI_ControlBlockType* pWDICtx,
7783 WDI_EventInfoType* pEventData
7784)
7785{
7786 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7787 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007790 wpt_uint16 uMsgSize = 0;
7791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 wpt_uint16 usDataOffset = 0;
7793 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7798
7799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 -------------------------------------------------------------------------*/
7802 if (( NULL == pEventData ) ||
7803 ( NULL == pEventData->pEventData ) ||
7804 ( NULL == pEventData->pCBfnc ))
7805 {
7806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 }
7811
7812 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7813 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7814 /*-------------------------------------------------------------------------
7815 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 -------------------------------------------------------------------------*/
7818 wpalMutexAcquire(&pWDICtx->wptMutex);
7819
7820 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7824 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7825 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007826
Jeff Johnsone7245742012-09-05 17:12:55 -07007827 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 {
7829#ifdef WLAN_FEATURE_VOWIFI_11R
7830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 if ( NULL == pBSSSes )
7835 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007836
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7838 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007839
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007843
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7846 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007848
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007850 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7852#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 * Request in case of IBSS*/
7855 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7856 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7857 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7858 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7859 {
7860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 if ( NULL == pBSSSes )
7865 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007866
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7868 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007869
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007873
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7876 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007878
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7882 }
7883 else
7884 {
7885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7887 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7888 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7889
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 /* for IBSS testing */
7891 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 }
7894#endif
7895 }
7896
7897 /*------------------------------------------------------------------------
7898 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 ------------------------------------------------------------------------*/
7901 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7902 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7904 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7905 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7906 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007907
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007909
7910 wpalMutexRelease(&pWDICtx->wptMutex);
7911
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 }
7914
7915 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7917 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007918 sizeof(pWDICtx->wdiCachedConfigBssReq));
7919
7920 wpalMutexRelease(&pWDICtx->wptMutex);
7921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7923#ifdef WLAN_FEATURE_11AC
7924 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007925 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 else
7927#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007928 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007929
7930 /*-----------------------------------------------------------------------
7931 Get message buffer
7932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7935 ( usSendSize < (usDataOffset + uMsgSize )))
7936 {
7937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7938 "Unable to get send buffer in config bss req %x %x %x",
7939 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 }
7943
7944 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007945#ifdef WLAN_FEATURE_11AC
7946 if (WDI_getFwWlanFeatCaps(DOT11AC))
7947 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7948 &pwdiConfigBSSParams->wdiReqInfo);
7949 else
7950#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 &pwdiConfigBSSParams->wdiReqInfo);
7953
7954 /* Need to fill in the STA Index to invalid, since at this point we have not
7955 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007957
7958 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7960
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007961#ifdef WLAN_FEATURE_11AC
7962 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7963 wpalMemoryCopy( pSendBuffer+usDataOffset,
7964 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7965 uMsgSize);
7966 }else
7967#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007968 {
7969 if ( uMsgSize <= sizeof(tConfigBssParams) )
7970 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007971 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007972 &halConfigBssReqMsg.uBssParams.configBssParams,
7973 uMsgSize);
7974 }
7975 else
7976 {
7977 return WDI_STATUS_E_FAILURE;
7978 }
7979 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007980
7981 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007983
7984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7988 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 WDI_CONFIG_BSS_RESP);
7990
7991}/*WDI_ProcessConfigBSSReq*/
7992
7993
7994/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007997
7998 @param pWDICtx: pointer to the WLAN DAL context
7999 pEventData: pointer to the event information structure
8000
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 @see
8002 @return Result of the function call
8003*/
8004WDI_Status
8005WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008006(
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 WDI_ControlBlockType* pWDICtx,
8008 WDI_EventInfoType* pEventData
8009)
8010{
8011 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8012 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 wpt_uint16 usDataOffset = 0;
8017 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8022
8023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 -------------------------------------------------------------------------*/
8026 if (( NULL == pEventData ) ||
8027 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8028 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8029 {
8030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 }
8035
8036 /*-------------------------------------------------------------------------
8037 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 -------------------------------------------------------------------------*/
8040 wpalMutexAcquire(&pWDICtx->wptMutex);
8041
8042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8046 pwdiDelBSSParams->ucBssIdx,
8047 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008048
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 {
8051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 "%s: BSS does not yet exist. ucBssIdx %d",
8053 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008054
8055 wpalMutexRelease(&pWDICtx->wptMutex);
8056
8057 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008059
8060 /*------------------------------------------------------------------------
8061 Check if this BSS is being currently processed or queued,
8062 if queued - queue the new request as well
8063 ------------------------------------------------------------------------*/
8064 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8067 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8068 __func__, pwdiDelBSSParams->ucBssIdx);
8069
8070 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8071
8072 wpalMutexRelease(&pWDICtx->wptMutex);
8073
8074 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008076
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 /*-----------------------------------------------------------------------
8078 If we receive a Del BSS request for an association that is already in
8079 progress, it indicates that the assoc has failed => we no longer have
8080 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 -----------------------------------------------------------------------*/
8083 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8084 {
8085 /*We can switch to false here because even if a subsequent Join comes in
8086 it will only be processed when DAL transitions out of BUSY state which
8087 happens when the Del BSS request comes */
8088 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8089
8090 /*Former association is complete - prepare next pending assoc for
8091 processing */
8092 WDI_DequeueAssocRequest(pWDICtx);
8093 }
8094
8095 wpalMutexRelease(&pWDICtx->wptMutex);
8096 /*-----------------------------------------------------------------------
8097 Get message buffer
8098 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 sizeof(halBssReqMsg.deleteBssParams),
8101 &pSendBuffer, &usDataOffset, &usSendSize))||
8102 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8103 {
8104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8105 "Unable to get send buffer in start req %x %x %x",
8106 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 }
8110
8111 /*Fill in the message request structure*/
8112
8113 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008114 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008115
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 wpalMemoryCopy( pSendBuffer+usDataOffset,
8117 &halBssReqMsg.deleteBssParams,
8118 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008119
8120 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122
Jeff Johnsone7245742012-09-05 17:12:55 -07008123
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8129
Jeff Johnsone7245742012-09-05 17:12:55 -07008130
Jeff Johnson295189b2012-06-20 16:38:30 -07008131}/*WDI_ProcessDelBSSReq*/
8132
8133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008136
8137 @param pWDICtx: pointer to the WLAN DAL context
8138 pEventData: pointer to the event information structure
8139
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 @see
8141 @return Result of the function call
8142*/
8143WDI_Status
8144WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008145(
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 WDI_ControlBlockType* pWDICtx,
8147 WDI_EventInfoType* pEventData
8148)
8149{
8150 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8151 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 wpt_uint16 usDataOffset = 0;
8156 wpt_uint16 usSendSize = 0;
8157 wpt_uint16 uMsgSize = 0;
8158 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8163
8164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 -------------------------------------------------------------------------*/
8167 if (( NULL == pEventData ) ||
8168 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8169 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8170 {
8171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 }
8176
8177 /*-------------------------------------------------------------------------
8178 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 -------------------------------------------------------------------------*/
8181 wpalMutexAcquire(&pWDICtx->wptMutex);
8182
8183 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8187 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8188 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
8190 if ( NULL == pBSSSes )
8191 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8193 "%s: Association sequence for this BSS does not yet exist - "
8194 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8195 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008196
8197 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 }
8200
8201 /*------------------------------------------------------------------------
8202 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 ------------------------------------------------------------------------*/
8205 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8206 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8208 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8209 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008210
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008212
8213 wpalMutexRelease(&pWDICtx->wptMutex);
8214
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 }
8217
8218 /*-----------------------------------------------------------------------
8219 If Post Assoc was not yet received - the current association must
8220 be in progress
8221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8224 {
8225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8226 "Association sequence for this BSS association no longer in "
8227 "progress - not allowed");
8228
8229 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 }
8232
8233 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 -----------------------------------------------------------------------*/
8236 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8237 {
8238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8239 "Post Assoc not allowed before JOIN - failing request");
8240
8241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 }
8244
8245 wpalMutexRelease(&pWDICtx->wptMutex);
8246
8247 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8248 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8249 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8254 ( usSendSize < (usDataOffset + uMsgSize )))
8255 {
8256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8257 "Unable to get send buffer in start req %x %x %x",
8258 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 }
8262
8263 /*Copy the STA parameters */
8264 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8265 &pwdiPostAssocParams->wdiSTAParams );
8266
8267 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 WDI_STATableFindStaidByAddr(pWDICtx,
8270 pwdiPostAssocParams->wdiSTAParams.macSTA,
8271 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8272 {
8273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8274 "This station does not exist in the WDI Station Table %d");
8275 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008276 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 }
8279
8280 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008281 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 pBSSSes->ucBSSIdx;
8283
8284 /*Copy the BSS parameters */
8285 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8286 &pwdiPostAssocParams->wdiBSSParams);
8287
8288 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 WDI_STATableFindStaidByAddr(pWDICtx,
8291 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 {
8294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8295 "This station does not exist in the WDI Station Table %d");
8296 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008297 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 }
8300
8301 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 pBSSSes->ucBSSIdx;
8304
Jeff Johnsone7245742012-09-05 17:12:55 -07008305
8306 wpalMemoryCopy( pSendBuffer+usDataOffset,
8307 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8308 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008309
8310 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8311
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8313 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8314 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008315
Jeff Johnsone7245742012-09-05 17:12:55 -07008316
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008319
Jeff Johnsone7245742012-09-05 17:12:55 -07008320
8321 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
8325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8330
Jeff Johnsone7245742012-09-05 17:12:55 -07008331
Jeff Johnson295189b2012-06-20 16:38:30 -07008332}/*WDI_ProcessPostAssocReq*/
8333
8334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008337
8338 @param pWDICtx: pointer to the WLAN DAL context
8339 pEventData: pointer to the event information structure
8340
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 @see
8342 @return Result of the function call
8343*/
8344WDI_Status
8345WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008346(
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 WDI_ControlBlockType* pWDICtx,
8348 WDI_EventInfoType* pEventData
8349)
8350{
8351 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8352 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 wpt_uint16 usDataOffset = 0;
8357 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8360
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8363
8364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 -------------------------------------------------------------------------*/
8367 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8368 ( NULL == pEventData->pCBfnc ))
8369 {
8370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 }
8375
8376 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8377 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8378 /*-------------------------------------------------------------------------
8379 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 -------------------------------------------------------------------------*/
8382 wpalMutexAcquire(&pWDICtx->wptMutex);
8383
8384 /*------------------------------------------------------------------------
8385 Find the BSS for which the request is made and identify WDI session
8386 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8388 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 &macBSSID))
8390 {
8391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8392 "This station does not exist in the WDI Station Table %d");
8393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 }
8396
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8398 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8401 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8402 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008403
8404 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 }
8407
8408 /*------------------------------------------------------------------------
8409 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 ------------------------------------------------------------------------*/
8412 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8413 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8415 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8416 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 }
8422
8423 wpalMutexRelease(&pWDICtx->wptMutex);
8424 /*-----------------------------------------------------------------------
8425 Get message buffer
8426 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 sizeof(halDelStaReqMsg.delStaParams),
8429 &pSendBuffer, &usDataOffset, &usSendSize))||
8430 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8431 {
8432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8433 "Unable to get send buffer in start req %x %x %x",
8434 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 }
8438
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8440 wpalMemoryCopy( pSendBuffer+usDataOffset,
8441 &halDelStaReqMsg.delStaParams,
8442 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008443
8444 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008446
8447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8452
8453}/*WDI_ProcessDelSTAReq*/
8454
8455
8456/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008458==========================================================================*/
8459/**
8460 @brief Process Set BSS Key Request function (called when Main FSM
8461 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008462
8463 @param pWDICtx: pointer to the WLAN DAL context
8464 pEventData: pointer to the event information structure
8465
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 @see
8467 @return Result of the function call
8468*/
8469WDI_Status
8470WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008471(
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 WDI_ControlBlockType* pWDICtx,
8473 WDI_EventInfoType* pEventData
8474)
8475{
8476 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8477 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 wpt_uint16 usDataOffset = 0;
8482 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8485 wpt_uint8 keyIndex = 0;
8486
8487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8488
8489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 -------------------------------------------------------------------------*/
8492 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8493 ( NULL == pEventData->pCBfnc ))
8494 {
8495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 }
8500
8501 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8502 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8503 /*-------------------------------------------------------------------------
8504 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 -------------------------------------------------------------------------*/
8507 wpalMutexAcquire(&pWDICtx->wptMutex);
8508
8509 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8513 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8514 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008515
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 {
8518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8520 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008521
8522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 }
8525
8526 /*------------------------------------------------------------------------
8527 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 ------------------------------------------------------------------------*/
8530 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8531 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8533 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8534 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 }
8540
8541
8542 wpalMutexRelease(&pWDICtx->wptMutex);
8543 /*-----------------------------------------------------------------------
8544 Get message buffer
8545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8548 &pSendBuffer, &usDataOffset, &usSendSize))||
8549 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8550 {
8551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8552 "Unable to get send buffer in set bss key req %x %x %x",
8553 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 }
8557
8558 /*-----------------------------------------------------------------------
8559 Copy the Key parameters into the HAL message
8560 -----------------------------------------------------------------------*/
8561
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008563
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8566
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8569
8570 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8571 keyIndex++)
8572 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8575 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8576 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8577 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8578 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8579 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8586 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 WDI_MAX_KEY_LENGTH);
8589 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008590
8591 wpalMemoryCopy( pSendBuffer+usDataOffset,
8592 &halSetBssKeyReqMsg.setBssKeyParams,
8593 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008594
8595 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008597
8598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8602 wdiSetBSSKeyRspCb, pEventData->pUserData,
8603 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008604
8605}/*WDI_ProcessSetBssKeyReq*/
8606
8607/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008610
8611 @param pWDICtx: pointer to the WLAN DAL context
8612 pEventData: pointer to the event information structure
8613
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 @see
8615 @return Result of the function call
8616*/
8617WDI_Status
8618WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008619(
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 WDI_ControlBlockType* pWDICtx,
8621 WDI_EventInfoType* pEventData
8622)
8623{
8624 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8625 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 wpt_uint16 usDataOffset = 0;
8630 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8634
8635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 -------------------------------------------------------------------------*/
8638 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8639 ( NULL == pEventData->pCBfnc ))
8640 {
8641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 }
8646
8647 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8648 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8649 /*-------------------------------------------------------------------------
8650 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 -------------------------------------------------------------------------*/
8653 wpalMutexAcquire(&pWDICtx->wptMutex);
8654
8655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8659 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8660 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008661
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 {
8664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8666 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008667
8668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 }
8671
8672 /*------------------------------------------------------------------------
8673 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 ------------------------------------------------------------------------*/
8676 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8677 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8679 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8680 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008681
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 }
8686
8687
8688 wpalMutexRelease(&pWDICtx->wptMutex);
8689
8690 /*-----------------------------------------------------------------------
8691 Get message buffer
8692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8695 &pSendBuffer, &usDataOffset, &usSendSize))||
8696 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8697 {
8698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8699 "Unable to get send buffer in set bss key req %x %x %x",
8700 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 }
8704 /*-----------------------------------------------------------------------
8705 Copy the Key parameters into the HAL message
8706 -----------------------------------------------------------------------*/
8707 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8708
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8711
8712 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8713
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8716
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 wpalMemoryCopy( pSendBuffer+usDataOffset,
8718 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8719 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008720
8721 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008723
8724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008730}/*WDI_ProcessRemoveBssKeyReq*/
8731
8732/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008735
8736 @param pWDICtx: pointer to the WLAN DAL context
8737 pEventData: pointer to the event information structure
8738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 @see
8740 @return Result of the function call
8741*/
8742WDI_Status
8743WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008744(
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 WDI_ControlBlockType* pWDICtx,
8746 WDI_EventInfoType* pEventData
8747)
8748{
8749 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8750 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8751 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 wpt_uint16 usDataOffset = 0;
8754 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8759 wpt_uint8 keyIndex = 0;
8760
8761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8762
8763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 -------------------------------------------------------------------------*/
8766 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8767 ( NULL == pEventData->pCBfnc ))
8768 {
8769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 }
8774
8775 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8776 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8777 /*-------------------------------------------------------------------------
8778 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 -------------------------------------------------------------------------*/
8781 wpalMutexAcquire(&pWDICtx->wptMutex);
8782
8783 /*------------------------------------------------------------------------
8784 Find the BSS for which the request is made and identify WDI session
8785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8787 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 &macBSSID))
8789 {
8790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8791 "This station does not exist in the WDI Station Table %d");
8792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 }
8795
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8797 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8800 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8801 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008802
8803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008806
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 /*------------------------------------------------------------------------
8808 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 ------------------------------------------------------------------------*/
8811 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8812 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8814 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8815 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 }
8821
8822
8823 wpalMutexRelease(&pWDICtx->wptMutex);
8824 /*-----------------------------------------------------------------------
8825 Get message buffer
8826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8829 &pSendBuffer, &usDataOffset, &usSendSize))||
8830 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8831 {
8832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8833 "Unable to get send buffer in set bss key req %x %x %x",
8834 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 }
8838 /*-----------------------------------------------------------------------
8839 Copy the STA Key parameters into the HAL message
8840 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8843
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8846
8847 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8848
8849 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8850
8851 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8852
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8854 keyIndex++)
8855 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008856 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8858 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8859 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8860 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8861 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8862 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8869 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 WDI_MAX_KEY_LENGTH);
8872 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008873
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 wpalMemoryCopy( pSendBuffer+usDataOffset,
8875 &halSetStaKeyReqMsg.setStaKeyParams,
8876 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008877
8878 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008880
8881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8885 wdiSetSTAKeyRspCb, pEventData->pUserData,
8886 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008887
8888}/*WDI_ProcessSetSTAKeyReq*/
8889
8890/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008893
8894 @param pWDICtx: pointer to the WLAN DAL context
8895 pEventData: pointer to the event information structure
8896
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 @see
8898 @return Result of the function call
8899*/
8900WDI_Status
8901WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008902(
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 WDI_ControlBlockType* pWDICtx,
8904 WDI_EventInfoType* pEventData
8905)
8906{
8907 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8908 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8909 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 wpt_uint16 usDataOffset = 0;
8912 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 wpt_macAddr macBSSID;
8915 wpt_uint8 ucCurrentBSSSesIdx;
8916 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8918
8919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 -------------------------------------------------------------------------*/
8922 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8923 ( NULL == pEventData->pCBfnc ))
8924 {
8925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 }
8930
8931 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8932 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8933 /*-------------------------------------------------------------------------
8934 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 -------------------------------------------------------------------------*/
8937 wpalMutexAcquire(&pWDICtx->wptMutex);
8938
8939 /*------------------------------------------------------------------------
8940 Find the BSS for which the request is made and identify WDI session
8941 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8943 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 &macBSSID))
8945 {
8946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8947 "This station does not exist in the WDI Station Table %d");
8948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 }
8951
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8953 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8956 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008958
8959 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008962
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 /*------------------------------------------------------------------------
8964 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 ------------------------------------------------------------------------*/
8967 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8968 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8970 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8971 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008972
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 }
8977
8978
8979
8980 wpalMutexRelease(&pWDICtx->wptMutex);
8981 /*-----------------------------------------------------------------------
8982 Get message buffer
8983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8986 &pSendBuffer, &usDataOffset, &usSendSize))||
8987 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8988 {
8989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8990 "Unable to get send buffer in set bss key req %x %x %x",
8991 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 }
8995
8996 /*-----------------------------------------------------------------------
8997 Copy the Key parameters into the HAL message
8998 -----------------------------------------------------------------------*/
8999
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9002
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9005
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9008
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9011
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 wpalMemoryCopy( pSendBuffer+usDataOffset,
9013 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9014 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009015
9016 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009018
9019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009025
9026}/*WDI_ProcessRemoveSTAKeyReq*/
9027
9028/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009031
9032 @param pWDICtx: pointer to the WLAN DAL context
9033 pEventData: pointer to the event information structure
9034
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 @see
9036 @return Result of the function call
9037*/
9038WDI_Status
9039WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009040(
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 WDI_ControlBlockType* pWDICtx,
9042 WDI_EventInfoType* pEventData
9043)
9044{
9045 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9046 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9047 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 wpt_uint16 usDataOffset = 0;
9050 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9055 wpt_uint8 keyIndex = 0;
9056
9057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9058
9059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 -------------------------------------------------------------------------*/
9062 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9063 ( NULL == pEventData->pCBfnc ))
9064 {
9065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 }
9070
9071 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9072 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9073 /*-------------------------------------------------------------------------
9074 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 -------------------------------------------------------------------------*/
9077 wpalMutexAcquire(&pWDICtx->wptMutex);
9078
9079 /*------------------------------------------------------------------------
9080 Find the BSS for which the request is made and identify WDI session
9081 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9083 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 &macBSSID))
9085 {
9086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9087 "This station does not exist in the WDI Station Table %d");
9088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 }
9091
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9093 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 {
9095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9097 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009098
9099 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009102
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 /*------------------------------------------------------------------------
9104 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 ------------------------------------------------------------------------*/
9107 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9108 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9110 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9111 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009112
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 }
9117
9118
9119 wpalMutexRelease(&pWDICtx->wptMutex);
9120 /*-----------------------------------------------------------------------
9121 Get message buffer
9122 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9125 &pSendBuffer, &usDataOffset, &usSendSize))||
9126 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9127 {
9128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9129 "Unable to get send buffer in set bss key req %x %x %x",
9130 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 }
9134 /*-----------------------------------------------------------------------
9135 Copy the STA Key parameters into the HAL message
9136 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9139
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9142
9143 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9144
9145 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9146
9147 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9148
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9150 keyIndex++)
9151 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9154 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9155 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9156 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9157 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9158 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9165 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 WDI_MAX_KEY_LENGTH);
9168 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009169
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 wpalMemoryCopy( pSendBuffer+usDataOffset,
9171 &halSetStaKeyReqMsg.setStaKeyParams,
9172 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009173
9174 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009176
9177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9181 wdiSetSTAKeyRspCb, pEventData->pUserData,
9182 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009183
9184}/*WDI_ProcessSetSTABcastKeyReq*/
9185
9186/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009189
9190 @param pWDICtx: pointer to the WLAN DAL context
9191 pEventData: pointer to the event information structure
9192
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 @see
9194 @return Result of the function call
9195*/
9196WDI_Status
9197WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009198(
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 WDI_ControlBlockType* pWDICtx,
9200 WDI_EventInfoType* pEventData
9201)
9202{
9203 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9204 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9205 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 wpt_uint16 usDataOffset = 0;
9208 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 wpt_macAddr macBSSID;
9211 wpt_uint8 ucCurrentBSSSesIdx;
9212 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9214
9215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 -------------------------------------------------------------------------*/
9218 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9219 ( NULL == pEventData->pCBfnc ))
9220 {
9221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 }
9226
9227 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9228 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9229 /*-------------------------------------------------------------------------
9230 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 -------------------------------------------------------------------------*/
9233 wpalMutexAcquire(&pWDICtx->wptMutex);
9234
9235 /*------------------------------------------------------------------------
9236 Find the BSS for which the request is made and identify WDI session
9237 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9239 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 &macBSSID))
9241 {
9242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9243 "This station does not exist in the WDI Station Table %d");
9244 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 }
9247
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9249 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9252 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9253 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009254
9255 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009258
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 /*------------------------------------------------------------------------
9260 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 ------------------------------------------------------------------------*/
9263 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9264 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9266 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9267 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009268
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 }
9273
9274
9275
9276 wpalMutexRelease(&pWDICtx->wptMutex);
9277 /*-----------------------------------------------------------------------
9278 Get message buffer
9279 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9282 &pSendBuffer, &usDataOffset, &usSendSize))||
9283 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9284 {
9285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9286 "Unable to get send buffer in set bss key req %x %x %x",
9287 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 }
9291
9292 /*-----------------------------------------------------------------------
9293 Copy the Key parameters into the HAL message
9294 -----------------------------------------------------------------------*/
9295
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9298
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9301
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9304
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9307
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 wpalMemoryCopy( pSendBuffer+usDataOffset,
9309 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9310 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009311
9312 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009314
9315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009321
9322}/*WDI_ProcessRemoveSTABcastKeyReq*/
9323
9324/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009326==========================================================================*/
9327/**
9328 @brief Process Add TSpec Request function (called when Main FSM
9329 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009330
9331 @param pWDICtx: pointer to the WLAN DAL context
9332 pEventData: pointer to the event information structure
9333
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 @see
9335 @return Result of the function call
9336*/
9337WDI_Status
9338WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009339(
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 WDI_ControlBlockType* pWDICtx,
9341 WDI_EventInfoType* pEventData
9342)
9343{
9344 WDI_AddTSReqParamsType* pwdiAddTSParams;
9345 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009348 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 wpt_uint16 usDataOffset = 0;
9350 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 wpt_macAddr macBSSID;
9353 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009354
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9356
9357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 -------------------------------------------------------------------------*/
9360 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9361 ( NULL == pEventData->pCBfnc ))
9362 {
9363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009364 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 }
9368
9369 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9370 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9371 /*-------------------------------------------------------------------------
9372 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 -------------------------------------------------------------------------*/
9375 wpalMutexAcquire(&pWDICtx->wptMutex);
9376
9377 /*------------------------------------------------------------------------
9378 Find the BSS for which the request is made and identify WDI session
9379 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9381 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 &macBSSID))
9383 {
9384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9385 "This station does not exist in the WDI Station Table %d");
9386 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 }
9389
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9391 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009392 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9394 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9395 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009396
9397 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009400
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 /*------------------------------------------------------------------------
9402 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 ------------------------------------------------------------------------*/
9405 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9406 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9408 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9409 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009410
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 }
9415
9416 wpalMutexRelease(&pWDICtx->wptMutex);
9417 /*-----------------------------------------------------------------------
9418 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9422 sizeof(halAddTsParams),
9423 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 &usSendSize))||
9425 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9426 {
9427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9428 "Unable to get send buffer in set bss key req %x %x %x",
9429 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 }
9433
9434 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9435 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9436
9437 //TSPEC IE
9438 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9439 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9470
9471 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9486
9487 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9492
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 wpalMemoryCopy( pSendBuffer+usDataOffset,
9494 &halAddTsParams,
9495 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009496
9497 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009499
9500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009506}/*WDI_ProcessAddTSpecReq*/
9507
9508
9509/**
9510 @brief Process Del TSpec Request function (called when Main FSM
9511 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009512
9513 @param pWDICtx: pointer to the WLAN DAL context
9514 pEventData: pointer to the event information structure
9515
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 @see
9517 @return Result of the function call
9518*/
9519WDI_Status
9520WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009521(
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 WDI_ControlBlockType* pWDICtx,
9523 WDI_EventInfoType* pEventData
9524)
9525{
9526 WDI_DelTSReqParamsType* pwdiDelTSParams;
9527 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 wpt_uint16 usDataOffset = 0;
9532 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9535
9536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 -------------------------------------------------------------------------*/
9539 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9540 ( NULL == pEventData->pCBfnc ))
9541 {
9542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 }
9547
9548 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9549 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9550
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_FindAssocSession( pWDICtx,
9561 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
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 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9567 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9568 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9569
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 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. macBSSID " MAC_ADDRESS_STR,
9582 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
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_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9597 &pSendBuffer, &usDataOffset, &usSendSize))||
9598 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
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, pwdiDelTSParams, wdiDelTSRspCb);
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 &pwdiDelTSParams->wdiDelTSInfo,
9609 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009610
9611 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009613
9614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 Send Del TS 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 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009619}/*WDI_ProcessDelTSpecReq*/
9620
9621/**
9622 @brief Process Update EDCA Params Request function (called when
9623 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009624
9625 @param pWDICtx: pointer to the WLAN DAL context
9626 pEventData: pointer to the event information structure
9627
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 @see
9629 @return Result of the function call
9630*/
9631WDI_Status
9632WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009633(
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 WDI_ControlBlockType* pWDICtx,
9635 WDI_EventInfoType* pEventData
9636)
9637{
9638 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9639 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 wpt_uint16 usDataOffset = 0;
9644 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9647
9648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 -------------------------------------------------------------------------*/
9651 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9652 ( NULL == pEventData->pCBfnc ))
9653 {
9654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 }
9659
9660 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9661 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9662 /*-------------------------------------------------------------------------
9663 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 -------------------------------------------------------------------------*/
9666 wpalMutexAcquire(&pWDICtx->wptMutex);
9667
9668 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9672 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9673 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009674
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 {
9677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9679 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009680
9681 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 }
9684
9685 /*------------------------------------------------------------------------
9686 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 ------------------------------------------------------------------------*/
9689 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9690 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9692 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9693 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009694
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 }
9699
9700
9701 wpalMutexRelease(&pWDICtx->wptMutex);
9702 /*-----------------------------------------------------------------------
9703 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9708 &pSendBuffer, &usDataOffset, &usSendSize))||
9709 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9710 {
9711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9712 "Unable to get send buffer in set bss key req %x %x %x",
9713 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 }
9717
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 wpalMemoryCopy( pSendBuffer+usDataOffset,
9719 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9720 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009721
9722 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009724
9725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009728 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9729 wdiUpdateEDCARspCb, pEventData->pUserData,
9730 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009731}/*WDI_ProcessUpdateEDCAParamsReq*/
9732
9733/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009736
9737 @param pWDICtx: pointer to the WLAN DAL context
9738 pEventData: pointer to the event information structure
9739
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 @see
9741 @return Result of the function call
9742*/
9743WDI_Status
9744WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009745(
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 WDI_ControlBlockType* pWDICtx,
9747 WDI_EventInfoType* pEventData
9748)
9749{
9750 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9751 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 wpt_uint16 usDataOffset = 0;
9756 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 wpt_macAddr macBSSID;
9759
9760 tAddBASessionReqMsg halAddBASessionReq;
9761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9762
9763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 -------------------------------------------------------------------------*/
9766 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9767 ( NULL == pEventData->pCBfnc ))
9768 {
9769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 }
9774
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9779 /*-------------------------------------------------------------------------
9780 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 -------------------------------------------------------------------------*/
9783 wpalMutexAcquire(&pWDICtx->wptMutex);
9784
9785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9789 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 &macBSSID))
9791 {
9792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9793 "This station does not exist in the WDI Station Table %d");
9794 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 }
9797
9798
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009800
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9804 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9805 __func__, MAC_ADDR_ARRAY(macBSSID));
9806
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 }
9810
9811 /*------------------------------------------------------------------------
9812 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 ------------------------------------------------------------------------*/
9815 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9816 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9818 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9819 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009820
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
9826
9827 wpalMutexRelease(&pWDICtx->wptMutex);
9828 /*-----------------------------------------------------------------------
9829 Get message buffer
9830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9832 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 sizeof(halAddBASessionReq.addBASessionParams),
9834 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9837 {
9838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9839 "Unable to get send buffer in Add BA session req %x %x %x",
9840 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 }
9844
9845 halAddBASessionReq.addBASessionParams.staIdx =
9846 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9847 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9848 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9849 WDI_MAC_ADDR_LEN);
9850 halAddBASessionReq.addBASessionParams.baTID =
9851 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9852 halAddBASessionReq.addBASessionParams.baPolicy =
9853 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9854 halAddBASessionReq.addBASessionParams.baBufferSize =
9855 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9856 halAddBASessionReq.addBASessionParams.baTimeout =
9857 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9858 halAddBASessionReq.addBASessionParams.baSSN =
9859 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9860 halAddBASessionReq.addBASessionParams.baDirection =
9861 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9862
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 wpalMemoryCopy( pSendBuffer+usDataOffset,
9864 &halAddBASessionReq.addBASessionParams,
9865 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009866
9867 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009869
9870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9874 wdiAddBASessionRspCb, pEventData->pUserData,
9875 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009876}/*WDI_ProcessAddBASessionReq*/
9877
9878/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009881
9882 @param pWDICtx: pointer to the WLAN DAL context
9883 pEventData: pointer to the event information structure
9884
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 @see
9886 @return Result of the function call
9887*/
9888WDI_Status
9889WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009890(
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 WDI_ControlBlockType* pWDICtx,
9892 WDI_EventInfoType* pEventData
9893)
9894{
9895 WDI_DelBAReqParamsType* pwdiDelBAParams;
9896 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 wpt_uint16 usDataOffset = 0;
9901 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 wpt_macAddr macBSSID;
9904 tDelBAParams halDelBAparam;
9905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9906
9907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 -------------------------------------------------------------------------*/
9910 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9911 ( NULL == pEventData->pCBfnc ))
9912 {
9913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 }
9918
9919 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9920 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9921 /*-------------------------------------------------------------------------
9922 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 -------------------------------------------------------------------------*/
9925 wpalMutexAcquire(&pWDICtx->wptMutex);
9926
9927 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9931 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 &macBSSID))
9933 {
9934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9935 "This station does not exist in the WDI Station Table %d");
9936 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 }
9939
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009941
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9945 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9946 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009947
9948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 }
9951
9952 /*------------------------------------------------------------------------
9953 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 ------------------------------------------------------------------------*/
9956 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9957 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9959 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9960 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009961
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 }
9966
9967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 sizeof(halDelBAparam),
9970 &pSendBuffer, &usDataOffset, &usSendSize))||
9971 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9972 {
9973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9974 "Unable to get send buffer for DEL BA req %x %x %x",
9975 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 }
9979
9980 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9981 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9982 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9983
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 wpalMemoryCopy( pSendBuffer+usDataOffset,
9985 &halDelBAparam,
9986 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009987
9988 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990
9991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9995 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009996}/*WDI_ProcessDelBAReq*/
9997
9998#ifdef FEATURE_WLAN_CCX
9999
10000WDI_Status
10001WDI_ProcessTSMStatsReq
10002(
10003 WDI_ControlBlockType* pWDICtx,
10004 WDI_EventInfoType* pEventData
10005)
10006{
10007 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10008 WDI_TsmRspCb wdiTSMRspCb;
10009 wpt_uint8 ucCurrentBSSSesIdx = 0;
10010 WDI_BSSSessionType* pBSSSes = NULL;
10011 wpt_uint8* pSendBuffer = NULL;
10012 wpt_uint16 usDataOffset = 0;
10013 wpt_uint16 usSendSize = 0;
10014 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10015 tTsmStatsParams halTsmStatsReqParams = {0};
10016
10017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10018
10019 /*-------------------------------------------------------------------------
10020 Sanity check
10021 -------------------------------------------------------------------------*/
10022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10023 ( NULL == pEventData->pCBfnc ))
10024 {
10025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 WDI_ASSERT(0);
10028 return WDI_STATUS_E_FAILURE;
10029 }
10030
10031 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10032 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10033 /*-------------------------------------------------------------------------
10034 Check to see if we are in the middle of an association, if so queue, if
10035 not it means it is free to process request
10036 -------------------------------------------------------------------------*/
10037 wpalMutexAcquire(&pWDICtx->wptMutex);
10038
10039 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10040 if ( NULL == pBSSSes )
10041 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10043 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10044 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010045
10046 wpalMutexRelease(&pWDICtx->wptMutex);
10047 return WDI_STATUS_E_NOT_ALLOWED;
10048 }
10049
10050 /*------------------------------------------------------------------------
10051 Check if this BSS is being currently processed or queued,
10052 if queued - queue the new request as well
10053 ------------------------------------------------------------------------*/
10054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10055 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10057 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10058 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010059
10060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10061 wpalMutexRelease(&pWDICtx->wptMutex);
10062 return wdiStatus;
10063 }
10064
10065 wpalMutexRelease(&pWDICtx->wptMutex);
10066 /*-----------------------------------------------------------------------
10067 Get message buffer
10068 ! TO DO : proper conversion into the HAL Message Request Format
10069 -----------------------------------------------------------------------*/
10070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10071 sizeof(halTsmStatsReqParams),
10072 &pSendBuffer, &usDataOffset, &usSendSize))||
10073 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10074 {
10075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10076 "Unable to get send buffer in set bss key req %x %x %x",
10077 pEventData, pwdiTSMParams, wdiTSMRspCb);
10078 WDI_ASSERT(0);
10079 return WDI_STATUS_E_FAILURE;
10080 }
10081
10082 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10083 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10084 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10085 WDI_MAC_ADDR_LEN);
10086 wpalMemoryCopy( pSendBuffer+usDataOffset,
10087 &halTsmStatsReqParams,
10088 sizeof(halTsmStatsReqParams));
10089
10090 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10091 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10092
10093 /*-------------------------------------------------------------------------
10094 Send TSM Stats Request to HAL
10095 -------------------------------------------------------------------------*/
10096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10097 wdiTSMRspCb, pEventData->pUserData,
10098 WDI_TSM_STATS_RESP);
10099}/*WDI_ProcessTSMStatsReq*/
10100
10101#endif
10102
10103
10104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010107
10108 @param pWDICtx: pointer to the WLAN DAL context
10109 pEventData: pointer to the event information structure
10110
Jeff Johnson295189b2012-06-20 16:38:30 -070010111 @see
10112 @return Result of the function call
10113*/
10114WDI_Status
10115WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010116(
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 WDI_ControlBlockType* pWDICtx,
10118 WDI_EventInfoType* pEventData
10119)
10120{
10121 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10122 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 wpt_uint16 usDataOffset = 0;
10125 wpt_uint16 usSendSize = 0;
10126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10127
10128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 -------------------------------------------------------------------------*/
10131 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10132 ( NULL == pEventData->pCBfnc ))
10133 {
10134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 }
10139
10140 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10141 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10142 /*-----------------------------------------------------------------------
10143 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10148 &pSendBuffer, &usDataOffset, &usSendSize))||
10149 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10150 {
10151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10152 "Unable to get send buffer in set bss key req %x %x %x",
10153 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 }
10157
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 wpalMemoryCopy( pSendBuffer+usDataOffset,
10159 &pwdiFlushAcParams->wdiFlushAcInfo,
10160 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010161
10162 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010164
10165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10169 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010170}/*WDI_ProcessFlushAcReq*/
10171
10172/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010175
10176 @param pWDICtx: pointer to the WLAN DAL context
10177 pEventData: pointer to the event information structure
10178
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 @see
10180 @return Result of the function call
10181*/
10182WDI_Status
10183WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010184(
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 WDI_ControlBlockType* pWDICtx,
10186 WDI_EventInfoType* pEventData
10187)
10188{
10189 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10190 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 wpt_uint16 usDataOffset = 0;
10193 wpt_uint16 usSendSize = 0;
10194
10195 tBtAmpEventMsg haltBtAmpEventMsg;
10196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10197
10198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 -------------------------------------------------------------------------*/
10201 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10202 ( NULL == pEventData->pCBfnc ))
10203 {
10204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 }
10209
10210 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10211 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10212 /*-----------------------------------------------------------------------
10213 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10218 &pSendBuffer, &usDataOffset, &usSendSize))||
10219 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10220 {
10221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10222 "Unable to get send buffer in BT AMP event req %x %x %x",
10223 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 }
10227
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010230 wpalMemoryCopy( pSendBuffer+usDataOffset,
10231 &haltBtAmpEventMsg.btAmpEventParams,
10232 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010233
10234 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010236
10237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10241 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010242}/*WDI_ProcessBtAmpEventReq*/
10243
10244/**
10245 @brief Process Add STA self Request function (called when Main FSM
10246 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010247
10248 @param pWDICtx: pointer to the WLAN DAL context
10249 pEventData: pointer to the event information structure
10250
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 @see
10252 @return Result of the function call
10253*/
10254WDI_Status
10255WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010256(
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 WDI_ControlBlockType* pWDICtx,
10258 WDI_EventInfoType* pEventData
10259)
10260{
10261 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10262 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 wpt_uint16 usDataOffset = 0;
10265 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010266 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10268
10269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 -------------------------------------------------------------------------*/
10272 if (( NULL == pEventData ) ||
10273 ( NULL == pEventData->pEventData) ||
10274 ( NULL == pEventData->pCBfnc))
10275 {
10276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 }
10281
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10286 /*-----------------------------------------------------------------------
10287 Get message buffer
10288 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10290 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010291 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010293 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 {
10295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10296 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10297 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 }
10301
10302 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10305
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010307 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10308 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10309 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10310 {
10311 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10312 }
10313 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10314 VOS_P2P_CLIENT_MODE) ||
10315 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10316 VOS_P2P_DEVICE))
10317 {
10318 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10319 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010321 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010322
10323 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010325
10326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10330 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10331 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010332}/*WDI_ProcessAddSTASelfReq*/
10333
10334
10335
10336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010339
10340 @param pWDICtx: pointer to the WLAN DAL context
10341 pEventData: pointer to the event information structure
10342
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 @see
10344 @return Result of the function call
10345*/
10346WDI_Status
10347WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010348(
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 WDI_ControlBlockType* pWDICtx,
10350 WDI_EventInfoType* pEventData
10351)
10352{
10353 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10354 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 wpt_uint16 usDataOffset = 0;
10357 wpt_uint16 usSendSize = 0;
10358 tDelStaSelfParams halSetDelSelfSTAParams;
10359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10360
10361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 -------------------------------------------------------------------------*/
10364 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10365 ( NULL == pEventData->pCBfnc ))
10366 {
10367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 }
10372
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10375 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10376
10377 /*-----------------------------------------------------------------------
10378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10383 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10386 {
10387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10388 "Unable to get send buffer in Del Sta Self req %x %x %x",
10389 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 }
10393
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10396
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10398 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010399
10400 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010402
10403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10407 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 WDI_DEL_STA_SELF_RESP);
10409
10410}
10411
Jeff Johnsone7245742012-09-05 17:12:55 -070010412#ifdef FEATURE_OEM_DATA_SUPPORT
10413/**
10414 @brief Process Start Oem Data Request function (called when Main
10415 FSM allows it)
10416
10417 @param pWDICtx: pointer to the WLAN DAL context
10418 pEventData: pointer to the event information structure
10419
10420 @see
10421 @return Result of the function call
10422*/
10423WDI_Status
10424WDI_ProcessStartOemDataReq
10425(
10426 WDI_ControlBlockType* pWDICtx,
10427 WDI_EventInfoType* pEventData
10428)
10429{
10430 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10431 WDI_oemDataRspCb wdiOemDataRspCb;
10432 wpt_uint8* pSendBuffer = NULL;
10433 wpt_uint16 usDataOffset = 0;
10434 wpt_uint16 usSendSize = 0;
10435 wpt_uint16 reqLen;
10436 tStartOemDataReqParams* halStartOemDataReqParams;
10437
10438 /*-------------------------------------------------------------------------
10439 Sanity check
10440 -------------------------------------------------------------------------*/
10441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10442 ( NULL == pEventData->pCBfnc ))
10443 {
10444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010445 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 WDI_ASSERT(0);
10447 return WDI_STATUS_E_FAILURE;
10448 }
10449
10450 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10451 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10452
10453 /*-----------------------------------------------------------------------
10454 Get message buffer
10455 -----------------------------------------------------------------------*/
10456
10457 reqLen = sizeof(tStartOemDataReqParams);
10458
10459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10460 WDI_START_OEM_DATA_REQ, reqLen,
10461 &pSendBuffer, &usDataOffset, &usSendSize))||
10462 (usSendSize < (usDataOffset + reqLen)))
10463 {
10464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10465 "Unable to get send buffer in Start Oem Data req %x %x %x",
10466 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10467 WDI_ASSERT(0);
10468 return WDI_STATUS_E_FAILURE;
10469 }
10470
10471 //copying WDI OEM DATA REQ PARAMS to shared memory
10472 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10473
10474 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10475 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10476
10477 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10478 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10479
10480 /*-------------------------------------------------------------------------
10481 Send Start Request to HAL
10482 -------------------------------------------------------------------------*/
10483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10484 wdiOemDataRspCb, pEventData->pUserData,
10485 WDI_START_OEM_DATA_RESP);
10486}/*WDI_ProcessStartOemDataReq*/
10487#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010488
10489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010492
10493 @param pWDICtx: pointer to the WLAN DAL context
10494 pEventData: pointer to the event information structure
10495
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 @see
10497 @return Result of the function call
10498*/
10499WDI_Status
10500WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010501(
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 WDI_ControlBlockType* pWDICtx,
10503 WDI_EventInfoType* pEventData
10504)
10505{
10506 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10507 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 wpt_uint16 usDataOffset = 0;
10510 wpt_uint16 usSendSize = 0;
10511 tHalWlanHostResumeReqParam halResumeReqParams;
10512
10513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10514
10515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 -------------------------------------------------------------------------*/
10518 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10519 ( NULL == pEventData->pCBfnc ))
10520 {
10521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010522 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 }
10526
10527 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10528 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10529
10530 /*-----------------------------------------------------------------------
10531 Get message buffer
10532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10535 &pSendBuffer, &usDataOffset, &usSendSize))||
10536 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10537 {
10538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 }
10544
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010547
10548 wpalMemoryCopy( pSendBuffer+usDataOffset,
10549 &halResumeReqParams,
10550 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010551
10552 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010554
10555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10559 wdiHostResumeRspCb, pEventData->pUserData,
10560 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010561}/*WDI_ProcessHostResumeReq*/
10562
10563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010566
10567 @param pWDICtx: pointer to the WLAN DAL context
10568 pEventData: pointer to the event information structure
10569
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 @see
10571 @return Result of the function call
10572*/
10573WDI_Status
10574WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010575(
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 WDI_ControlBlockType* pWDICtx,
10577 WDI_EventInfoType* pEventData
10578)
10579{
10580 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10581 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 wpt_uint16 usDataOffset = 0;
10584 wpt_uint16 usSendSize = 0;
10585 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10587
10588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 -------------------------------------------------------------------------*/
10591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10592 ( NULL == pEventData->pCBfnc ))
10593 {
10594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010595 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 }
10599
10600 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10601 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010602
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 /*-----------------------------------------------------------------------
10604 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 sizeof(halTxPerTrackingReqParam),
10609 &pSendBuffer, &usDataOffset, &usSendSize))||
10610 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10611 {
10612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10613 "Unable to get send buffer in set tx per tracking req %x %x %x",
10614 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010618
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10620 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10621 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10622 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010623
10624 wpalMemoryCopy( pSendBuffer+usDataOffset,
10625 &halTxPerTrackingReqParam,
10626 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010627
10628 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010630
10631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10635 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010636}/*WDI_ProcessSetTxPerTrackingReq*/
10637
10638/*=========================================================================
10639 Indications
10640=========================================================================*/
10641
10642/**
10643 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010644
10645 @param pWDICtx: pointer to the WLAN DAL context
10646 pEventData: pointer to the event information structure
10647
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 @see
10649 @return Result of the function call
10650*/
10651WDI_Status
10652WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010653(
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 WDI_ControlBlockType* pWDICtx,
10655 WDI_EventInfoType* pEventData
10656)
10657{
10658 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 wpt_uint16 usDataOffset = 0;
10661 wpt_uint16 usSendSize = 0;
10662 WDI_Status wdiStatus;
10663 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10665
10666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 -------------------------------------------------------------------------*/
10669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10670 {
10671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010672 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 }
10676
10677 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10678
10679 /*-----------------------------------------------------------------------
10680 Get message buffer
10681 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10683 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 sizeof(halWlanSuspendIndparams),
10685 &pSendBuffer, &usDataOffset, &usSendSize))||
10686 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10687 {
10688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10689 "Unable to get send buffer in Suspend Ind ");
10690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 }
10693
10694 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10695 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10696
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010698 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010699
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10701 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010702
10703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 -------------------------------------------------------------------------*/
10706 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010708
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10711}/*WDI_ProcessHostSuspendInd*/
10712
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010713
10714
10715/**
10716 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10717
10718 @param pWDICtx: pointer to the WLAN DAL context
10719 pEventData: pointer to the event information structure
10720
10721 @see
10722 @return Result of the function call
10723*/
10724WDI_Status
10725WDI_ProcessTrafficStatsInd
10726(
10727 WDI_ControlBlockType* pWDICtx,
10728 WDI_EventInfoType* pEventData
10729)
10730{
10731 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10732 wpt_uint8* pSendBuffer = NULL;
10733 wpt_uint16 usDataOffset = 0;
10734 wpt_uint16 usSendSize = 0;
10735 WDI_Status wdiStatus;
10736 tStatsClassBIndParams* pStatsClassBIndParams;
10737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10738
10739 /*-------------------------------------------------------------------------
10740 Sanity check
10741 -------------------------------------------------------------------------*/
10742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10743 {
10744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10745 "%s: Invalid parameters in Traffic Stats ind",__func__);
10746 WDI_ASSERT(0);
10747 return WDI_STATUS_E_FAILURE;
10748 }
10749
10750 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10751
10752 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10753 {
10754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10755 "%s: Invalid parameters in Traffic Stats ind",__func__);
10756 WDI_ASSERT(0);
10757 return WDI_STATUS_E_FAILURE;
10758 }
10759
10760 /*-----------------------------------------------------------------------
10761 Get message buffer
10762 -----------------------------------------------------------------------*/
10763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10764 WDI_TRAFFIC_STATS_IND,
10765 sizeof(tStatsClassBIndParams),
10766 &pSendBuffer, &usDataOffset, &usSendSize))||
10767 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10768 {
10769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10770 "Unable to get send buffer in Traffic Stats Ind ");
10771 WDI_ASSERT(0);
10772 return WDI_STATUS_E_FAILURE;
10773 }
10774
10775 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10776
10777 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10778
10779 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10780 pTrafficStatsIndParams->pTrafficStats,
10781 pTrafficStatsIndParams->length);
10782
10783 /*-------------------------------------------------------------------------
10784 Send Suspend Request to HAL
10785 -------------------------------------------------------------------------*/
10786 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10787 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10788
10789 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10790 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10791}/*WDI_ProcessTrafficStatsInd*/
10792
Chet Lanctota96bb432013-03-18 10:26:30 -070010793#ifdef WLAN_FEATURE_11W
10794/**
10795 @brief Process Exclude Unencrypted Indications function (called
10796 when Main FSM allows it)
10797
10798 @param pWDICtx: pointer to the WLAN DAL context
10799 pEventData: pointer to the event information structure
10800
10801 @see
10802 @return Result of the function call
10803*/
10804WDI_Status
10805WDI_ProcessExcludeUnencryptInd
10806(
10807 WDI_ControlBlockType* pWDICtx,
10808 WDI_EventInfoType* pEventData
10809)
10810{
10811 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10812 wpt_uint8* pSendBuffer = NULL;
10813 wpt_uint16 usDataOffset = 0;
10814 wpt_uint16 usSendSize = 0;
10815 WDI_Status wdiStatus;
10816 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10818
10819 /*-------------------------------------------------------------------------
10820 Sanity check
10821 -------------------------------------------------------------------------*/
10822 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10823 {
10824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10825 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10826 WDI_ASSERT(0);
10827 return WDI_STATUS_E_FAILURE;
10828 }
10829
10830 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10831
10832 /*-----------------------------------------------------------------------
10833 Get message buffer
10834 -----------------------------------------------------------------------*/
10835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10836 WDI_EXCLUDE_UNENCRYPTED_IND,
10837 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10838 &pSendBuffer, &usDataOffset, &usSendSize))||
10839 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10840 {
10841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10842 "Unable to get send buffer in Exclude Unencrypted Ind ");
10843 WDI_ASSERT(0);
10844 return WDI_STATUS_E_FAILURE;
10845 }
10846
10847 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10848
10849 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10850
10851 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10852 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10853
10854 /*-------------------------------------------------------------------------
10855 Send Suspend Request to HAL
10856 -------------------------------------------------------------------------*/
10857 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10858 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10859
10860 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10861 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10862}/*WDI_ProcessExcludeUnencryptInd*/
10863#endif
10864
Jeff Johnson295189b2012-06-20 16:38:30 -070010865/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010867==========================================================================*/
10868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010871
10872 @param pWDICtx: pointer to the WLAN DAL context
10873 pEventData: pointer to the event information structure
10874
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 @see
10876 @return Result of the function call
10877*/
10878WDI_Status
10879WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010880(
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 WDI_ControlBlockType* pWDICtx,
10882 WDI_EventInfoType* pEventData
10883)
10884{
10885 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10886 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 wpt_uint16 usDataOffset = 0;
10889 wpt_uint16 usSendSize = 0;
10890 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10892
10893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 -------------------------------------------------------------------------*/
10896 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10897 ( NULL == pEventData->pCBfnc ))
10898 {
10899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 }
10904
10905 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10906 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10907 /*-----------------------------------------------------------------------
10908 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010909 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 sizeof(halSwitchChannelReq.switchChannelParams),
10913 &pSendBuffer, &usDataOffset, &usSendSize))||
10914 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10915 {
10916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10917 "Unable to get send buffer in channel switch req %x %x %x",
10918 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 }
10922
Jeff Johnsone7245742012-09-05 17:12:55 -070010923 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010925#ifndef WLAN_FEATURE_VOWIFI
10926 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10928#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10931
10932#ifdef WLAN_FEATURE_VOWIFI
10933 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10936 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10937 WDI_MAC_ADDR_LEN);
10938 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10939 pwdiSwitchChParams->wdiChInfo.macBSSId,
10940 WDI_MAC_ADDR_LEN);
10941#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 wpalMemoryCopy( pSendBuffer+usDataOffset,
10943 &halSwitchChannelReq.switchChannelParams,
10944 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010945
10946 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010948
10949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10953 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010954}/*WDI_ProcessChannelSwitchReq*/
10955
10956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010959
10960 @param pWDICtx: pointer to the WLAN DAL context
10961 pEventData: pointer to the event information structure
10962
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 @see
10964 @return Result of the function call
10965*/
10966WDI_Status
10967WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010968(
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 WDI_ControlBlockType* pWDICtx,
10970 WDI_EventInfoType* pEventData
10971)
10972{
10973 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10974 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010976 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 wpt_uint16 usDataOffset = 0;
10979 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010980 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010981
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 tConfigStaReqMsg halConfigStaReqMsg;
10983 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10985
10986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010988 -------------------------------------------------------------------------*/
10989 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10990 ( NULL == pEventData->pCBfnc ))
10991 {
10992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 }
10997
10998 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10999 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11000 /*-------------------------------------------------------------------------
11001 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 -------------------------------------------------------------------------*/
11004 wpalMutexAcquire(&pWDICtx->wptMutex);
11005
11006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011008 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011009 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11010 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11011 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011012
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011014 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11016 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11017 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011018
11019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011021 }
11022
11023 /*------------------------------------------------------------------------
11024 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 ------------------------------------------------------------------------*/
11027 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11028 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11030 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11031 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011032
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011036 }
11037
11038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011039
11040 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11041#ifdef WLAN_FEATURE_11AC
11042 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011043 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 else
11045#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011046 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011047
Jeff Johnson295189b2012-06-20 16:38:30 -070011048 /*-----------------------------------------------------------------------
11049 Get message buffer
11050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11052 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 {
11056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11057 "Unable to get send buffer in config sta req %x %x %x",
11058 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011061 }
11062
11063 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 &pwdiConfigSTAParams->wdiReqInfo);
11066
11067 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11068 {
11069 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 WDI_STATableFindStaidByAddr(pWDICtx,
11072 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 {
11075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11076 "This station does not exist in the WDI Station Table %d");
11077 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011078 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 }
11081 }
11082 else
11083 {
11084 /* Need to fill in the STA Index to invalid, since at this point we have not
11085 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011086 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 }
11088
11089 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011091
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 wpalMemoryCopy( pSendBuffer+usDataOffset,
11093 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011094 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011095
11096 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011098
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11100 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 sizeof(pWDICtx->wdiCachedConfigStaReq));
11102
11103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11107 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011108}/*WDI_ProcessConfigStaReq*/
11109
11110
11111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011113 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011114
11115 @param pWDICtx: pointer to the WLAN DAL context
11116 pEventData: pointer to the event information structure
11117
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 @see
11119 @return Result of the function call
11120*/
11121WDI_Status
11122WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011123(
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 WDI_ControlBlockType* pWDICtx,
11125 WDI_EventInfoType* pEventData
11126)
11127{
11128 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11129 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011130 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011131 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 wpt_uint16 usDataOffset = 0;
11134 wpt_uint16 usSendSize = 0;
11135 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11138
11139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 -------------------------------------------------------------------------*/
11142 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11143 ( NULL == pEventData->pCBfnc ))
11144 {
11145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011149 }
11150
11151 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11152 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11153 /*-------------------------------------------------------------------------
11154 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 -------------------------------------------------------------------------*/
11157 wpalMutexAcquire(&pWDICtx->wptMutex);
11158
11159 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011162 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11163 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11164 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011165
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11170 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 }
11172 else
11173 {
11174 /*------------------------------------------------------------------------
11175 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 ------------------------------------------------------------------------*/
11178 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11181 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11182 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11183
11184 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 }
11188 }
11189 /* If the link is set to enter IDLE - the Session allocated for this BSS
11190 will be deleted on the Set Link State response coming from HAL
11191 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11194
11195 wpalMutexRelease(&pWDICtx->wptMutex);
11196 /*-----------------------------------------------------------------------
11197 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011198 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011200
11201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 sizeof(halLinkStateReqMsg),
11203 &pSendBuffer, &usDataOffset, &usSendSize))||
11204 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11205 {
11206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11207 "Unable to get send buffer in set bss key req %x %x %x",
11208 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 }
11212
11213 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11214 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11215
11216 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11217 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11218
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11221
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 wpalMemoryCopy( pSendBuffer+usDataOffset,
11223 &halLinkStateReqMsg,
11224 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011225
11226 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011228
11229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11233 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011234}/*WDI_ProcessSetLinkStateReq*/
11235
11236
11237/**
11238 @brief Process Get Stats Request function (called when Main FSM
11239 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011240
11241 @param pWDICtx: pointer to the WLAN DAL context
11242 pEventData: pointer to the event information structure
11243
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 @see
11245 @return Result of the function call
11246*/
11247WDI_Status
11248WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011249(
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 WDI_ControlBlockType* pWDICtx,
11251 WDI_EventInfoType* pEventData
11252)
11253{
11254 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11255 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 wpt_uint16 usDataOffset = 0;
11258 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 WDI_BSSSessionType* pBSSSes = NULL;
11261 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011263 tHalStatsReqMsg halStatsReqMsg;
11264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11265
11266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 -------------------------------------------------------------------------*/
11269 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11270 ( NULL == pEventData->pCBfnc ) )
11271 {
11272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 }
11277
11278 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11279 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11280
11281 /*-------------------------------------------------------------------------
11282 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 -------------------------------------------------------------------------*/
11285 wpalMutexAcquire(&pWDICtx->wptMutex);
11286
11287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11291 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 &macBSSID))
11293 {
11294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11295 "This station does not exist in the WDI Station Table %d");
11296 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 }
11299
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11301 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11304 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11305 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011306
11307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 }
11310
11311 /*------------------------------------------------------------------------
11312 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011313 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011314 ------------------------------------------------------------------------*/
11315 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11316 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11318 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11319 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011320
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 }
11325
11326
11327 wpalMutexRelease(&pWDICtx->wptMutex);
11328
11329 /*-----------------------------------------------------------------------
11330 Get message buffer
11331 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 sizeof(halStatsReqMsg.statsReqParams),
11334 &pSendBuffer, &usDataOffset, &usSendSize))||
11335 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11336 {
11337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11338 "Unable to get send buffer in set bss key req %x %x %x",
11339 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 }
11343
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011345 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 wpalMemoryCopy( pSendBuffer+usDataOffset,
11349 &halStatsReqMsg.statsReqParams,
11350 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011351
11352 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011354
11355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11359 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011360}/*WDI_ProcessGetStatsReq*/
11361
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011362#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11363/**
11364 @brief Process Get Roam Rssi Request function (called when Main FSM
11365 allows it)
11366
11367 @param pWDICtx: pointer to the WLAN DAL context
11368 pEventData: pointer to the event information structure
11369
11370 @see
11371 @return Result of the function call
11372*/
11373WDI_Status
11374WDI_ProcessGetRoamRssiReq
11375(
11376 WDI_ControlBlockType* pWDICtx,
11377 WDI_EventInfoType* pEventData
11378)
11379{
11380 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11381 WDI_GetStatsRspCb wdiGetStatsRspCb;
11382 wpt_uint8* pSendBuffer = NULL;
11383 wpt_uint16 usDataOffset = 0;
11384 wpt_uint16 usSendSize = 0;
11385 wpt_uint8 ucCurrentBSSSesIdx = 0;
11386 WDI_BSSSessionType* pBSSSes = NULL;
11387 wpt_macAddr macBSSID;
11388 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11389 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11391 /*-------------------------------------------------------------------------
11392 Sanity check
11393 -------------------------------------------------------------------------*/
11394 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11395 ( NULL == pEventData->pCBfnc ) )
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11398 "%s: Invalid parameters", __func__);
11399 WDI_ASSERT(0);
11400 return WDI_STATUS_E_FAILURE;
11401 }
11402
11403 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11404 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11405
11406 /*-------------------------------------------------------------------------
11407 Check to see if we are in the middle of an association, if so queue, if
11408 not it means it is free to process request
11409 -------------------------------------------------------------------------*/
11410 wpalMutexAcquire(&pWDICtx->wptMutex);
11411
11412 /*------------------------------------------------------------------------
11413 Find the BSS for which the request is made
11414 ------------------------------------------------------------------------*/
11415 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11416 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11417 &macBSSID))
11418 {
11419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11420 "This station does not exist in the WDI Station Table %d");
11421 wpalMutexRelease(&pWDICtx->wptMutex);
11422 return WDI_STATUS_E_FAILURE;
11423 }
11424
11425 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11426 if ( NULL == pBSSSes )
11427 {
11428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11429 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11430 __func__, MAC_ADDR_ARRAY(macBSSID));
11431
11432 wpalMutexRelease(&pWDICtx->wptMutex);
11433 return WDI_STATUS_E_NOT_ALLOWED;
11434 }
11435
11436 /*------------------------------------------------------------------------
11437 Check if this BSS is being currently processed or queued,
11438 if queued - queue the new request as well
11439 ------------------------------------------------------------------------*/
11440 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11441 {
11442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11443 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11444 __func__, MAC_ADDR_ARRAY(macBSSID));
11445
11446 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11447 wpalMutexRelease(&pWDICtx->wptMutex);
11448 return wdiStatus;
11449 }
11450
11451 wpalMutexRelease(&pWDICtx->wptMutex);
11452
11453 /*-----------------------------------------------------------------------
11454 Get message buffer
11455 -----------------------------------------------------------------------*/
11456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11457 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11458 &pSendBuffer, &usDataOffset, &usSendSize))||
11459 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11460 {
11461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11462 "Unable to get send buffer in set bss key req %x %x %x",
11463 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11464 WDI_ASSERT(0);
11465 return WDI_STATUS_E_FAILURE;
11466 }
11467
11468 halRssiRoamReqMsg.roamRssiReqParams.staId =
11469 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11470 wpalMemoryCopy( pSendBuffer+usDataOffset,
11471 &halRssiRoamReqMsg.roamRssiReqParams,
11472 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11473
11474 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11475 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11476
11477 /*-------------------------------------------------------------------------
11478 Send Get STA Request to HAL
11479 -------------------------------------------------------------------------*/
11480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11481 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11482}/*WDI_ProcessGetRoamRssiReq*/
11483#endif
11484
Jeff Johnson295189b2012-06-20 16:38:30 -070011485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011487 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011488
11489 @param pWDICtx: pointer to the WLAN DAL context
11490 pEventData: pointer to the event information structure
11491
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 @see
11493 @return Result of the function call
11494*/
11495WDI_Status
11496WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011497(
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 WDI_ControlBlockType* pWDICtx,
11499 WDI_EventInfoType* pEventData
11500)
11501{
11502 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11503 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11504
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 wpt_uint16 usDataOffset = 0;
11507 wpt_uint16 usSendSize = 0;
11508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11509
11510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 -------------------------------------------------------------------------*/
11513 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11514 ( NULL == pEventData->pCBfnc))
11515 {
11516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 }
11521
11522 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11523 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11524
11525 /*-----------------------------------------------------------------------
11526 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 -----------------------------------------------------------------------*/
11529
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11532 &pSendBuffer, &usDataOffset, &usSendSize))||
11533 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11534 {
11535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11536 "Unable to get send buffer in set bss key req %x %x %x",
11537 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 }
11541
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 wpalMemoryCopy( pSendBuffer+usDataOffset,
11543 &pwdiUpdateCfgParams->uConfigBufferLen,
11544 sizeof(wpt_uint32));
11545 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11546 pwdiUpdateCfgParams->pConfigBuffer,
11547 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011548
11549 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011551
11552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011554 -------------------------------------------------------------------------*/
11555
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11557 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011558
11559}/*WDI_ProcessUpdateCfgReq*/
11560
11561
11562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011565
11566 @param pWDICtx: pointer to the WLAN DAL context
11567 pEventData: pointer to the event information structure
11568
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 @see
11570 @return Result of the function call
11571*/
11572WDI_Status
11573WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011574(
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 WDI_ControlBlockType* pWDICtx,
11576 WDI_EventInfoType* pEventData
11577)
11578{
11579 WDI_AddBAReqParamsType* pwdiAddBAParams;
11580 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 wpt_uint16 usDataOffset = 0;
11585 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 wpt_macAddr macBSSID;
11588
11589 tAddBAReqMsg halAddBAReq;
11590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11591
11592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 -------------------------------------------------------------------------*/
11595 if (( NULL == pEventData ) ||
11596 ( NULL == pEventData->pEventData) ||
11597 ( NULL == pEventData->pCBfnc ))
11598 {
11599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 }
11604
11605 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11606 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11607
11608 /*-------------------------------------------------------------------------
11609 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 -------------------------------------------------------------------------*/
11612 wpalMutexAcquire(&pWDICtx->wptMutex);
11613
11614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11618 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 &macBSSID))
11620 {
11621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "This station does not exist in the WDI Station Table %d");
11623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 }
11626
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11628 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11631 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11632 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011633
11634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 }
11637
11638 /*------------------------------------------------------------------------
11639 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 ------------------------------------------------------------------------*/
11642 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11643 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11645 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11646 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011647
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011650 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 }
11652
11653
11654 wpalMutexRelease(&pWDICtx->wptMutex);
11655 /*-----------------------------------------------------------------------
11656 Get message buffer
11657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 sizeof(halAddBAReq.addBAParams),
11660 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11663 {
11664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11665 "Unable to get send buffer in Add BA req %x %x %x",
11666 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 }
11670
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11673 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11674#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11677#endif
11678
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 wpalMemoryCopy( pSendBuffer+usDataOffset,
11680 &halAddBAReq.addBAParams,
11681 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011682
11683 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011685
11686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11690 wdiAddBARspCb, pEventData->pUserData,
11691 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011692}/*WDI_ProcessAddBAReq*/
11693
11694
11695
11696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011698 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011699
11700 @param pWDICtx: pointer to the WLAN DAL context
11701 pEventData: pointer to the event information structure
11702
Jeff Johnson295189b2012-06-20 16:38:30 -070011703 @see
11704 @return Result of the function call
11705*/
11706WDI_Status
11707WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011708(
Jeff Johnson295189b2012-06-20 16:38:30 -070011709 WDI_ControlBlockType* pWDICtx,
11710 WDI_EventInfoType* pEventData
11711)
11712{
11713 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11714 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 wpt_uint16 usDataOffset = 0;
11719 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011721 wpt_uint16 index;
11722 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011723
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 tTriggerBAReqMsg halTriggerBAReq;
11725 tTriggerBaReqCandidate* halTriggerBACandidate;
11726 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11728
11729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 -------------------------------------------------------------------------*/
11732 if (( NULL == pEventData ) ||
11733 ( NULL == pEventData->pEventData ) ||
11734 ( NULL == pEventData->pCBfnc ))
11735 {
11736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 }
11741
11742 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11743 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11744 /*-------------------------------------------------------------------------
11745 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 -------------------------------------------------------------------------*/
11748 wpalMutexAcquire(&pWDICtx->wptMutex);
11749
11750 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11754 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011755 &macBSSID))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11758 "This station does not exist in the WDI Station Table %d");
11759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 }
11762
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11764 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11767 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11768 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011769
11770 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 }
11773
11774 /*------------------------------------------------------------------------
11775 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 ------------------------------------------------------------------------*/
11778 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11779 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11781 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11782 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011783
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 }
11788
11789
11790 wpalMutexRelease(&pWDICtx->wptMutex);
11791 /*-----------------------------------------------------------------------
11792 Get message buffer
11793 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11795 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011796 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11799 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11804 {
11805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11806 "Unable to get send buffer in Trigger BA req %x %x %x",
11807 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011810 }
11811
Jeff Johnsone7245742012-09-05 17:12:55 -070011812 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11816
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 wpalMemoryCopy( pSendBuffer+usDataOffset,
11818 &halTriggerBAReq.triggerBAParams,
11819 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011820
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11823 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11824 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011825
11826 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 index++)
11828 {
11829 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11830 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11831 halTriggerBACandidate++;
11832 wdiTriggerBACandidate++;
11833 }
11834
11835 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011837
11838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011839 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11842 wdiTriggerBARspCb, pEventData->pUserData,
11843 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011844}/*WDI_ProcessTriggerBAReq*/
11845
11846
11847
11848/**
11849 @brief Process Update Beacon Params Request function (called when Main FSM
11850 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011851
11852 @param pWDICtx: pointer to the WLAN DAL context
11853 pEventData: pointer to the event information structure
11854
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 @see
11856 @return Result of the function call
11857*/
11858WDI_Status
11859WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011860(
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 WDI_ControlBlockType* pWDICtx,
11862 WDI_EventInfoType* pEventData
11863)
11864{
11865 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11866 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 wpt_uint16 usDataOffset = 0;
11869 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11872
11873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 -------------------------------------------------------------------------*/
11876 if (( NULL == pEventData ) ||
11877 ( NULL == pEventData->pEventData) ||
11878 ( NULL == pEventData->pCBfnc))
11879 {
11880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 }
11885
11886 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11887 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11888 /*-----------------------------------------------------------------------
11889 Get message buffer
11890 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 sizeof(halUpdateBeaconParams),
11893 &pSendBuffer, &usDataOffset, &usSendSize))||
11894 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11895 {
11896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11897 "Unable to get send buffer in set bss key req %x %x %x",
11898 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 }
11902
11903 /*BSS Index of the BSS*/
11904 halUpdateBeaconParams.bssIdx =
11905 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11906 /*shortPreamble mode. HAL should update all the STA rates when it
11907 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11910 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11913 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11916
11917 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011919 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011924 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011925 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11930 halUpdateBeaconParams.fRIFSMode =
11931 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11934
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11936 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011937
11938 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011940
11941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11945 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011946}/*WDI_ProcessUpdateBeaconParamsReq*/
11947
11948
11949
11950/**
11951 @brief Process Send Beacon template Request function (called when Main FSM
11952 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011953
11954 @param pWDICtx: pointer to the WLAN DAL context
11955 pEventData: pointer to the event information structure
11956
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 @see
11958 @return Result of the function call
11959*/
11960WDI_Status
11961WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011962(
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 WDI_ControlBlockType* pWDICtx,
11964 WDI_EventInfoType* pEventData
11965)
11966{
11967 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11968 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 wpt_uint16 usDataOffset = 0;
11971 wpt_uint16 usSendSize = 0;
11972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11973
11974 tSendBeaconReqMsg halSendBeaconReq;
11975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 -------------------------------------------------------------------------*/
11978 if (( NULL == pEventData ) ||
11979 ( NULL == pEventData->pEventData ) ||
11980 ( NULL == pEventData->pCBfnc ))
11981 {
11982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 }
11987
11988 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11989 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11990 /*-----------------------------------------------------------------------
11991 Get message buffer
11992 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 sizeof(halSendBeaconReq.sendBeaconParam),
11995 &pSendBuffer, &usDataOffset, &usSendSize))||
11996 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11997 {
11998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11999 "Unable to get send buffer in send beacon req %x %x %x",
12000 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 }
12004
12005 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12006 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12007 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012009 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12010 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12011 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12012 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012015 /* usP2PIeOffset should be atleast greater than timIeOffset */
12016 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12017 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12018 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12019 {
12020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12021 "Invalid usP2PIeOffset %hu",
12022 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12023 WDI_ASSERT(0);
12024 return WDI_STATUS_E_FAILURE;
12025 }
12026
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012029
Jeff Johnsone7245742012-09-05 17:12:55 -070012030 wpalMemoryCopy( pSendBuffer+usDataOffset,
12031 &halSendBeaconReq.sendBeaconParam,
12032 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012033
12034 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012036
12037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12041 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012042}/*WDI_ProcessSendBeaconParamsReq*/
12043
12044/**
12045 @brief Process Update Beacon Params Request function (called when Main FSM
12046 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012047
12048 @param pWDICtx: pointer to the WLAN DAL context
12049 pEventData: pointer to the event information structure
12050
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 @see
12052 @return Result of the function call
12053*/
12054WDI_Status
12055WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012056(
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 WDI_ControlBlockType* pWDICtx,
12058 WDI_EventInfoType* pEventData
12059)
12060{
12061 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12062 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 wpt_uint16 usDataOffset = 0;
12065 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12068
12069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 -------------------------------------------------------------------------*/
12072 if (( NULL == pEventData ) ||
12073 ( NULL == pEventData->pEventData) ||
12074 ( NULL == pEventData->pCBfnc))
12075 {
12076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 }
12081
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12086 /*-----------------------------------------------------------------------
12087 Get message buffer
12088 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 sizeof(halUpdateProbeRspTmplParams),
12091 &pSendBuffer, &usDataOffset, &usSendSize))||
12092 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12093 {
12094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12095 "Unable to get send buffer in set bss key req %x %x %x",
12096 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 }
12100
12101 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 WDI_MAC_ADDR_LEN);
12104
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12107
12108 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12109 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012111
12112
12113 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12114 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12115 WDI_PROBE_REQ_BITMAP_IE_LEN);
12116
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 wpalMemoryCopy( pSendBuffer+usDataOffset,
12118 &halUpdateProbeRspTmplParams,
12119 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012120
12121 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123
12124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12128 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12129 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012130}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12131
12132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012135
12136 @param pWDICtx: pointer to the WLAN DAL context
12137 pEventData: pointer to the event information structure
12138
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 @see
12140 @return Result of the function call
12141*/
12142WDI_Status
12143WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012144(
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 WDI_ControlBlockType* pWDICtx,
12146 WDI_EventInfoType* pEventData
12147)
12148{
12149
12150 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12151 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12152
12153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 -------------------------------------------------------------------------*/
12156 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12161 {
12162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 }
12167
12168 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12171
12172 /*cache the wdi nv request message here if the the first fragment
12173 * To issue the request to HAL for the next fragment */
12174 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12175 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12177 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12179
12180 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12181 pWDICtx->pRspCBUserData = pEventData->pUserData;
12182 }
12183
12184 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12185}
12186
12187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012188 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012190
12191 @param pWDICtx: pointer to the WLAN DAL context
12192 pEventData: pointer to the event information structure
12193
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 @see
12195 @return Result of the function call
12196*/
12197WDI_Status WDI_ProcessSetMaxTxPowerReq
12198(
12199 WDI_ControlBlockType* pWDICtx,
12200 WDI_EventInfoType* pEventData
12201)
12202{
12203 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12204 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 wpt_uint16 usDataOffset = 0;
12207 wpt_uint16 usSendSize = 0;
12208 tSetMaxTxPwrReq halSetMaxTxPower;
12209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12210
12211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 -------------------------------------------------------------------------*/
12214 if (( NULL == pEventData ) ||
12215 ( NULL == pEventData->pEventData ) ||
12216 ( NULL == pEventData->pCBfnc ))
12217 {
12218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012222 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12227
12228 /*-----------------------------------------------------------------------
12229 Get message buffer
12230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012231if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12233 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012235)))
12236 {
12237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12238 "Unable to get Set Max Tx Power req %x %x %x",
12239 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012242 }
12243
12244 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12245 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12246 WDI_MAC_ADDR_LEN);
12247
12248 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12249 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12250 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253
12254 wpalMemoryCopy( pSendBuffer+usDataOffset,
12255 &halSetMaxTxPower.setMaxTxPwrParams,
12256 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012257
12258 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012260
12261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012262 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12265 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12266 WDI_SET_MAX_TX_POWER_RESP);
12267
Jeff Johnson295189b2012-06-20 16:38:30 -070012268}
12269
schangd82195a2013-03-13 18:41:24 -070012270/**
12271 @brief Process Set Tx Power Request function (called when Main
12272 FSM allows it)
12273
12274 @param pWDICtx: pointer to the WLAN DAL context
12275 pEventData: pointer to the event information structure
12276
12277 @see
12278 @return Result of the function call
12279*/
12280WDI_Status WDI_ProcessSetTxPowerReq
12281(
12282 WDI_ControlBlockType* pWDICtx,
12283 WDI_EventInfoType* pEventData
12284)
12285{
12286 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12287 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12288 wpt_uint8* pSendBuffer = NULL;
12289 wpt_uint16 usDataOffset = 0;
12290 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012291 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12293
12294 /*-------------------------------------------------------------------------
12295 Sanity check
12296 -------------------------------------------------------------------------*/
12297 if (( NULL == pEventData ) ||
12298 ( NULL == pEventData->pEventData ) ||
12299 ( NULL == pEventData->pCBfnc ))
12300 {
12301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12302 "%s: Invalid parameters", __func__);
12303 WDI_ASSERT(0);
12304 return WDI_STATUS_E_FAILURE;
12305 }
12306
12307 pwdiSetTxPowerParams =
12308 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12309 wdiSetTxPowerRspCb =
12310 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12311
12312 /*-----------------------------------------------------------------------
12313 Get message buffer
12314 -----------------------------------------------------------------------*/
12315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12316 sizeof(tSetTxPwrReqParams),
12317 &pSendBuffer, &usDataOffset, &usSendSize))||
12318 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12319 )))
12320 {
12321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12322 "Unable to get Set Max Tx Power req %x %x %x",
12323 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12324 WDI_ASSERT(0);
12325 return WDI_STATUS_E_FAILURE;
12326 }
12327
Leo Changa37e2a92013-03-25 17:39:58 -070012328 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12329 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12330 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012331
12332 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12333 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12334
12335 /*-------------------------------------------------------------------------
12336 Send Set Tx Power Request to HAL
12337 -------------------------------------------------------------------------*/
12338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12339 wdiSetTxPowerRspCb, pEventData->pUserData,
12340 WDI_SET_TX_POWER_RESP);
12341}
Jeff Johnson295189b2012-06-20 16:38:30 -070012342
12343/**
12344 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12345 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012346
12347 @param pWDICtx: pointer to the WLAN DAL context
12348 pEventData: pointer to the event information structure
12349
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 @see
12351 @return Result of the function call
12352*/
12353WDI_Status
12354WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012355(
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 WDI_ControlBlockType* pWDICtx,
12357 WDI_EventInfoType* pEventData
12358)
12359{
12360 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12361 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 wpt_uint16 usDataOffset = 0;
12364 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12367
12368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012370 -------------------------------------------------------------------------*/
12371 if (( NULL == pEventData ) ||
12372 ( NULL == pEventData->pEventData) ||
12373 ( NULL == pEventData->pCBfnc))
12374 {
12375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 }
12380
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12385 /*-----------------------------------------------------------------------
12386 Get message buffer
12387 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12389 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 sizeof(halSetP2PGONOAParams),
12391 &pSendBuffer, &usDataOffset, &usSendSize))||
12392 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12393 {
12394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12395 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12396 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 }
12400
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12405 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12414
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 wpalMemoryCopy( pSendBuffer+usDataOffset,
12416 &halSetP2PGONOAParams,
12417 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012418
12419 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012420 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012421
12422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12426 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12427 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012428}/*WDI_ProcessP2PGONOAReq*/
12429
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012430#ifdef FEATURE_WLAN_TDLS
12431
12432/**
12433 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12434 allows it)
12435
12436 @param pWDICtx: pointer to the WLAN DAL context
12437 pEventData: pointer to the event information structure
12438
12439 @see
12440 @return Result of the function call
12441*/
12442WDI_Status
12443WDI_ProcessTdlsLinkEstablishReq
12444(
12445 WDI_ControlBlockType* pWDICtx,
12446 WDI_EventInfoType* pEventData
12447)
12448{
12449 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12450 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12451 wpt_uint8* pSendBuffer = NULL;
12452 wpt_uint16 usDataOffset = 0;
12453 wpt_uint16 usSendSize = 0;
12454
12455 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12457
12458 /*-------------------------------------------------------------------------
12459 Sanity check
12460 -------------------------------------------------------------------------*/
12461 if (( NULL == pEventData ) ||
12462 ( NULL == pEventData->pEventData) ||
12463 ( NULL == pEventData->pCBfnc))
12464 {
12465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12466 "%s: Invalid parameters", __func__);
12467 WDI_ASSERT(0);
12468 return WDI_STATUS_E_FAILURE;
12469 }
12470 pwdiTDLSLinkEstablishReqParams =
12471 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12472 wdiTDLSLinkEstablishReqRspCb =
12473 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12474
12475
12476 /*-----------------------------------------------------------------------
12477 Get message buffer
12478 -----------------------------------------------------------------------*/
12479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12480 WDI_TDLS_LINK_ESTABLISH_REQ,
12481 sizeof(halSetTDLSLinkEstablishParams),
12482 &pSendBuffer, &usDataOffset, &usSendSize))||
12483 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12484 {
12485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12486 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12487 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12488 WDI_ASSERT(0);
12489 return WDI_STATUS_E_FAILURE;
12490 }
12491
12492 halSetTDLSLinkEstablishParams.staIdx =
12493 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12494 halSetTDLSLinkEstablishParams.bIsResponder =
12495 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12496 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12497 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12498 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12499 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12500 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12501 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12502 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12503 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12504 halSetTDLSLinkEstablishParams.aAck = 0;
12505 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12506 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12507 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12508
12509 wpalMemoryCopy( pSendBuffer+usDataOffset,
12510 &halSetTDLSLinkEstablishParams,
12511 sizeof(halSetTDLSLinkEstablishParams));
12512
12513 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12514 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12515
12516 /*-------------------------------------------------------------------------
12517 Send Update Probe Resp Template Request to HAL
12518 -------------------------------------------------------------------------*/
12519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12520 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12521 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12522 return 0;
12523}/*WDI_ProcessTdlsLinkEstablishReq*/
12524
12525
12526#endif
12527
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
12529
12530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 @param None
12534
12535 @see
12536 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012537*/
12538void
12539WDI_SetPowerStateCb
12540(
12541 wpt_status status,
12542 unsigned int dxePhyAddr,
12543 void *pContext
12544)
12545{
12546 wpt_status wptStatus;
12547 WDI_ControlBlockType *pCB = NULL;
12548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12549 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12550 {
12551 //it shouldn't happen, put an error msg
12552 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 /*
12554 * Trigger the event to bring the Enter BMPS req function to come
12555 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012556*/
12557 if( NULL != pContext )
12558 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 }
12561 else
12562 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 pCB = &gWDICb;
12565 }
12566 pCB->dxePhyAddr = dxePhyAddr;
12567 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12568 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12569 {
12570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12571 "Failed to set an event");
12572
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 }
12575 return;
12576}
12577
12578
12579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012582
12583 @param pWDICtx: pointer to the WLAN DAL context
12584 pEventData: pointer to the event information structure
12585
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 @see
12587 @return Result of the function call
12588*/
12589WDI_Status
12590WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012591(
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 WDI_ControlBlockType* pWDICtx,
12593 WDI_EventInfoType* pEventData
12594)
12595{
Jeff Johnson43971f52012-07-17 12:26:56 -070012596 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 wpt_uint16 usDataOffset = 0;
12600 wpt_uint16 usSendSize = 0;
12601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12602
12603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 -------------------------------------------------------------------------*/
12606 if (( NULL == pEventData ) ||
12607 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12608 {
12609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012612 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 }
12614
12615 /*-----------------------------------------------------------------------
12616 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 0,
12621 &pSendBuffer, &usDataOffset, &usSendSize))||
12622 ( usSendSize < (usDataOffset )))
12623 {
12624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12625 "Unable to get send buffer in Enter IMPS req %x %x",
12626 pEventData, wdiEnterImpsRspCb);
12627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012628 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 }
12630
12631 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012632 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12633 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 {
12635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12636 "WDI Init failed to reset an event");
12637
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012639 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 }
12641
12642 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012643 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12644 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12646 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12647 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012648 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012649 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012650
12651 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012652 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012653 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012654 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12655 WDI_SET_POWER_STATE_TIMEOUT);
12656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 {
12658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12659 "WDI Init failed to wait on an event");
12660
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012662 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 }
12664
12665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12669 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012670
12671fail:
12672 // Release the message buffer so we don't leak
12673 wpalMemoryFree(pSendBuffer);
12674
12675failRequest:
12676 //WDA should have failure check to avoid the memory leak
12677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012678}/*WDI_ProcessEnterImpsReq*/
12679
12680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012681 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012683
12684 @param pWDICtx: pointer to the WLAN DAL context
12685 pEventData: pointer to the event information structure
12686
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 @see
12688 @return Result of the function call
12689*/
12690WDI_Status
12691WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012692(
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 WDI_ControlBlockType* pWDICtx,
12694 WDI_EventInfoType* pEventData
12695)
12696{
12697 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 wpt_uint16 usDataOffset = 0;
12700 wpt_uint16 usSendSize = 0;
12701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12702
12703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 -------------------------------------------------------------------------*/
12706 if (( NULL == pEventData ) ||
12707 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12708 {
12709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 }
12714
12715 /*-----------------------------------------------------------------------
12716 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012717 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 0,
12721 &pSendBuffer, &usDataOffset, &usSendSize))||
12722 ( usSendSize < (usDataOffset )))
12723 {
12724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12725 "Unable to get send buffer in Exit IMPS req %x %x",
12726 pEventData, wdiExitImpsRspCb);
12727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12735 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012736}/*WDI_ProcessExitImpsReq*/
12737
12738/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012741
12742 @param pWDICtx: pointer to the WLAN DAL context
12743 pEventData: pointer to the event information structure
12744
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 @see
12746 @return Result of the function call
12747*/
12748WDI_Status
12749WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012750(
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 WDI_ControlBlockType* pWDICtx,
12752 WDI_EventInfoType* pEventData
12753)
12754{
12755 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12756 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 wpt_uint16 usDataOffset = 0;
12759 wpt_uint16 usSendSize = 0;
12760 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012761 wpt_status wptStatus;
12762
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12764
12765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 -------------------------------------------------------------------------*/
12768 if (( NULL == pEventData ) ||
12769 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12770 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12771 {
12772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012775 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 }
12777
12778 /*-----------------------------------------------------------------------
12779 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012783 sizeof(enterBmpsReq),
12784 &pSendBuffer, &usDataOffset, &usSendSize))||
12785 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12786 {
12787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12788 "Unable to get send buffer in Enter BMPS req %x %x %x",
12789 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12790 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012791 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 }
12793
12794 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012795 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12796 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 {
12798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12799 "WDI Init failed to reset an event");
12800
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012802 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 }
12804
12805 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012806 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12807 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12808 {
12809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12810 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12811 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012812 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012813 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012814
12815/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012817 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012818 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12819 WDI_SET_POWER_STATE_TIMEOUT);
12820 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 {
12822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12823 "WDI Init failed to wait on an event");
12824
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012826 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012827 }
12828
12829 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12830
12831 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12832 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12833 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12834 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12835
12836 // For CCX and 11R Roaming
12837 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12838 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12839 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12840
12841 wpalMemoryCopy( pSendBuffer+usDataOffset,
12842 &enterBmpsReq,
12843 sizeof(enterBmpsReq));
12844
12845 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012847
12848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12852 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012853
12854fail:
12855 // Release the message buffer so we don't leak
12856 wpalMemoryFree(pSendBuffer);
12857
12858failRequest:
12859 //WDA should have failure check to avoid the memory leak
12860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861}/*WDI_ProcessEnterBmpsReq*/
12862
12863/**
12864 @brief Process Exit BMPS Request function (called when Main FSM
12865 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012866
12867 @param pWDICtx: pointer to the WLAN DAL context
12868 pEventData: pointer to the event information structure
12869
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 @see
12871 @return Result of the function call
12872*/
12873WDI_Status
12874WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012875(
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 WDI_ControlBlockType* pWDICtx,
12877 WDI_EventInfoType* pEventData
12878)
12879{
12880 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12881 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 wpt_uint16 usDataOffset = 0;
12884 wpt_uint16 usSendSize = 0;
12885 tHalExitBmpsReqParams exitBmpsReq;
12886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12887
12888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 -------------------------------------------------------------------------*/
12891 if (( NULL == pEventData ) ||
12892 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12893 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12894 {
12895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 }
12900
12901 /*-----------------------------------------------------------------------
12902 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 sizeof(exitBmpsReq),
12907 &pSendBuffer, &usDataOffset, &usSendSize))||
12908 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12909 {
12910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12911 "Unable to get send buffer in Exit BMPS req %x %x %x",
12912 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 }
12916 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12917
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12919
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 wpalMemoryCopy( pSendBuffer+usDataOffset,
12921 &exitBmpsReq,
12922 sizeof(exitBmpsReq));
12923
12924 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926
12927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12931 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012932}/*WDI_ProcessExitBmpsReq*/
12933
12934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012937
12938 @param pWDICtx: pointer to the WLAN DAL context
12939 pEventData: pointer to the event information structure
12940
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 @see
12942 @return Result of the function call
12943*/
12944WDI_Status
12945WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012946(
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 WDI_ControlBlockType* pWDICtx,
12948 WDI_EventInfoType* pEventData
12949)
12950{
12951 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12952 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 wpt_uint16 usDataOffset = 0;
12955 wpt_uint16 usSendSize = 0;
12956 tUapsdReqParams enterUapsdReq;
12957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12958
12959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 -------------------------------------------------------------------------*/
12962 if (( NULL == pEventData ) ||
12963 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12964 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12965 {
12966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 }
12971
12972 /*-----------------------------------------------------------------------
12973 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 sizeof(enterUapsdReq),
12978 &pSendBuffer, &usDataOffset, &usSendSize))||
12979 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12980 {
12981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12982 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12983 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 }
12987
12988 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12989 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12990 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12991 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12992 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12993 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12994 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12995 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012997
Jeff Johnsone7245742012-09-05 17:12:55 -070012998 wpalMemoryCopy( pSendBuffer+usDataOffset,
12999 &enterUapsdReq,
13000 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013001
13002 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013004
13005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13009 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013010}/*WDI_ProcessEnterUapsdReq*/
13011
13012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013013 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013015
13016 @param pWDICtx: pointer to the WLAN DAL context
13017 pEventData: pointer to the event information structure
13018
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 @see
13020 @return Result of the function call
13021*/
13022WDI_Status
13023WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013024(
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 WDI_ControlBlockType* pWDICtx,
13026 WDI_EventInfoType* pEventData
13027)
13028{
13029 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013031 wpt_uint16 usDataOffset = 0;
13032 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013033 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13034 wpt_uint8 bssIdx = 0;
13035
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13037
13038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 -------------------------------------------------------------------------*/
13041 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013042 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13044 {
13045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 }
13050
13051 /*-----------------------------------------------------------------------
13052 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013053 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013056 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013058 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013059 {
13060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13061 "Unable to get send buffer in Exit UAPSD req %x %x",
13062 pEventData, wdiExitUapsdRspCb);
13063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 }
13066
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013067 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13068
13069 wpalMemoryCopy( pSendBuffer+usDataOffset,
13070 &bssIdx,
13071 sizeof(wpt_uint8));
13072
13073 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13074 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13075
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13080 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013081}/*WDI_ProcessExitUapsdReq*/
13082
13083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013086
13087 @param pWDICtx: pointer to the WLAN DAL context
13088 pEventData: pointer to the event information structure
13089
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 @see
13091 @return Result of the function call
13092*/
13093WDI_Status
13094WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013095(
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 WDI_ControlBlockType* pWDICtx,
13097 WDI_EventInfoType* pEventData
13098)
13099{
13100 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13101 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 wpt_uint16 usDataOffset = 0;
13104 wpt_uint16 usSendSize = 0;
13105 tUapsdInfo uapsdAcParamsReq;
13106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13107
13108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 -------------------------------------------------------------------------*/
13111 if (( NULL == pEventData ) ||
13112 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13113 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13114 {
13115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 }
13120
13121 /*-----------------------------------------------------------------------
13122 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 sizeof(uapsdAcParamsReq),
13127 &pSendBuffer, &usDataOffset, &usSendSize))||
13128 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13129 {
13130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13131 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13132 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 }
13136
13137 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13138 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13139 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13140 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13141 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13142 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13143
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 wpalMemoryCopy( pSendBuffer+usDataOffset,
13145 &uapsdAcParamsReq,
13146 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013147
13148 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150
13151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13155 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013156}/*WDI_ProcessSetUapsdAcParamsReq*/
13157
13158/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013161
13162 @param pWDICtx: pointer to the WLAN DAL context
13163 pEventData: pointer to the event information structure
13164
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 @see
13166 @return Result of the function call
13167*/
13168WDI_Status
13169WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013170(
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 WDI_ControlBlockType* pWDICtx,
13172 WDI_EventInfoType* pEventData
13173)
13174{
13175 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13176 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 wpt_uint16 usDataOffset = 0;
13179 wpt_uint16 usSendSize = 0;
13180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13181
13182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 -------------------------------------------------------------------------*/
13185 if (( NULL == pEventData ) ||
13186 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13187 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13188 {
13189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 }
13194
13195 /*-----------------------------------------------------------------------
13196 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13201 &pSendBuffer, &usDataOffset, &usSendSize))||
13202 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13203 {
13204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13205 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13206 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 }
13210
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 wpalMemoryCopy( pSendBuffer+usDataOffset,
13212 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13213 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013214
13215 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013217
13218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13222 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013223}/*WDI_ProcessUpdateUapsdParamsReq*/
13224
13225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13243 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
13247 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13248
13249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13250
13251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 -------------------------------------------------------------------------*/
13254 if (( NULL == pEventData ) ||
13255 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13256 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13257 {
13258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 }
13263
13264 /*-----------------------------------------------------------------------
13265 Get message buffer
13266 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 sizeof(halRxpFilterParams),
13269 &pSendBuffer, &usDataOffset, &usSendSize))||
13270 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13271 {
13272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13273 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13274 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 }
13278
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13283
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 wpalMemoryCopy( pSendBuffer+usDataOffset,
13285 &halRxpFilterParams,
13286 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013287
13288 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013290
13291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13295 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013296}/*WDI_ProcessConfigureRxpFilterReq*/
13297
13298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013300 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013301
13302 @param pWDICtx: pointer to the WLAN DAL context
13303 pEventData: pointer to the event information structure
13304
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 @see
13306 @return Result of the function call
13307*/
13308WDI_Status
13309WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013310(
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 WDI_ControlBlockType* pWDICtx,
13312 WDI_EventInfoType* pEventData
13313)
13314{
13315 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13316 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 wpt_uint16 usDataOffset = 0;
13319 wpt_uint16 usSendSize = 0;
13320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13321
13322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 -------------------------------------------------------------------------*/
13325 if (( NULL == pEventData ) ||
13326 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13327 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13328 {
13329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 }
13334
13335 /*-----------------------------------------------------------------------
13336 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013340 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13341 &pSendBuffer, &usDataOffset, &usSendSize))||
13342 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13343 {
13344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13345 "Unable to get send buffer in Set beacon filter req %x %x %x",
13346 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 }
13350
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 wpalMemoryCopy( pSendBuffer+usDataOffset,
13352 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13353 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13354 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13355 &pwdiBeaconFilterParams->aFilters[0],
13356 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013357
13358 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013360
13361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13365 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013366}/*WDI_ProcessSetBeaconFilterReq*/
13367
13368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013371
13372 @param pWDICtx: pointer to the WLAN DAL context
13373 pEventData: pointer to the event information structure
13374
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 @see
13376 @return Result of the function call
13377*/
13378WDI_Status
13379WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013380(
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 WDI_ControlBlockType* pWDICtx,
13382 WDI_EventInfoType* pEventData
13383)
13384{
13385 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13386 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013388 wpt_uint16 usDataOffset = 0;
13389 wpt_uint16 usSendSize = 0;
13390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13391
13392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 -------------------------------------------------------------------------*/
13395 if (( NULL == pEventData ) ||
13396 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13397 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13398 {
13399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 }
13404
13405 /*-----------------------------------------------------------------------
13406 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13411 &pSendBuffer, &usDataOffset, &usSendSize))||
13412 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13413 {
13414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13415 "Unable to get send buffer in remove beacon filter req %x %x %x",
13416 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 }
13420
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 wpalMemoryCopy( pSendBuffer+usDataOffset,
13422 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13423 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013424
13425 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013427
13428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13432 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013433}
13434
13435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013438
13439 @param pWDICtx: pointer to the WLAN DAL context
13440 pEventData: pointer to the event information structure
13441
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 @see
13443 @return Result of the function call
13444*/
13445WDI_Status
13446WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013447(
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 WDI_ControlBlockType* pWDICtx,
13449 WDI_EventInfoType* pEventData
13450)
13451{
13452 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13453 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 wpt_uint16 usDataOffset = 0;
13456 wpt_uint16 usSendSize = 0;
13457 tHalRSSIThresholds rssiThresholdsReq;
13458 WDI_Status ret_status = 0;
13459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13460
13461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 -------------------------------------------------------------------------*/
13464 if (( NULL == pEventData ) ||
13465 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13466 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13467 {
13468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 }
13473
13474 /*-----------------------------------------------------------------------
13475 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 sizeof(rssiThresholdsReq),
13480 &pSendBuffer, &usDataOffset, &usSendSize))||
13481 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13482 {
13483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13484 "Unable to get send buffer in remove beacon filter req %x %x %x",
13485 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 }
13489
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013501 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13510
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 wpalMemoryCopy( pSendBuffer+usDataOffset,
13512 &rssiThresholdsReq,
13513 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013514
13515 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517
13518 /*-------------------------------------------------------------------------
13519 Send Set threshold req to HAL
13520 -------------------------------------------------------------------------*/
13521 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13522 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13523 {
13524 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13525 // req. Then as a result of processing the threshold cross ind, we trigger
13526 // a Set threshold req, then we need to indicate to WDI that it needs to
13527 // go to busy state as a result of the indication as we sent a req in the
13528 // same WDI context.
13529 // Hence expected state transition is to busy.
13530 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13531 }
13532
13533 return ret_status;
13534}
13535
13536/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013539
13540 @param pWDICtx: pointer to the WLAN DAL context
13541 pEventData: pointer to the event information structure
13542
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 @see
13544 @return Result of the function call
13545*/
13546WDI_Status
13547WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013548(
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 WDI_ControlBlockType* pWDICtx,
13550 WDI_EventInfoType* pEventData
13551)
13552{
13553 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13554 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 wpt_uint16 usDataOffset = 0;
13557 wpt_uint16 usSendSize = 0;
13558 tHalHostOffloadReq hostOffloadParams;
13559 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013560 wpt_uint8 ucCurrentBSSSesIdx = 0;
13561 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013562
13563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13564
13565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013567 -------------------------------------------------------------------------*/
13568 if (( NULL == pEventData ) ||
13569 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13570 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13571 {
13572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013575 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 }
13577
13578 /*-----------------------------------------------------------------------
13579 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13584 &pSendBuffer, &usDataOffset, &usSendSize))||
13585 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13586 {
13587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13588 "Unable to get send buffer in host offload req %x %x %x",
13589 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13590 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013591 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 }
13593
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013594 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13595 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13596 &pBSSSes);
13597 if ( NULL == pBSSSes )
13598 {
13599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013600 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13601 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013602 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013603 }
13604
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13606 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013607
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13609 {
13610 // ARP Offload
13611 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13612 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13613 4);
13614 }
13615 else
13616 {
13617 // NS Offload
13618 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13619 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13620 16);
13621
13622#ifdef WLAN_NS_OFFLOAD
13623 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13624 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13625 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13626 16);
13627 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13628 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13629 16);
13630 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13631 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13632 16);
13633 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13634 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13635 16);
13636 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13637 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13638 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013639 nsOffloadParams.srcIPv6AddrValid =
13640 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13641
13642 nsOffloadParams.targetIPv6Addr1Valid =
13643 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13644
13645 nsOffloadParams.targetIPv6Addr2Valid =
13646 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13647
13648 nsOffloadParams.slotIndex =
13649 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013650
Jeff Johnson295189b2012-06-20 16:38:30 -070013651#endif // WLAN_NS_OFFLOAD
13652 }
13653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013654 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13655
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 // copy hostOffloadParams into pSendBuffer
13657 wpalMemoryCopy( pSendBuffer+usDataOffset,
13658 &hostOffloadParams,
13659 sizeof(hostOffloadParams));
13660
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013661 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013662 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013663 // copy nsOffloadParams into pSendBuffer
13664 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 &nsOffloadParams,
13666 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013667 }
13668 else
13669 {
13670#ifdef WLAN_NS_OFFLOAD
13671 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13672 {
13673 // copy nsOffloadParams into pSendBuffer
13674 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13675 &nsOffloadParams,
13676 sizeof(nsOffloadParams));
13677 }
13678#endif
13679 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013680
13681 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013683
13684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13688 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013689
13690fail:
13691 // Release the message buffer so we don't leak
13692 wpalMemoryFree(pSendBuffer);
13693
13694failRequest:
13695 //WDA should have failure check to avoid the memory leak
13696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013697}/*WDI_ProcessHostOffloadReq*/
13698
13699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013702
13703 @param pWDICtx: pointer to the WLAN DAL context
13704 pEventData: pointer to the event information structure
13705
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 @see
13707 @return Result of the function call
13708*/
13709WDI_Status
13710WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013711(
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 WDI_ControlBlockType* pWDICtx,
13713 WDI_EventInfoType* pEventData
13714)
13715{
13716 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13717 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 wpt_uint16 usDataOffset = 0;
13720 wpt_uint16 usSendSize = 0;
13721 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013722 wpt_uint8 ucCurrentBSSSesIdx = 0;
13723 WDI_BSSSessionType* pBSSSes = NULL;
13724
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13726
13727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 -------------------------------------------------------------------------*/
13730 if (( NULL == pEventData ) ||
13731 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13732 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13733 {
13734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13735 "Invalid parameters in Keep Alive req");
13736 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013737 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 }
13739
13740 /*-----------------------------------------------------------------------
13741 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 sizeof(keepAliveReq),
13746 &pSendBuffer, &usDataOffset, &usSendSize))||
13747 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13748 {
13749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13750 "Unable to get send buffer in keep alive req %x %x %x",
13751 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13752 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013753 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 }
13755
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013756 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13757 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13758 &pBSSSes);
13759 if ( NULL == pBSSSes )
13760 {
13761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013762 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013763 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013764 }
13765
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13767 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13768
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013769 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13772 {
13773 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13774 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13775 HAL_IPV4_ADDR_LEN);
13776 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13777 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 wpalMemoryCopy(keepAliveReq.destMacAddr,
13780 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13781 HAL_MAC_ADDR_LEN);
13782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013783
13784 wpalMemoryCopy( pSendBuffer+usDataOffset,
13785 &keepAliveReq,
13786 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013787
13788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13789 "Process keep alive req %d",sizeof(keepAliveReq));
13790
13791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13792 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13793
13794 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013796
13797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13798 "Sending keep alive req to HAL");
13799
13800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13804 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013805
13806fail:
13807 // Release the message buffer so we don't leak
13808 wpalMemoryFree(pSendBuffer);
13809
13810failRequest:
13811 //WDA should have failure check to avoid the memory leak
13812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013813}/*WDI_ProcessKeepAliveReq*/
13814
13815
13816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013819
13820 @param pWDICtx: pointer to the WLAN DAL context
13821 pEventData: pointer to the event information structure
13822
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 @see
13824 @return Result of the function call
13825*/
13826WDI_Status
13827WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013828(
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 WDI_ControlBlockType* pWDICtx,
13830 WDI_EventInfoType* pEventData
13831)
13832{
13833 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13834 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 wpt_uint16 usDataOffset = 0;
13837 wpt_uint16 usSendSize = 0;
13838 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013839 wpt_uint8 ucCurrentBSSSesIdx = 0;
13840 WDI_BSSSessionType* pBSSSes = NULL;
13841
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13843
13844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 -------------------------------------------------------------------------*/
13847 if (( NULL == pEventData ) ||
13848 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13849 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13850 {
13851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013854 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 }
13856
13857 /*-----------------------------------------------------------------------
13858 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 sizeof(wowlAddBcPtrnReq),
13863 &pSendBuffer, &usDataOffset, &usSendSize))||
13864 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13865 {
13866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13867 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13868 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13869 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013870 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 }
13872
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013873 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13874 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13875 &pBSSSes);
13876 if ( NULL == pBSSSes )
13877 {
13878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013879 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013880 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013881 }
13882
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013887 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13891
13892 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13893 {
13894 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13895 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13896 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13897 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13898 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13899 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13900 }
13901 else
13902 {
13903 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13904 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13905 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13906 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13907 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13908 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13909
13910 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13911 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13912 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13913 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13914 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13915 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13916 }
13917
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013918 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13919
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 wpalMemoryCopy( pSendBuffer+usDataOffset,
13921 &wowlAddBcPtrnReq,
13922 sizeof(wowlAddBcPtrnReq));
13923
13924 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013925 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013926
13927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013928 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13931 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013932fail:
13933 // Release the message buffer so we don't leak
13934 wpalMemoryFree(pSendBuffer);
13935
13936failRequest:
13937 //WDA should have failure check to avoid the memory leak
13938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013939}/*WDI_ProcessWowlAddBcPtrnReq*/
13940
13941/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013944
13945 @param pWDICtx: pointer to the WLAN DAL context
13946 pEventData: pointer to the event information structure
13947
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 @see
13949 @return Result of the function call
13950*/
13951WDI_Status
13952WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013953(
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 WDI_ControlBlockType* pWDICtx,
13955 WDI_EventInfoType* pEventData
13956)
13957{
13958 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13959 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 wpt_uint16 usDataOffset = 0;
13962 wpt_uint16 usSendSize = 0;
13963 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013964 wpt_uint8 ucCurrentBSSSesIdx = 0;
13965 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13967
13968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 -------------------------------------------------------------------------*/
13971 if (( NULL == pEventData ) ||
13972 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13973 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13974 {
13975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013978 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 }
13980
13981 /*-----------------------------------------------------------------------
13982 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 sizeof(wowlDelBcPtrnReq),
13987 &pSendBuffer, &usDataOffset, &usSendSize))||
13988 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13989 {
13990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13991 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13992 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13993 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013994 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 }
13996
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013997 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13998 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13999 &pBSSSes);
14000 if ( NULL == pBSSSes )
14001 {
14002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014003 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014004 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014005 }
14006
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014009
14010 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14011
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 wpalMemoryCopy( pSendBuffer+usDataOffset,
14013 &wowlDelBcPtrnReq,
14014 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014015
14016 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014018
14019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14023 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014024
14025fail:
14026 // Release the message buffer so we don't leak
14027 wpalMemoryFree(pSendBuffer);
14028
14029failRequest:
14030 //WDA should have failure check to avoid the memory leak
14031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014032}/*WDI_ProcessWowlDelBcPtrnReq*/
14033
14034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014035 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014037
14038 @param pWDICtx: pointer to the WLAN DAL context
14039 pEventData: pointer to the event information structure
14040
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 @see
14042 @return Result of the function call
14043*/
14044WDI_Status
14045WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014046(
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 WDI_ControlBlockType* pWDICtx,
14048 WDI_EventInfoType* pEventData
14049)
14050{
14051 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14052 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 wpt_uint16 usDataOffset = 0;
14055 wpt_uint16 usSendSize = 0;
14056 tHalWowlEnterParams wowlEnterReq;
14057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14058
14059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 -------------------------------------------------------------------------*/
14062 if (( NULL == pEventData ) ||
14063 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14064 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14065 {
14066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 }
14071
14072 /*-----------------------------------------------------------------------
14073 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 sizeof(wowlEnterReq),
14078 &pSendBuffer, &usDataOffset, &usSendSize))||
14079 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14080 {
14081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14082 "Unable to get send buffer in Wowl enter req %x %x %x",
14083 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 }
14087
Kumar Anand21a26022013-07-22 14:35:34 -070014088 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14089
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014094 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014102 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014103 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014104 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14106
14107#ifdef WLAN_WAKEUP_EVENTS
14108 wowlEnterReq.ucWoWEAPIDRequestEnable =
14109 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14110
14111 wowlEnterReq.ucWoWEAPOL4WayEnable =
14112 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14113
14114 wowlEnterReq.ucWowNetScanOffloadMatch =
14115 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14116
14117 wowlEnterReq.ucWowGTKRekeyError =
14118 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14119
14120 wowlEnterReq.ucWoWBSSConnLoss =
14121 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14122#endif // WLAN_WAKEUP_EVENTS
14123
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014124 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14125
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14127 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14128 sizeof(tSirMacAddr));
14129
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 wpalMemoryCopy( pSendBuffer+usDataOffset,
14131 &wowlEnterReq,
14132 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014133
14134 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014136
14137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14141 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014142}/*WDI_ProcessWowlEnterReq*/
14143
14144/**
14145 @brief Process Wowl exit Request function (called when Main FSM
14146 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014147
14148 @param pWDICtx: pointer to the WLAN DAL context
14149 pEventData: pointer to the event information structure
14150
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 @see
14152 @return Result of the function call
14153*/
14154WDI_Status
14155WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014156(
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 WDI_ControlBlockType* pWDICtx,
14158 WDI_EventInfoType* pEventData
14159)
14160{
14161 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014162 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 wpt_uint16 usDataOffset = 0;
14165 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014166 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14168
14169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 -------------------------------------------------------------------------*/
14172 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014173 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14175 {
14176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 }
14181
14182 /*-----------------------------------------------------------------------
14183 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014187 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014189 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 {
14191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14192 "Unable to get send buffer in Wowl Exit req %x %x",
14193 pEventData, wdiWowlExitCb);
14194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 }
14197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014198 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14199
14200 wpalMemoryCopy( pSendBuffer+usDataOffset,
14201 &wowlExitparams,
14202 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14207 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014208}/*WDI_ProcessWowlExitReq*/
14209
14210/**
14211 @brief Process Configure Apps Cpu Wakeup State Request function
14212 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014213
14214 @param pWDICtx: pointer to the WLAN DAL context
14215 pEventData: pointer to the event information structure
14216
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 @see
14218 @return Result of the function call
14219*/
14220WDI_Status
14221WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014222(
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 WDI_ControlBlockType* pWDICtx,
14224 WDI_EventInfoType* pEventData
14225)
14226{
14227 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14228 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 wpt_uint16 usDataOffset = 0;
14231 wpt_uint16 usSendSize = 0;
14232 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14234
14235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 -------------------------------------------------------------------------*/
14238 if (( NULL == pEventData ) ||
14239 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14240 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14241 {
14242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 }
14247
14248 /*-----------------------------------------------------------------------
14249 Get message buffer
14250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014252 sizeof(halCfgAppsCpuWakeupStateReqParams),
14253 &pSendBuffer, &usDataOffset, &usSendSize))||
14254 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14255 {
14256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14257 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14258 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 }
14262
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14265
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 wpalMemoryCopy( pSendBuffer+usDataOffset,
14267 &halCfgAppsCpuWakeupStateReqParams,
14268 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014269
14270 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014272
14273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14277 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14278 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014279}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14280
14281#ifdef WLAN_FEATURE_VOWIFI_11R
14282/**
14283 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14284 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014285
14286 @param pWDICtx: pointer to the WLAN DAL context
14287 pEventData: pointer to the event information structure
14288
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 @see
14290 @return Result of the function call
14291*/
14292WDI_Status
14293WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014294(
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 WDI_ControlBlockType* pWDICtx,
14296 WDI_EventInfoType* pEventData
14297)
14298{
14299 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14300 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 wpt_uint16 usDataOffset = 0;
14305 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 wpt_macAddr macBSSID;
14308 tAggrAddTsReq halAggrAddTsReq;
14309 int i;
14310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14311
14312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 -------------------------------------------------------------------------*/
14315 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14316 ( NULL == pEventData->pCBfnc ))
14317 {
14318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 }
14323 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14324 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14325 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14326 /*-------------------------------------------------------------------------
14327 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014328 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 -------------------------------------------------------------------------*/
14330 wpalMutexAcquire(&pWDICtx->wptMutex);
14331
14332 /*------------------------------------------------------------------------
14333 Find the BSS for which the request is made and identify WDI session
14334 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14336 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 &macBSSID))
14338 {
14339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14340 "This station does not exist in the WDI Station Table %d");
14341 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 }
14344
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14346 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14349 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14350 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014351
14352 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014355
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 /*------------------------------------------------------------------------
14357 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 ------------------------------------------------------------------------*/
14360 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14361 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14363 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14364 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014365
Jeff Johnsone7245742012-09-05 17:12:55 -070014366 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014367 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014368 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 }
14370
14371 wpalMutexRelease(&pWDICtx->wptMutex);
14372 /*-----------------------------------------------------------------------
14373 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 sizeof(tAggrAddTsParams),
14378 &pSendBuffer, &usDataOffset, &usSendSize))||
14379 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14380 {
14381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14382 "Unable to get send buffer in set bss key req %x %x %x",
14383 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 }
14387
Jeff Johnsone7245742012-09-05 17:12:55 -070014388 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14392
14393 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14394 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014397 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14401 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14404 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14407 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14410 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14413 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14416 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14419 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14422 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014427
14428
14429 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014443 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14459 }
14460
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 wpalMemoryCopy( pSendBuffer+usDataOffset,
14462 &halAggrAddTsReq,
14463 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014464
14465 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014467
14468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014469 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014474}/*WDI_ProcessAggrAddTSpecReq*/
14475#endif /* WLAN_FEATURE_VOWIFI_11R */
14476
14477/**
14478 @brief Process Shutdown Request function (called when Main FSM
14479 allows it)
14480
14481 @param pWDICtx: pointer to the WLAN DAL context
14482 pEventData: pointer to the event information structure
14483
14484 @see
14485 @return Result of the function call
14486*/
14487WDI_Status
14488WDI_ProcessShutdownReq
14489(
14490 WDI_ControlBlockType* pWDICtx,
14491 WDI_EventInfoType* pEventData
14492 )
14493{
14494 wpt_status wptStatus;
14495
14496
14497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14498
14499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 -------------------------------------------------------------------------*/
14502 if ( NULL == pEventData )
14503 {
14504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 WDI_ASSERT(0);
14507 return WDI_STATUS_E_FAILURE;
14508 }
14509
14510 wpalMutexAcquire(&pWDICtx->wptMutex);
14511
14512
14513 gWDIInitialized = eWLAN_PAL_FALSE;
14514 /*! TO DO: stop the data services */
14515 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14516 {
14517 /*Stop the STA Table !UT- check this logic again
14518 It is safer to do it here than on the response - because a stop is imminent*/
14519 WDI_STATableStop(pWDICtx);
14520
14521 /* Stop Transport Driver, DXE */
14522 WDTS_Stop(pWDICtx);
14523 }
14524
14525 /*Clear all pending request*/
14526 WDI_ClearPendingRequests(pWDICtx);
14527 /* Close Data transport*/
14528 /* FTM mode does not open Data Path */
14529 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14530 {
14531 WDTS_Close(pWDICtx);
14532 }
14533 /*Close the STA Table !UT- check this logic again*/
14534 WDI_STATableClose(pWDICtx);
14535 /*close the PAL */
14536 wptStatus = wpalClose(pWDICtx->pPALContext);
14537 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14538 {
14539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14540 "Failed to wpal Close %d", wptStatus);
14541 WDI_ASSERT(0);
14542 }
14543
14544 /*Transition back to init state*/
14545 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14546
14547 wpalMutexRelease(&pWDICtx->wptMutex);
14548
14549 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014551
14552
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014554}/*WDI_ProcessShutdownReq*/
14555
14556/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014558========================================================================*/
14559
14560/**
14561 @brief Process Start Response function (called when a response
14562 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014563
14564 @param pWDICtx: pointer to the WLAN DAL context
14565 pEventData: pointer to the event information structure
14566
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 @see
14568 @return Result of the function call
14569*/
14570WDI_Status
14571WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014572(
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 WDI_ControlBlockType* pWDICtx,
14574 WDI_EventInfoType* pEventData
14575)
14576{
14577 WDI_StartRspParamsType wdiRspParams;
14578 WDI_StartRspCb wdiStartRspCb = NULL;
14579
14580 tHalMacStartRspParams* startRspParams;
14581
14582#ifndef HAL_SELF_STA_PER_BSS
14583 WDI_AddStaParams wdiAddSTAParam = {0};
14584#endif
14585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14586
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 -------------------------------------------------------------------------*/
14591 if (( NULL == pEventData ) ||
14592 ( NULL == pEventData->pEventData) ||
14593 ( NULL == wdiStartRspCb ))
14594 {
14595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 }
14600
14601 /*-------------------------------------------------------------------------
14602 Extract response and send it to UMAC
14603 -------------------------------------------------------------------------*/
14604 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14605 {
14606 // not enough data was received
14607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14608 "Invalid response length in Start Resp Expect %x Rcvd %x",
14609 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 }
14613
14614 /*-------------------------------------------------------------------------
14615 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 -------------------------------------------------------------------------*/
14618 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14619
14620 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14621 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14622 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14623 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14624 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14625 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14626 wdiRspParams.wlanReportedVersion.major =
14627 startRspParams->wcnssWlanVersion.major;
14628 wdiRspParams.wlanReportedVersion.minor =
14629 startRspParams->wcnssWlanVersion.minor;
14630 wdiRspParams.wlanReportedVersion.version =
14631 startRspParams->wcnssWlanVersion.version;
14632 wdiRspParams.wlanReportedVersion.revision =
14633 startRspParams->wcnssWlanVersion.revision;
14634 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14635 startRspParams->wcnssCrmVersionString,
14636 sizeof(wdiRspParams.wcnssSoftwareVersion));
14637 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14638 startRspParams->wcnssWlanVersionString,
14639 sizeof(wdiRspParams.wcnssHardwareVersion));
14640 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14641
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014642 /*Save the HAL Version*/
14643 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14644
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 wpalMutexAcquire(&pWDICtx->wptMutex);
14646 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14647 {
14648 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14649
14650 /*Cache the start response for further use*/
14651 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 sizeof(pWDICtx->wdiCachedStartRspParams));
14654
14655 }
14656 else
14657 {
14658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14659 "Failed to start device with status %s(%d)",
14660 WDI_getHALStatusMsgString(startRspParams->status),
14661 startRspParams->status);
14662
14663 /*Set the expected state transition to stopped - because the start has
14664 failed*/
14665 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14666
14667 wpalMutexRelease(&pWDICtx->wptMutex);
14668
14669 /*Notify UMAC*/
14670 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014671
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14673
14674 /*Although the response is an error - it was processed by our function
14675 so as far as the caller is concerned this is a succesful reponse processing*/
14676 return WDI_STATUS_SUCCESS;
14677 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014678
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 wpalMutexRelease(&pWDICtx->wptMutex);
14680
14681 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14682 {
14683 /* FTM mode does not need to execute below */
14684 /* Notify UMAC */
14685 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14686 return WDI_STATUS_SUCCESS;
14687 }
14688
14689 /* START the Data transport */
14690 WDTS_startTransport(pWDICtx);
14691
14692 /*Start the STA Table !- check this logic again*/
14693 WDI_STATableStart(pWDICtx);
14694
14695#ifndef HAL_SELF_STA_PER_BSS
14696 /* Store the Self STA Index */
14697 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14698
14699 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14700 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14701 WDI_MAC_ADDR_LEN);
14702
14703 /* At this point add the self-STA */
14704
14705 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14706 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14707 /*! TO DO: wdiAddSTAParam.dpuSig */
14708 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14709 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14710 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14711
14712 //all DPU indices are the same for self STA
14713 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14714 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014715 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14717 WDI_MAC_ADDR_LEN);
14718 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14719 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14720
14721 /* Note: Since we don't get an explicit config STA request for self STA, we
14722 add the self STA upon receiving the Start response message. But the
14723 self STA entry in the table is deleted when WDI gets an explicit delete STA
14724 request */
14725 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14726#endif
14727
14728 /*Notify UMAC*/
14729 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14730
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014732}/*WDI_ProcessStartRsp*/
14733
14734
14735/**
14736 @brief Process Stop Response function (called when a response
14737 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014738
14739 @param pWDICtx: pointer to the WLAN DAL context
14740 pEventData: pointer to the event information structure
14741
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 @see
14743 @return Result of the function call
14744*/
14745WDI_Status
14746WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014747(
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 WDI_ControlBlockType* pWDICtx,
14749 WDI_EventInfoType* pEventData
14750)
14751{
14752 WDI_Status wdiStatus;
14753 WDI_StopRspCb wdiStopRspCb = NULL;
14754
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14757
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 -------------------------------------------------------------------------*/
14762 if (( NULL == pEventData ) ||
14763 ( NULL == pEventData->pEventData) ||
14764 ( NULL == wdiStopRspCb ))
14765 {
14766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 }
14771
14772 /*-------------------------------------------------------------------------
14773 Extract response and send it to UMAC
14774 -------------------------------------------------------------------------*/
14775 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14776 {
14777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14778 "Invalid response length in Stop Resp %x %x",
14779 pEventData->uEventDataSize);
14780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 }
14783
14784 /*-------------------------------------------------------------------------
14785 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14789 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 sizeof(halMacStopRspMsg.stopRspParams));
14791
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014793
14794 wpalMutexAcquire(&pWDICtx->wptMutex);
14795
14796 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 --------------------------------------------------------------------------*/
14799 if ( WDI_STATUS_SUCCESS != wdiStatus )
14800 {
14801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14802 "Failed to stop the device with status %s (%d)",
14803 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14804 halMacStopRspMsg.stopRspParams.status);
14805
Jeff Johnsone7245742012-09-05 17:12:55 -070014806 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14807
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014811
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14813
14814 /*Transition now as WDI may get preempted imediately after it sends
14815 up the Stop Response and it will not get to process the state transition
14816 from Main Rsp function*/
14817 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14818 wpalMutexRelease(&pWDICtx->wptMutex);
14819
14820 /*! TO DO: - STOP the Data transport */
14821
14822 /*Notify UMAC*/
14823 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14824
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014826}/*WDI_ProcessStopRsp*/
14827
14828/**
14829 @brief Process Close Rsp function (called when a response
14830 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014831
14832 @param pWDICtx: pointer to the WLAN DAL context
14833 pEventData: pointer to the event information structure
14834
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 @see
14836 @return Result of the function call
14837*/
14838WDI_Status
14839WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014840(
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 WDI_ControlBlockType* pWDICtx,
14842 WDI_EventInfoType* pEventData
14843)
14844{
14845 /*There is no close response comming from HAL - function just kept for
14846 simmetry */
14847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014849}/*WDI_ProcessCloseRsp*/
14850
14851
14852/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014853 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014854============================================================================*/
14855
14856/**
14857 @brief Process Init Scan Rsp function (called when a response
14858 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014859
14860 @param pWDICtx: pointer to the WLAN DAL context
14861 pEventData: pointer to the event information structure
14862
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 @see
14864 @return Result of the function call
14865*/
14866WDI_Status
14867WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014868(
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 WDI_ControlBlockType* pWDICtx,
14870 WDI_EventInfoType* pEventData
14871)
14872{
14873 WDI_Status wdiStatus;
14874 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014876 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14878
14879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 -------------------------------------------------------------------------*/
14882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14883 ( NULL == pEventData->pEventData))
14884 {
14885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 }
14890
14891 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14892 if( NULL == wdiInitScanRspCb)
14893 {
14894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014895 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 }
14899
14900 /*-------------------------------------------------------------------------
14901 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14905 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 sizeof(halInitScanRspMsg.initScanRspParams));
14907
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014909
14910 if ( pWDICtx->bInBmps )
14911 {
14912 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014913 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14914 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14916 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14917 WDI_ASSERT(0);
14918 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 }
14920
14921 /*Notify UMAC*/
14922 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14923
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014925}/*WDI_ProcessInitScanRsp*/
14926
14927
14928/**
14929 @brief Process Start Scan Rsp function (called when a response
14930 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014931
14932 @param pWDICtx: pointer to the WLAN DAL context
14933 pEventData: pointer to the event information structure
14934
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 @see
14936 @return Result of the function call
14937*/
14938WDI_Status
14939WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014940(
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 WDI_ControlBlockType* pWDICtx,
14942 WDI_EventInfoType* pEventData
14943)
14944{
14945 WDI_StartScanRspParamsType wdiStartScanParams;
14946 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014947
14948 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14950
14951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 -------------------------------------------------------------------------*/
14954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14955 ( NULL == pEventData->pEventData))
14956 {
14957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 }
14962
14963 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14964 if( NULL == wdiStartScanRspCb)
14965 {
14966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014967 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 }
14971
14972 /*-------------------------------------------------------------------------
14973 Extract response and send it to UMAC
14974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14976 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 sizeof(halStartScanRspMsg.startScanRspParams));
14978
14979 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14980 halStartScanRspMsg.startScanRspParams.status);
14981#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 halStartScanRspMsg.startScanRspParams.startTSF,
14986 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014987#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014988
14989 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14990 {
14991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14992 "Start scan failed with status %s (%d)",
14993 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14994 halStartScanRspMsg.startScanRspParams.status);
14995 /* send the status to UMAC, don't return from here*/
14996 }
14997
14998 /*Notify UMAC*/
14999 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15000
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015002
15003}/*WDI_ProcessStartScanRsp*/
15004
15005
15006/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015007 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015009
15010 @param pWDICtx: pointer to the WLAN DAL context
15011 pEventData: pointer to the event information structure
15012
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 @see
15014 @return Result of the function call
15015*/
15016WDI_Status
15017WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015018(
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 WDI_ControlBlockType* pWDICtx,
15020 WDI_EventInfoType* pEventData
15021)
15022{
15023 WDI_Status wdiStatus;
15024 tHalEndScanRspMsg halEndScanRspMsg;
15025 WDI_EndScanRspCb wdiEndScanRspCb;
15026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15027
15028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 -------------------------------------------------------------------------*/
15031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15032 ( NULL == pEventData->pEventData))
15033 {
15034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 }
15039
15040 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15041
15042 /*-------------------------------------------------------------------------
15043 Extract response and send it to UMAC
15044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15046 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 sizeof(halEndScanRspMsg.endScanRspParams));
15048
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015050
15051 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15052 {
15053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15054 "End Scan failed with status %s (%d )",
15055 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15056 halEndScanRspMsg.endScanRspParams.status);
15057 /* send the status to UMAC, don't return from here*/
15058 }
15059
15060 /*Notify UMAC*/
15061 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15062
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015064}/*WDI_ProcessEndScanRsp*/
15065
15066
15067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015070
15071 @param pWDICtx: pointer to the WLAN DAL context
15072 pEventData: pointer to the event information structure
15073
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 @see
15075 @return Result of the function call
15076*/
15077WDI_Status
15078WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015079(
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 WDI_ControlBlockType* pWDICtx,
15081 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015082)
Jeff Johnson295189b2012-06-20 16:38:30 -070015083{
15084 WDI_Status wdiStatus;
15085 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015086
15087 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15089
15090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 -------------------------------------------------------------------------*/
15093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15094 ( NULL == pEventData->pEventData))
15095 {
15096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 }
15101
15102 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15103
15104 /*-------------------------------------------------------------------------
15105 Extract response and send it to UMAC
15106 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15108 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15110
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015112
15113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 halFinishScanRspMsg.finishScanRspParams.status);
15116
15117 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15118 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15119 {
15120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15121 "Finish Scan failed with status %s (%d)",
15122 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15123 halFinishScanRspMsg.finishScanRspParams.status);
15124 /* send the status to UMAC, don't return from here*/
15125 }
15126
15127 /*Notify UMAC*/
15128 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15129
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015131}/*WDI_ProcessFinishScanRsp*/
15132
15133/**
15134 @brief Process Join Response function (called when a response
15135 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015136
15137 @param pWDICtx: pointer to the WLAN DAL context
15138 pEventData: pointer to the event information structure
15139
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 @see
15141 @return Result of the function call
15142*/
15143WDI_Status
15144WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015145(
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 WDI_ControlBlockType* pWDICtx,
15147 WDI_EventInfoType* pEventData
15148)
15149{
15150 WDI_Status wdiStatus;
15151 WDI_JoinRspCb wdiJoinRspCb;
15152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015153
15154 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15156
15157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 -------------------------------------------------------------------------*/
15160 if (( NULL == pWDICtx ) ||
15161 ( NULL == pWDICtx->pfncRspCB ) ||
15162 ( NULL == pEventData ) ||
15163 ( NULL == pEventData->pEventData))
15164 {
15165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 }
15170
15171 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15172
15173 /*-------------------------------------------------------------------------
15174 Extract response and send it to UMAC
15175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 sizeof(halJoinRspMsg.joinRspParams));
15179
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015181
15182 wpalMutexAcquire(&pWDICtx->wptMutex);
15183
15184 /*-----------------------------------------------------------------------
15185 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15190 {
15191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15193 "association no longer in progress %d - mysterious HAL response",
15194 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015195
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 }
15200
15201 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15202
15203 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015204 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 -----------------------------------------------------------------------*/
15206 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15207 {
15208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15209 "Join only allowed in Joining state - failure state is %d "
15210 "strange HAL response", pBSSSes->wdiAssocState);
15211
Jeff Johnsone7245742012-09-05 17:12:55 -070015212 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15213
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 }
15217
15218
15219 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 -----------------------------------------------------------------------*/
15222 if ( WDI_STATUS_SUCCESS != wdiStatus )
15223 {
15224 /*Association was failed by HAL - remove session*/
15225 WDI_DeleteSession(pWDICtx, pBSSSes);
15226
15227 /*Association no longer in progress */
15228 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15229
15230 /*Association no longer in progress - prepare pending assoc for processing*/
15231 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 }
15234 else
15235 {
15236 /*Transition to state Joining - this may be redundant as we are supposed
15237 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 }
15240
15241 wpalMutexRelease(&pWDICtx->wptMutex);
15242
15243 /*Notify UMAC*/
15244 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15245
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015247}/*WDI_ProcessJoinRsp*/
15248
15249
15250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015253
15254 @param pWDICtx: pointer to the WLAN DAL context
15255 pEventData: pointer to the event information structure
15256
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 @see
15258 @return Result of the function call
15259*/
15260WDI_Status
15261WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015262(
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ControlBlockType* pWDICtx,
15264 WDI_EventInfoType* pEventData
15265)
15266{
15267 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15268 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 WDI_BSSSessionType* pBSSSes = NULL;
15271
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15274 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015275
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15277
15278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 -------------------------------------------------------------------------*/
15281 if (( NULL == pEventData ) ||
15282 ( NULL == pEventData->pEventData))
15283 {
15284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 }
15289
15290 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15291
15292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15296 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 sizeof(halConfigBssRspMsg.configBssRspParams));
15298
15299 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15300 halConfigBssRspMsg.configBssRspParams.status);
15301 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15302 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15305 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015306
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015308
15309 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015311
15312 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015314
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015316
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15320 #endif
15321 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15322 halConfigBssRspMsg.configBssRspParams.staMac,
15323 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015324
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 wpalMutexAcquire(&pWDICtx->wptMutex);
15326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015329 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15330 wdiConfigBSSParams.macBSSID,
15331 &pBSSSes);
15332
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 /*-----------------------------------------------------------------------
15334 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 -----------------------------------------------------------------------*/
15337 if ( NULL == pBSSSes )
15338 {
15339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15340 "Association sequence for this BSS does not yet exist "
15341 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015342
15343 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15344
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015348
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 /*Save data for this BSS*/
15350 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15351 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15362 pBSSSes->bcastStaIdx =
15363 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015366
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 /*-------------------------------------------------------------------------
15368 Add Peer STA
15369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15372 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 wdiAddSTAParam.ucHTCapable =
15378 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15379 wdiAddSTAParam.ucStaType =
15380 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15381
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15384 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015386
15387 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15388 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15389 WDI_MAC_ADDR_LEN);
15390
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015404
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15406 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015407
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15409 /*-------------------------------------------------------------------------
15410 Add Broadcast STA only in AP mode
15411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015412 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015413 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 {
15415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15416 "Add BCAST STA to table for index: %d",
15417 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015418
15419 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015421
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15423 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15424 }
15425 wpalMutexRelease(&pWDICtx->wptMutex);
15426 }
15427 else
15428 {
15429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15430 "Config BSS RSP failed with status : %s(%d)",
15431 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 halConfigBssRspMsg.configBssRspParams.status);
15434
Jeff Johnsone7245742012-09-05 17:12:55 -070015435
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 /*Association was failed by HAL - remove session*/
15437 WDI_DeleteSession(pWDICtx, pBSSSes);
15438
15439 /*Association no longer in progress */
15440 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15441
15442 /*Association no longer in progress - prepare pending assoc for processing*/
15443 WDI_DequeueAssocRequest(pWDICtx);
15444
15445 }
15446
15447 /*Notify UMAC*/
15448 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15449
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015451}/*WDI_ProcessConfigBSSRsp*/
15452
15453
15454/**
15455 @brief Process Del BSS Response function (called when a response
15456 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015457
15458 @param pWDICtx: pointer to the WLAN DAL context
15459 pEventData: pointer to the event information structure
15460
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 @see
15462 @return Result of the function call
15463*/
15464WDI_Status
15465WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015466(
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 WDI_ControlBlockType* pWDICtx,
15468 WDI_EventInfoType* pEventData
15469)
15470{
15471 WDI_DelBSSRspParamsType wdiDelBSSParams;
15472 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 WDI_BSSSessionType* pBSSSes = NULL;
15475
Jeff Johnsone7245742012-09-05 17:12:55 -070015476 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15478
15479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 -------------------------------------------------------------------------*/
15482 if (( NULL == pEventData ) ||
15483 ( NULL == pEventData->pEventData))
15484 {
15485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015486 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 }
15490
15491 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15492
15493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15497 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 sizeof(halDelBssRspMsg.deleteBssRspParams));
15499
15500
15501 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015503
15504 wpalMutexAcquire(&pWDICtx->wptMutex);
15505
15506 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015507 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15510 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15511 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015512
15513 /*-----------------------------------------------------------------------
15514 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 -----------------------------------------------------------------------*/
15517 if ( NULL == pBSSSes )
15518 {
15519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15520 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015521 "association no longer in progress - mysterious HAL response");
15522
15523 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15524
15525 wpalMutexRelease(&pWDICtx->wptMutex);
15526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015528
15529 /*Extract BSSID for the response to UMAC*/
15530 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15531 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15532
15533 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15534
15535 /*-----------------------------------------------------------------------
15536 The current session will be deleted
15537 -----------------------------------------------------------------------*/
15538 WDI_DeleteSession(pWDICtx, pBSSSes);
15539
15540
15541 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15542 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015543 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015544 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015545 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015546
15547 /* Delete the STA's in this BSS */
15548 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15549
Jeff Johnson295189b2012-06-20 16:38:30 -070015550 wpalMutexRelease(&pWDICtx->wptMutex);
15551
15552 /*Notify UMAC*/
15553 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15554
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015556}/*WDI_ProcessDelBSSRsp*/
15557
15558/**
15559 @brief Process Post Assoc Rsp function (called when a response
15560 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015561
15562 @param pWDICtx: pointer to the WLAN DAL context
15563 pEventData: pointer to the event information structure
15564
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 @see
15566 @return Result of the function call
15567*/
15568WDI_Status
15569WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015570(
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 WDI_ControlBlockType* pWDICtx,
15572 WDI_EventInfoType* pEventData
15573)
15574{
15575 WDI_PostAssocRspParamsType wdiPostAssocParams;
15576 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15581
15582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 -------------------------------------------------------------------------*/
15585 if (( NULL == pEventData ) ||
15586 ( NULL == pEventData->pEventData))
15587 {
15588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 }
15593
15594 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15595
15596 /*-------------------------------------------------------------------------
15597 Extract response and send it to UMAC
15598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15600 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 sizeof(halPostAssocRspMsg.postAssocRspParams));
15602
15603 /*Extract the Post Assoc STA Params */
15604
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15611
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 wdiPostAssocParams.wdiStatus =
15613 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015614
15615 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15616 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15618 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 WDI_MAC_ADDR_LEN);
15620
15621 /* Extract Post Assoc BSS Params */
15622
Jeff Johnsone7245742012-09-05 17:12:55 -070015623 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15624 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15625 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015626
15627 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15628 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15631 .macSTA, WDI_MAC_ADDR_LEN);
15632
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15635
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15638
15639 wdiPostAssocParams.bssParams.ucBSSIdx =
15640 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15641
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15644
15645 wpalMutexAcquire(&pWDICtx->wptMutex);
15646
15647 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015653
15654 /*-----------------------------------------------------------------------
15655 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 -----------------------------------------------------------------------*/
15658 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15661 {
15662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15663 "Association sequence for this BSS does not yet exist or "
15664 "association no longer in progress - mysterious HAL response");
15665
Jeff Johnsone7245742012-09-05 17:12:55 -070015666 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15667
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 }
15671
15672 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 -----------------------------------------------------------------------*/
15675 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15676 {
15677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15678 "Post Assoc not allowed before JOIN - failing request "
15679 "strange HAL response");
15680
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15682
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 }
15686
15687 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 -----------------------------------------------------------------------*/
15690 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15691 {
15692 /*Association was failed by HAL - remove session*/
15693 WDI_DeleteSession(pWDICtx, pBSSSes);
15694 }
15695 else
15696 {
15697 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015699
15700 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15709
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15712 }
15713
15714 /*Association no longer in progress */
15715 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15716
15717 /*Association no longer in progress - prepare pending assoc for processing*/
15718 WDI_DequeueAssocRequest(pWDICtx);
15719
15720 wpalMutexRelease(&pWDICtx->wptMutex);
15721
15722 /*Notify UMAC*/
15723 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15724
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015726}/*WDI_ProcessPostAssocRsp*/
15727
15728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015731
15732 @param pWDICtx: pointer to the WLAN DAL context
15733 pEventData: pointer to the event information structure
15734
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 @see
15736 @return Result of the function call
15737*/
15738WDI_Status
15739WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015740(
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 WDI_ControlBlockType* pWDICtx,
15742 WDI_EventInfoType* pEventData
15743)
15744{
15745 WDI_DelSTARspParamsType wdiDelSTARsp;
15746 WDI_DelSTARspCb wdiDelSTARspCb;
15747 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15750
15751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 -------------------------------------------------------------------------*/
15754 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15755 ( NULL == pEventData->pEventData))
15756 {
15757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 }
15762
15763 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15764
15765 /*-------------------------------------------------------------------------
15766 Extract response and send it to UMAC
15767 -------------------------------------------------------------------------*/
15768 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 sizeof(halDelStaRspMsg.delStaRspParams));
15771
15772 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 wdiDelSTARsp.wdiStatus =
15774 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015775
15776 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15777
15778 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15779 if(staType == WDI_STA_ENTRY_SELF)
15780 {
15781 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15782
15783 /* At this point add the self-STA */
15784
15785 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15786 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15787 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15788
15789#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15790#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15791
15792 //all DPU indices are the same for self STA
15793 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15794 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15795 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15796 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15797 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15798 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015799
15800 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 }
15802 else
15803 {
15804 //Delete the station in the table
15805 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15806 }
15807
15808 /*Notify UMAC*/
15809 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15810
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015812}/*WDI_ProcessDelSTARsp*/
15813
15814
15815/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015817==========================================================================*/
15818
15819/**
15820 @brief Process Set BSS Key Rsp function (called when a response
15821 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015822
15823 @param pWDICtx: pointer to the WLAN DAL context
15824 pEventData: pointer to the event information structure
15825
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 @see
15827 @return Result of the function call
15828*/
15829WDI_Status
15830WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015831(
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 WDI_ControlBlockType* pWDICtx,
15833 WDI_EventInfoType* pEventData
15834)
15835{
15836 WDI_Status wdiStatus;
15837 eHalStatus halStatus;
15838 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15840
15841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 -------------------------------------------------------------------------*/
15844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15845 ( NULL == pEventData->pEventData))
15846 {
15847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 }
15852
15853 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15854
15855 /*-------------------------------------------------------------------------
15856 Extract response and send it to UMAC
15857 -------------------------------------------------------------------------*/
15858 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015860
15861 if ( eHAL_STATUS_SUCCESS != halStatus )
15862 {
15863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15864 "Set BSS Key failed with status %s (%d)",
15865 WDI_getHALStatusMsgString(halStatus),
15866 halStatus);
15867 /* send the status to UMAC, don't return from here*/
15868 }
15869
15870 /*Notify UMAC*/
15871 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15872
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015874}/*WDI_ProcessSetBssKeyRsp*/
15875
15876/**
15877 @brief Process Remove BSS Key Rsp function (called when a response
15878 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015879
15880 @param pWDICtx: pointer to the WLAN DAL context
15881 pEventData: pointer to the event information structure
15882
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 @see
15884 @return Result of the function call
15885*/
15886WDI_Status
15887WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015888(
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 WDI_ControlBlockType* pWDICtx,
15890 WDI_EventInfoType* pEventData
15891)
15892{
15893 WDI_Status wdiStatus;
15894 eHalStatus halStatus;
15895 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15897
15898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 -------------------------------------------------------------------------*/
15901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15902 ( NULL == pEventData->pEventData))
15903 {
15904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 }
15909
15910 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15911
15912 /*-------------------------------------------------------------------------
15913 Extract response and send it to UMAC
15914 -------------------------------------------------------------------------*/
15915 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015917
15918 if ( eHAL_STATUS_SUCCESS != halStatus )
15919 {
15920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15921 "Remove BSS Key failed with status %s (%d )",
15922 WDI_getHALStatusMsgString(halStatus),
15923 halStatus);
15924 /* send the status to UMAC, don't return from here*/
15925 }
15926
15927 /*Notify UMAC*/
15928 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15929
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015931}/*WDI_ProcessSetBssKeyRsp*/
15932
15933
15934/**
15935 @brief Process Set STA Key Rsp function (called when a response
15936 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015937
15938 @param pWDICtx: pointer to the WLAN DAL context
15939 pEventData: pointer to the event information structure
15940
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 @see
15942 @return Result of the function call
15943*/
15944WDI_Status
15945WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015946(
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 WDI_ControlBlockType* pWDICtx,
15948 WDI_EventInfoType* pEventData
15949)
15950{
15951 WDI_Status wdiStatus;
15952 eHalStatus halStatus;
15953 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15955
15956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 -------------------------------------------------------------------------*/
15959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15960 ( NULL == pEventData->pEventData))
15961 {
15962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 }
15967
15968 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15969
15970 /*-------------------------------------------------------------------------
15971 Extract response and send it to UMAC
15972 -------------------------------------------------------------------------*/
15973 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015974 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015975
15976 if ( eHAL_STATUS_SUCCESS != halStatus )
15977 {
15978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15979 "Set STA Key failed with status %s (%d)",
15980 WDI_getHALStatusMsgString(halStatus),
15981 halStatus);
15982 /* send the status to UMAC, don't return from here*/
15983 }
15984
15985 /*Notify UMAC*/
15986 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15987
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015989}/*WDI_ProcessSetSTAKeyRsp*/
15990
15991/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015994
15995 @param pWDICtx: pointer to the WLAN DAL context
15996 pEventData: pointer to the event information structure
15997
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 @see
15999 @return Result of the function call
16000*/
16001WDI_Status
16002WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016003(
Jeff Johnson295189b2012-06-20 16:38:30 -070016004 WDI_ControlBlockType* pWDICtx,
16005 WDI_EventInfoType* pEventData
16006)
16007{
16008 WDI_Status wdiStatus;
16009 eHalStatus halStatus;
16010 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16012
16013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016015 -------------------------------------------------------------------------*/
16016 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16017 ( NULL == pEventData->pEventData))
16018 {
16019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 }
16024
16025 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16026
16027 /*-------------------------------------------------------------------------
16028 Extract response and send it to UMAC
16029 -------------------------------------------------------------------------*/
16030 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016032
16033 if ( eHAL_STATUS_SUCCESS != halStatus )
16034 {
16035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16036 "Remove STA Key failed with status %s (%d)",
16037 WDI_getHALStatusMsgString(halStatus),
16038 halStatus);
16039 /* send the status to UMAC, don't return from here*/
16040 }
16041
16042 /*Notify UMAC*/
16043 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16044
Jeff Johnsone7245742012-09-05 17:12:55 -070016045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016046}/*WDI_ProcessRemoveStaKeyRsp*/
16047
16048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016051
16052 @param pWDICtx: pointer to the WLAN DAL context
16053 pEventData: pointer to the event information structure
16054
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 @see
16056 @return Result of the function call
16057*/
16058WDI_Status
16059WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016060(
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 WDI_ControlBlockType* pWDICtx,
16062 WDI_EventInfoType* pEventData
16063)
16064{
16065 WDI_Status wdiStatus;
16066 eHalStatus halStatus;
16067 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16069
16070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 -------------------------------------------------------------------------*/
16073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16074 ( NULL == pEventData->pEventData))
16075 {
16076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 }
16081
16082 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16083
16084 /*-------------------------------------------------------------------------
16085 Extract response and send it to UMAC
16086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 wpalMemoryCopy( &halStatus,
16088 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 sizeof(halStatus));
16090
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016092
16093 if ( eHAL_STATUS_SUCCESS != halStatus )
16094 {
16095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16096 "Set STA Key failed with status %s (%d)",
16097 WDI_getHALStatusMsgString(halStatus),
16098 halStatus);
16099 /* send the status to UMAC, don't return from here*/
16100 }
16101
16102 /*Notify UMAC*/
16103 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16104
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016106}/*WDI_ProcessSetSTABcastKeyRsp*/
16107
16108/**
16109 @brief Process Remove STA Bcast Key Rsp function (called when a
16110 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016111
16112 @param pWDICtx: pointer to the WLAN DAL context
16113 pEventData: pointer to the event information structure
16114
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 @see
16116 @return Result of the function call
16117*/
16118WDI_Status
16119WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016120(
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 WDI_ControlBlockType* pWDICtx,
16122 WDI_EventInfoType* pEventData
16123)
16124{
16125 WDI_Status wdiStatus;
16126 eHalStatus halStatus;
16127 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16129
16130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 -------------------------------------------------------------------------*/
16133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16134 ( NULL == pEventData->pEventData))
16135 {
16136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 }
16141
16142 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16143
16144 /*-------------------------------------------------------------------------
16145 Extract response and send it to UMAC
16146 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 wpalMemoryCopy( &halStatus,
16148 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 sizeof(halStatus));
16150
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016152
16153 if ( eHAL_STATUS_SUCCESS != halStatus )
16154 {
16155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16156 "Remove STA Key failed with status %s (%d)",
16157 WDI_getHALStatusMsgString(halStatus),
16158 halStatus);
16159 /* send the status to UMAC, don't return from here*/
16160 }
16161
16162 /*Notify UMAC*/
16163 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16164
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016166}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16167
16168
16169/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016171==========================================================================*/
16172
16173/**
16174 @brief Process Add TSpec Rsp function (called when a response
16175 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016176
16177 @param pWDICtx: pointer to the WLAN DAL context
16178 pEventData: pointer to the event information structure
16179
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 @see
16181 @return Result of the function call
16182*/
16183WDI_Status
16184WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016185(
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 WDI_ControlBlockType* pWDICtx,
16187 WDI_EventInfoType* pEventData
16188)
16189{
16190 WDI_Status wdiStatus;
16191 eHalStatus halStatus;
16192 WDI_AddTsRspCb wdiAddTsRspCb;
16193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16194
16195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 -------------------------------------------------------------------------*/
16198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16199 ( NULL == pEventData->pEventData))
16200 {
16201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 }
16206
16207 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16208
16209 /*-------------------------------------------------------------------------
16210 Extract response and send it to UMAC
16211 -------------------------------------------------------------------------*/
16212 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016214
16215 /*Notify UMAC*/
16216 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16217
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016219}/*WDI_ProcessAddTSpecRsp*/
16220
16221
16222/**
16223 @brief Process Del TSpec Rsp function (called when a response
16224 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016225
16226 @param pWDICtx: pointer to the WLAN DAL context
16227 pEventData: pointer to the event information structure
16228
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 @see
16230 @return Result of the function call
16231*/
16232WDI_Status
16233WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016234(
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 WDI_ControlBlockType* pWDICtx,
16236 WDI_EventInfoType* pEventData
16237)
16238{
16239 WDI_Status wdiStatus;
16240 eHalStatus halStatus;
16241 WDI_DelTsRspCb wdiDelTsRspCb;
16242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16243
16244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 -------------------------------------------------------------------------*/
16247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16248 ( NULL == pEventData->pEventData))
16249 {
16250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 }
16255
16256 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16257
16258 /*-------------------------------------------------------------------------
16259 Extract response and send it to UMAC
16260 -------------------------------------------------------------------------*/
16261 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016263
16264 /*Notify UMAC*/
16265 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16266
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016268}/*WDI_ProcessDelTSpecRsp*/
16269
16270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016273
16274 @param pWDICtx: pointer to the WLAN DAL context
16275 pEventData: pointer to the event information structure
16276
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 @see
16278 @return Result of the function call
16279*/
16280WDI_Status
16281WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016282(
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 WDI_ControlBlockType* pWDICtx,
16284 WDI_EventInfoType* pEventData
16285)
16286{
16287 WDI_Status wdiStatus;
16288 eHalStatus halStatus;
16289 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16291
16292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 -------------------------------------------------------------------------*/
16295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16296 ( NULL == pEventData->pEventData))
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303
16304 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16305
16306 /*-------------------------------------------------------------------------
16307 Extract response and send it to UMAC
16308 -------------------------------------------------------------------------*/
16309 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016311
16312 /*Notify UMAC*/
16313 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16314
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016316}/*WDI_ProcessUpdateEDCAParamsRsp*/
16317
16318
16319/**
16320 @brief Process Add BA Rsp function (called when a response
16321 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016322
16323 @param pWDICtx: pointer to the WLAN DAL context
16324 pEventData: pointer to the event information structure
16325
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 @see
16327 @return Result of the function call
16328*/
16329WDI_Status
16330WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016331(
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 WDI_ControlBlockType* pWDICtx,
16333 WDI_EventInfoType* pEventData
16334)
16335{
16336 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16337
16338 tAddBASessionRspParams halBASessionRsp;
16339 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16340
Jeff Johnsone7245742012-09-05 17:12:55 -070016341
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16343
16344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 -------------------------------------------------------------------------*/
16347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16348 ( NULL == pEventData->pEventData))
16349 {
16350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 }
16355
16356 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16357
16358 /*-------------------------------------------------------------------------
16359 Extract response and send it to UMAC
16360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016361 wpalMemoryCopy( &halBASessionRsp,
16362 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 sizeof(halBASessionRsp));
16364
16365 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16366
Jeff Johnson43971f52012-07-17 12:26:56 -070016367 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 {
16369 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16370 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16371 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16372 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16373 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16374 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16375 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16376 }
16377
16378 /*Notify UMAC*/
16379 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16380
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016382}/*WDI_ProcessAddSessionBARsp*/
16383
16384
16385/**
16386 @brief Process Del BA Rsp function (called when a response
16387 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016388
16389 @param pWDICtx: pointer to the WLAN DAL context
16390 pEventData: pointer to the event information structure
16391
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 @see
16393 @return Result of the function call
16394*/
16395WDI_Status
16396WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016397(
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 WDI_ControlBlockType* pWDICtx,
16399 WDI_EventInfoType* pEventData
16400)
16401{
16402 WDI_Status wdiStatus;
16403 eHalStatus halStatus;
16404 WDI_DelBARspCb wdiDelBARspCb;
16405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16406
16407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 -------------------------------------------------------------------------*/
16410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16411 ( NULL == pEventData->pEventData))
16412 {
16413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 }
16418
16419 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16420
16421 /*-------------------------------------------------------------------------
16422 Extract response and send it to UMAC
16423 -------------------------------------------------------------------------*/
16424 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016425 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016426
16427 if ( eHAL_STATUS_SUCCESS == halStatus )
16428 {
16429 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16430 }
16431
16432 /*Notify UMAC*/
16433 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16434
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016436}/*WDI_ProcessDelBARsp*/
16437
16438#ifdef FEATURE_WLAN_CCX
16439/**
16440 @brief Process TSM Stats Rsp function (called when a response
16441 is being received over the bus from HAL)
16442
16443 @param pWDICtx: pointer to the WLAN DAL context
16444 pEventData: pointer to the event information structure
16445
16446 @see
16447 @return Result of the function call
16448*/
16449WDI_Status
16450WDI_ProcessTsmStatsRsp
16451(
16452 WDI_ControlBlockType* pWDICtx,
16453 WDI_EventInfoType* pEventData
16454)
16455{
16456 WDI_TsmRspCb wdiTsmStatsRspCb;
16457 tTsmStatsRspMsg halTsmStatsRspMsg;
16458 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16460
16461 /*-------------------------------------------------------------------------
16462 Sanity check
16463 -------------------------------------------------------------------------*/
16464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16465 ( NULL == pEventData->pEventData))
16466 {
16467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 WDI_ASSERT(0);
16470 return WDI_STATUS_E_FAILURE;
16471 }
16472
16473 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16474
16475 /*-------------------------------------------------------------------------
16476 Unpack HAL Response Message - the header was already extracted by the
16477 main Response Handling procedure
16478 -------------------------------------------------------------------------*/
16479 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16480 pEventData->pEventData,
16481 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16482
16483 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16484 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16485 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16486 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16487 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16488 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16489 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16490 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16491 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16492 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16493 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16494 halTsmStatsRspMsg.tsmStatsRspParams.status);
16495
16496 /*Notify UMAC*/
16497 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16498
16499 return WDI_STATUS_SUCCESS;
16500}/*WDI_ProcessTsmStatsRsp*/
16501
16502#endif
16503
16504
16505
16506/**
16507 @brief Process Flush AC Rsp function (called when a response
16508 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016509
16510 @param pWDICtx: pointer to the WLAN DAL context
16511 pEventData: pointer to the event information structure
16512
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 @see
16514 @return Result of the function call
16515*/
16516WDI_Status
16517WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016518(
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 WDI_ControlBlockType* pWDICtx,
16520 WDI_EventInfoType* pEventData
16521)
16522{
16523 WDI_Status wdiStatus;
16524 eHalStatus halStatus;
16525 WDI_FlushAcRspCb wdiFlushAcRspCb;
16526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16527
16528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 -------------------------------------------------------------------------*/
16531 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16532 ( NULL == pEventData->pEventData))
16533 {
16534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 }
16539
16540 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16541
16542 /*-------------------------------------------------------------------------
16543 Extract response and send it to UMAC
16544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 wpalMemoryCopy( &halStatus,
16546 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016547 sizeof(halStatus));
16548
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016550
16551 /*Notify UMAC*/
16552 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16553
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016555}/*WDI_ProcessFlushAcRsp*/
16556
16557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016560
16561 @param pWDICtx: pointer to the WLAN DAL context
16562 pEventData: pointer to the event information structure
16563
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 @see
16565 @return Result of the function call
16566*/
16567WDI_Status
16568WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016569(
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 WDI_ControlBlockType* pWDICtx,
16571 WDI_EventInfoType* pEventData
16572)
16573{
16574 WDI_Status wdiStatus;
16575 eHalStatus halStatus;
16576 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16578
16579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 -------------------------------------------------------------------------*/
16582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16583 ( NULL == pEventData->pEventData))
16584 {
16585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 }
16590
16591 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16592
16593 /*-------------------------------------------------------------------------
16594 Extract response and send it to UMAC
16595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 wpalMemoryCopy( &halStatus,
16597 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016598 sizeof(halStatus));
16599
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016601
16602 /*Notify UMAC*/
16603 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16604
Jeff Johnsone7245742012-09-05 17:12:55 -070016605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016606}/*WDI_ProcessBtAmpEventRsp*/
16607
16608
16609/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016612
16613 @param pWDICtx: pointer to the WLAN DAL context
16614 pEventData: pointer to the event information structure
16615
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 @see
16617 @return Result of the function call
16618*/
16619WDI_Status
16620WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016621(
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 WDI_ControlBlockType* pWDICtx,
16623 WDI_EventInfoType* pEventData
16624)
16625{
16626 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16627 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16628 tAddStaSelfRspMsg halAddStaSelfRsp;
16629 WDI_AddStaParams wdiAddSTAParam = {0};
16630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16631
16632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 -------------------------------------------------------------------------*/
16635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16636 ( NULL == pEventData->pEventData))
16637 {
16638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 }
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16646
16647 /*-------------------------------------------------------------------------
16648 Extract response and send it to UMAC
16649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16651 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16653
16654
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 wdiAddSTASelfParams.wdiStatus =
16656 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016657
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16664
16665 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16666 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16667 WDI_MAC_ADDR_LEN);
16668
16669
16670#ifdef HAL_SELF_STA_PER_BSS
16671
16672 /* At this point add the self-STA */
16673
16674 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16675 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16676 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16677
16678 //all DPU indices are the same for self STA
16679
16680 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16683 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16684 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16685 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16686 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16687
16688 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16689 WDI_MAC_ADDR_LEN);
16690
16691 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16692 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16696 {
16697 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16698 }
16699#endif
16700
16701 /*Notify UMAC*/
16702 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16703
Jeff Johnsone7245742012-09-05 17:12:55 -070016704 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016705}/*WDI_ProcessAddSTASelfRsp*/
16706
16707
16708
16709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016712
16713 @param pWDICtx: pointer to the WLAN DAL context
16714 pEventData: pointer to the event information structure
16715
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 @see
16717 @return Result of the function call
16718*/
16719WDI_Status
16720WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016721(
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_ControlBlockType* pWDICtx,
16723 WDI_EventInfoType* pEventData
16724)
16725{
16726 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16727 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16728 tDelStaSelfRspParams delStaSelfRspParams;
16729 wpt_uint8 ucStaIdx;
16730
16731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16732
16733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 -------------------------------------------------------------------------*/
16736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16737 ( NULL == pEventData->pEventData))
16738 {
16739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 }
16744
16745 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16746
16747 /*-------------------------------------------------------------------------
16748 Extract response and send it to UMAC
16749 -------------------------------------------------------------------------*/
16750
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 (wpt_uint8*)pEventData->pEventData,
16753 sizeof(tDelStaSelfRspParams));
16754
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 wdiDelStaSelfRspParams.wdiStatus =
16756 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016757
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16760 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16761 {
16762 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 delStaSelfRspParams.selfMacAddr,
16765 &ucStaIdx);
16766 if(WDI_STATUS_E_FAILURE == wdiStatus)
16767 {
16768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016769 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 }
16773 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16774 }
16775
16776 /*Notify UMAC*/
16777 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16778
16779 return WDI_STATUS_SUCCESS;
16780}
16781
Jeff Johnsone7245742012-09-05 17:12:55 -070016782#ifdef FEATURE_OEM_DATA_SUPPORT
16783/**
16784 @brief Start Oem Data Rsp function (called when a
16785 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016786
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 @param pWDICtx: pointer to the WLAN DAL context
16788 pEventData: pointer to the event information structure
16789
16790 @see
16791 @return Result of the function call
16792*/
16793#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16794
16795WDI_Status
16796WDI_ProcessStartOemDataRsp
16797(
16798 WDI_ControlBlockType* pWDICtx,
16799 WDI_EventInfoType* pEventData
16800)
16801{
16802 WDI_oemDataRspCb wdiOemDataRspCb;
16803 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16804 tStartOemDataRspParams* halStartOemDataRspParams;
16805
16806 /*-------------------------------------------------------------------------
16807 Sanity check
16808 -------------------------------------------------------------------------*/
16809 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16810 ( NULL == pEventData->pEventData))
16811 {
16812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016813 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 WDI_ASSERT(0);
16815 return WDI_STATUS_E_FAILURE;
16816 }
16817
16818 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16819
16820 /*-------------------------------------------------------------------------
16821 Extract response and send it to UMAC
16822 -------------------------------------------------------------------------*/
16823 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16824
16825
16826 //It is the responsibility of the application code to check for failure
16827 //conditions!
16828
16829 //Allocate memory for WDI OEM DATA RSP structure
16830 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16831
16832 if(NULL == wdiOemDataRspParams)
16833 {
16834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16835 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16836 pWDICtx, pEventData, pEventData->pEventData);
16837 WDI_ASSERT(0);
16838 return WDI_STATUS_E_FAILURE;
16839 }
16840
16841 /* Populate WDI structure members */
16842 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16843
16844 /*Notify UMAC*/
16845 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16846
16847 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16848 wpalMemoryFree(wdiOemDataRspParams);
16849
16850 return WDI_STATUS_SUCCESS;
16851}/*WDI_PrcoessStartOemDataRsp*/
16852#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016853
16854/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016855 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016856===========================================================================*/
16857
16858/**
16859 @brief Process Channel Switch Rsp function (called when a response
16860 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016861
16862 @param pWDICtx: pointer to the WLAN DAL context
16863 pEventData: pointer to the event information structure
16864
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 @see
16866 @return Result of the function call
16867*/
16868WDI_Status
16869WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016870(
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 WDI_ControlBlockType* pWDICtx,
16872 WDI_EventInfoType* pEventData
16873)
16874{
16875 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16876 WDI_SwitchChRspCb wdiChSwitchRspCb;
16877 tSwitchChannelRspParams halSwitchChannelRsp;
16878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16879
16880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 -------------------------------------------------------------------------*/
16883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16884 ( NULL == pEventData->pEventData))
16885 {
16886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 }
16891
16892 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16893
16894 /*-------------------------------------------------------------------------
16895 Extract response and send it to UMAC
16896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 (wpt_uint8*)pEventData->pEventData,
16899 sizeof(halSwitchChannelRsp));
16900
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 wdiSwitchChRsp.wdiStatus =
16902 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16904
16905#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016907#endif
16908
16909 /*Notify UMAC*/
16910 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16911
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016913}/*WDI_ProcessChannelSwitchRsp*/
16914
16915
16916/**
16917 @brief Process Config STA Rsp function (called when a response
16918 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016919
16920 @param pWDICtx: pointer to the WLAN DAL context
16921 pEventData: pointer to the event information structure
16922
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 @see
16924 @return Result of the function call
16925*/
16926WDI_Status
16927WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016928(
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 WDI_ControlBlockType* pWDICtx,
16930 WDI_EventInfoType* pEventData
16931)
16932{
16933 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16934 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16935 WDI_AddStaParams wdiAddSTAParam;
16936
16937 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016939
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16942
16943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 -------------------------------------------------------------------------*/
16946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16947 ( NULL == pEventData->pEventData))
16948 {
16949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 }
16954
16955 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16956
16957 /*-------------------------------------------------------------------------
16958 Extract response and send it to UMAC
16959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016960 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16961 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 sizeof(halConfigStaRsp.configStaRspParams));
16963
16964
16965 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16966 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16967 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16968 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16969 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16970
16971 /* MAC Address of STA - take from cache as it does not come back in the
16972 response*/
16973 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016974 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016976
16977 wdiCfgSTAParams.wdiStatus =
16978 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016979
16980 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16981 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16982 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16983
16984 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16985 {
16986 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16987 {
16988 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16991 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016992
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016994 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016996 wdiAddSTAParam.ucHTCapable =
16997 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16998 wdiAddSTAParam.ucStaType =
16999 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017000 wdiAddSTAParam.ucRmfEnabled =
17001 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017002
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017004 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17005 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017007
17008 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17009 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17010 WDI_MAC_ADDR_LEN);
17011
17012 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17013 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17014 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017015
17016 if ( NULL == pBSSSes )
17017 {
17018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17019 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017020
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 }
17024
17025 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017028 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017032 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017035
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17037 }
17038 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17039 {
17040 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17041
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017052 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 halConfigStaRsp.configStaRspParams.ucUcastSig;
17056 }
17057 }
17058
17059 /*Notify UMAC*/
17060 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17061
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017063}/*WDI_ProcessConfigStaRsp*/
17064
17065
17066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017069
17070 @param pWDICtx: pointer to the WLAN DAL context
17071 pEventData: pointer to the event information structure
17072
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 @see
17074 @return Result of the function call
17075*/
17076WDI_Status
17077WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017078(
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 WDI_ControlBlockType* pWDICtx,
17080 WDI_EventInfoType* pEventData
17081)
17082{
17083 WDI_Status wdiStatus;
17084 eHalStatus halStatus;
17085 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17086
17087 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17090
17091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017093 -------------------------------------------------------------------------*/
17094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17095 ( NULL == pEventData->pEventData))
17096 {
17097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 }
17102
17103 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17104
17105 wpalMutexAcquire(&pWDICtx->wptMutex);
17106
17107 /*If the link is being transitioned to idle - the BSS is to be deleted
17108 - this type of ending a session is possible when UMAC has failed an
17109 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17112 {
17113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017114 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17117 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17118 &pBSSSes);
17119
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 /*-----------------------------------------------------------------------
17121 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 -----------------------------------------------------------------------*/
17124 if ( NULL == pBSSSes )
17125 {
17126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17127 "Set link response received outside association session");
17128 }
17129 else
17130 {
17131 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17132 will be del BSS coming after this to stop the beaconing & cleaning up the
17133 sessions*/
17134 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17135 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17136 {
17137 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017138 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 -----------------------------------------------------------------------*/
17140 WDI_DeleteSession(pWDICtx, pBSSSes);
17141
17142 /*-----------------------------------------------------------------------
17143 Check to see if this association is in progress - if so disable the
17144 flag as this has ended
17145 -----------------------------------------------------------------------*/
17146 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 /*Association no longer in progress */
17149 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17150 /*Association no longer in progress - prepare pending assoc for processing*/
17151 WDI_DequeueAssocRequest(pWDICtx);
17152 }
17153 }
17154 }
17155 }
17156 /* If the link state has been set to POST ASSOC, reset the "association in
17157 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17160 {
17161 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17162 WDI_DequeueAssocRequest(pWDICtx);
17163 }
17164
17165 wpalMutexRelease(&pWDICtx->wptMutex);
17166
17167 /*-------------------------------------------------------------------------
17168 Extract response and send it to UMAC
17169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 wpalMemoryCopy( &halStatus,
17171 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 sizeof(halStatus));
17173
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017175
17176 /*Notify UMAC*/
17177 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17178
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017180}/*WDI_ProcessSetLinkStateRsp*/
17181
17182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017185
17186 @param pWDICtx: pointer to the WLAN DAL context
17187 pEventData: pointer to the event information structure
17188
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 @see
17190 @return Result of the function call
17191*/
17192WDI_Status
17193WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017194(
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 WDI_ControlBlockType* pWDICtx,
17196 WDI_EventInfoType* pEventData
17197)
17198{
17199 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17200 WDI_GetStatsRspCb wdiGetStatsRspCb;
17201 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017202
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17204
17205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 -------------------------------------------------------------------------*/
17208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17209 ( NULL == pEventData->pEventData))
17210 {
17211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216
17217 /*-------------------------------------------------------------------------
17218 Extract response and send it to UMAC
17219 -------------------------------------------------------------------------*/
17220 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17221
17222 /*allocate the stats response buffer */
17223 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17224 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17225 + sizeof(WDI_GetStatsRspParamsType));
17226
17227 if(NULL == wdiGetStatsRsp)
17228 {
17229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17230 "Failed to allocate memory in Get Stats Response %x %x %x ",
17231 pWDICtx, pEventData, pEventData->pEventData);
17232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 }
17235
17236 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17237
17238 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17239 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17240 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17241 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17242 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17243 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17244
17245 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17246 wpalMemoryCopy(wdiGetStatsRsp + 1,
17247 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17248 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17249
17250 /*Notify UMAC*/
17251 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17252
17253 wpalMemoryFree(wdiGetStatsRsp);
17254
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017256}/*WDI_ProcessGetStatsRsp*/
17257
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017258#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17259/**
17260 @brief Process Get Roam Rssi Rsp function (called when a response is
17261 being received over the bus from HAL)
17262
17263 @param pWDICtx: pointer to the WLAN DAL context
17264 pEventData: pointer to the event information structure
17265
17266 @see
17267 @return Result of the function call
17268*/
17269WDI_Status
17270WDI_ProcessGetRoamRssiRsp
17271(
17272 WDI_ControlBlockType* pWDICtx,
17273 WDI_EventInfoType* pEventData
17274)
17275{
17276 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17277 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17278 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17280
17281 /*-------------------------------------------------------------------------
17282 Sanity check
17283 -------------------------------------------------------------------------*/
17284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17285 ( NULL == pEventData->pEventData))
17286 {
17287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17288 "%s: Invalid parameters", __func__);
17289 WDI_ASSERT(0);
17290 return WDI_STATUS_E_FAILURE;
17291 }
17292
17293 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17294 if(NULL == wdiGetRoamRssiRspCb)
17295 {
17296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17297 "%s: call back function is NULL", __func__);
17298 WDI_ASSERT(0);
17299 return WDI_STATUS_E_FAILURE;
17300 }
17301
17302 /*-------------------------------------------------------------------------
17303 Extract response and send it to UMAC
17304 -------------------------------------------------------------------------*/
17305 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17306 pEventData->pEventData,
17307 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17308
17309 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17310 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17311 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17312
17313 /*Notify UMAC*/
17314 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17315
17316 return WDI_STATUS_SUCCESS;
17317}/*WDI_ProcessGetRoamRssiRsp*/
17318#endif
17319
Jeff Johnson295189b2012-06-20 16:38:30 -070017320
17321/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017322 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017324
17325 @param pWDICtx: pointer to the WLAN DAL context
17326 pEventData: pointer to the event information structure
17327
Jeff Johnson295189b2012-06-20 16:38:30 -070017328 @see
17329 @return Result of the function call
17330*/
17331WDI_Status
17332WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017333(
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 WDI_ControlBlockType* pWDICtx,
17335 WDI_EventInfoType* pEventData
17336)
17337{
17338 WDI_Status wdiStatus;
17339 eHalStatus halStatus;
17340 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17342
17343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017345 -------------------------------------------------------------------------*/
17346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17347 ( NULL == pEventData->pEventData))
17348 {
17349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017350 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 }
17354
17355 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17356
17357 /*-------------------------------------------------------------------------
17358 Extract response and send it to UMAC
17359 -------------------------------------------------------------------------*/
17360 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017362
17363 /*Notify UMAC*/
17364 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17365
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017367}/*WDI_ProcessUpdateCfgRsp*/
17368
17369
17370
17371/**
17372 @brief Process Add BA Rsp function (called when a response
17373 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017374
17375 @param pWDICtx: pointer to the WLAN DAL context
17376 pEventData: pointer to the event information structure
17377
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 @see
17379 @return Result of the function call
17380*/
17381WDI_Status
17382WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017383(
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 WDI_ControlBlockType* pWDICtx,
17385 WDI_EventInfoType* pEventData
17386)
17387{
17388 WDI_AddBARspCb wdiAddBARspCb;
17389
17390 tAddBARspParams halAddBARsp;
17391 WDI_AddBARspinfoType wdiAddBARsp;
17392
17393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17394
17395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 -------------------------------------------------------------------------*/
17398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17399 ( NULL == pEventData->pEventData))
17400 {
17401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 }
17406
17407 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17408
17409 /*-------------------------------------------------------------------------
17410 Extract response and send it to UMAC
17411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017412 wpalMemoryCopy( &halAddBARsp,
17413 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 sizeof(halAddBARsp));
17415
17416 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17417
Jeff Johnson43971f52012-07-17 12:26:56 -070017418 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 {
17420 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17421 }
17422
17423 /*Notify UMAC*/
17424 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17425
Jeff Johnsone7245742012-09-05 17:12:55 -070017426 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017427}/*WDI_ProcessAddSessionBARsp*/
17428
17429/**
17430 @brief Process Add BA Rsp function (called when a response
17431 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017432
17433 @param pWDICtx: pointer to the WLAN DAL context
17434 pEventData: pointer to the event information structure
17435
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 @see
17437 @return Result of the function call
17438*/
17439WDI_Status
17440WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017441(
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 WDI_ControlBlockType* pWDICtx,
17443 WDI_EventInfoType* pEventData
17444)
17445{
17446 WDI_TriggerBARspCb wdiTriggerBARspCb;
17447
17448 tTriggerBARspParams* halTriggerBARsp;
17449 tTriggerBaRspCandidate* halBaCandidate;
17450 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17451 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17452 wpt_uint16 index;
17453 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017454 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17456
17457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017459 -------------------------------------------------------------------------*/
17460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17461 ( NULL == pEventData->pEventData))
17462 {
17463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 }
17468
17469 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17470
17471 /*-------------------------------------------------------------------------
17472 Extract response and send it to UMAC
17473 -------------------------------------------------------------------------*/
17474 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17475
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017476 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17477
17478 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17479 {
17480 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017481 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017482 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017483
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017484 if(NULL == wdiTriggerBARsp)
17485 {
17486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17487 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17488 pWDICtx, pEventData, pEventData->pEventData);
17489 WDI_ASSERT(0);
17490 return WDI_STATUS_E_FAILURE;
17491 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017492
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017493 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17494
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17498
17499 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17500 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17501
17502 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17503 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017504 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017505 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17506 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17507 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17512 }
17513 wdiTriggerBARspCandidate++;
17514 halBaCandidate++;
17515 }
17516 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017517 else
17518 {
17519 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17520
17521 if(NULL == wdiTriggerBARsp)
17522 {
17523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17524 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17525 pWDICtx, pEventData, pEventData->pEventData);
17526 WDI_ASSERT(0);
17527 return WDI_STATUS_E_FAILURE;
17528 }
17529
17530 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17531
17532 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017533
17534 /*Notify UMAC*/
17535 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17536
17537 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017539}/*WDI_ProcessAddSessionBARsp*/
17540
17541/**
17542 @brief Process Update Beacon Params Rsp function (called when a response
17543 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017544
17545 @param pWDICtx: pointer to the WLAN DAL context
17546 pEventData: pointer to the event information structure
17547
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 @see
17549 @return Result of the function call
17550*/
17551WDI_Status
17552WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017553(
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 WDI_ControlBlockType* pWDICtx,
17555 WDI_EventInfoType* pEventData
17556)
17557{
17558 WDI_Status wdiStatus;
17559 eHalStatus halStatus;
17560 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17562
17563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 -------------------------------------------------------------------------*/
17566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17567 ( NULL == pEventData->pEventData))
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 }
17574
17575 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17576
17577 /*-------------------------------------------------------------------------
17578 Extract response and send it to UMAC
17579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017580 wpalMemoryCopy( &halStatus,
17581 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017582 sizeof(halStatus));
17583
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017585
17586 /*Notify UMAC*/
17587 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17588
Jeff Johnsone7245742012-09-05 17:12:55 -070017589 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017590}/*WDI_ProcessUpdateBeaconParamsRsp*/
17591
17592/**
17593 @brief Process Send Beacon template Rsp function (called when a response
17594 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017595
17596 @param pWDICtx: pointer to the WLAN DAL context
17597 pEventData: pointer to the event information structure
17598
Jeff Johnson295189b2012-06-20 16:38:30 -070017599 @see
17600 @return Result of the function call
17601*/
17602WDI_Status
17603WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017604(
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 WDI_ControlBlockType* pWDICtx,
17606 WDI_EventInfoType* pEventData
17607)
17608{
17609 WDI_Status wdiStatus;
17610 eHalStatus halStatus;
17611 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17613
17614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 -------------------------------------------------------------------------*/
17617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17618 ( NULL == pEventData->pEventData))
17619 {
17620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 }
17625
17626 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17627
17628 /*-------------------------------------------------------------------------
17629 Extract response and send it to UMAC
17630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 wpalMemoryCopy( &halStatus,
17632 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 sizeof(halStatus));
17634
Jeff Johnsone7245742012-09-05 17:12:55 -070017635 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017636
17637 /*Notify UMAC*/
17638 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17639
Jeff Johnsone7245742012-09-05 17:12:55 -070017640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017641}/*WDI_ProcessSendBeaconParamsRsp*/
17642
Jeff Johnsone7245742012-09-05 17:12:55 -070017643
Jeff Johnson295189b2012-06-20 16:38:30 -070017644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017646 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017647
17648 @param pWDICtx: pointer to the WLAN DAL context
17649 pEventData: pointer to the event information structure
17650
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 @see
17652 @return Result of the function call
17653*/
17654WDI_Status
17655WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017656(
Jeff Johnson295189b2012-06-20 16:38:30 -070017657 WDI_ControlBlockType* pWDICtx,
17658 WDI_EventInfoType* pEventData
17659)
17660{
17661 WDI_Status wdiStatus;
17662 eHalStatus halStatus;
17663 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17665
17666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 -------------------------------------------------------------------------*/
17669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17670 ( NULL == pEventData->pEventData))
17671 {
17672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 }
17677
17678 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17679
17680 /*-------------------------------------------------------------------------
17681 Extract response and send it to UMAC
17682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017683 wpalMemoryCopy( &halStatus,
17684 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 sizeof(halStatus));
17686
Jeff Johnsone7245742012-09-05 17:12:55 -070017687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017688
17689 /*Notify UMAC*/
17690 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17691
Jeff Johnsone7245742012-09-05 17:12:55 -070017692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017693}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17694
17695 /**
17696 @brief Process Set Max Tx Power Rsp function (called when a response
17697 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017698
17699 @param pWDICtx: pointer to the WLAN DAL context
17700 pEventData: pointer to the event information structure
17701
Jeff Johnson295189b2012-06-20 16:38:30 -070017702 @see
17703 @return Result of the function call
17704*/
17705WDI_Status
17706WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017707(
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 WDI_ControlBlockType* pWDICtx,
17709 WDI_EventInfoType* pEventData
17710)
17711{
17712 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017713
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017715
Jeff Johnson295189b2012-06-20 16:38:30 -070017716 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17718
17719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 -------------------------------------------------------------------------*/
17722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17723 ( NULL == pEventData->pEventData))
17724 {
17725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 }
17730
17731 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17732
17733 /*-------------------------------------------------------------------------
17734 Extract response and send it to UMAC
17735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17737 pEventData->pEventData,
17738 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017739
17740 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17741 {
17742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17743 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017746 }
17747
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017750 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017751
17752 /*Notify UMAC*/
17753 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17754
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756}
17757
schangd82195a2013-03-13 18:41:24 -070017758 /**
17759 @brief Process Set Tx Power Rsp function (called when a response
17760 is being received over the bus from HAL)
17761
17762 @param pWDICtx: pointer to the WLAN DAL context
17763 pEventData: pointer to the event information structure
17764
17765 @see
17766 @return Result of the function call
17767*/
17768WDI_Status
17769WDI_ProcessSetTxPowerRsp
17770(
17771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
17775 tSetTxPwrRspMsg halTxpowerrsp;
17776 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17777 WDA_SetTxPowerRspCb wdiReqStatusCb;
17778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17779
17780 /*-------------------------------------------------------------------------
17781 Sanity check
17782 -------------------------------------------------------------------------*/
17783 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17784 ( NULL == pEventData->pEventData))
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17787 "%s: Invalid parameters", __func__);
17788 WDI_ASSERT(0);
17789 return WDI_STATUS_E_FAILURE;
17790 }
17791
17792 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17793
17794 /*-------------------------------------------------------------------------
17795 Extract response and send it to UMAC
17796 -------------------------------------------------------------------------*/
17797 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17798 pEventData->pEventData,
17799 sizeof(halTxpowerrsp.setTxPwrRspParams));
17800
17801 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17802 {
17803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17804 "Error status returned in Set Tx Power Response ");
17805 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17806 return WDI_STATUS_E_FAILURE;
17807 }
17808
17809 wdiSetTxPowerRspMsg.wdiStatus =
17810 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17811
17812 /*Notify UMAC*/
17813 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17814
17815 return WDI_STATUS_SUCCESS;
17816}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017817#ifdef FEATURE_WLAN_TDLS
17818/**
17819 @brief Process TDLS Link Establish Rsp function (called
17820 when a response is being received over the bus from HAL)
17821
17822 @param pWDICtx: pointer to the WLAN DAL context
17823 pEventData: pointer to the event information structure
17824
17825 @see
17826 @return Result of the function call
17827*/
17828WDI_Status
17829WDI_ProcessLinkEstablishReqRsp
17830(
17831 WDI_ControlBlockType* pWDICtx,
17832 WDI_EventInfoType* pEventData
17833)
17834{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017835 eHalStatus halStatus;
17836 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017837 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
17838 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
17839
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17841
17842 /*-------------------------------------------------------------------------
17843 Sanity check
17844 -------------------------------------------------------------------------*/
17845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17846 ( NULL == pEventData->pEventData))
17847 {
17848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17849 "%s: Invalid parameters", __func__);
17850 WDI_ASSERT(0);
17851 return WDI_STATUS_E_FAILURE;
17852 }
17853
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017854 /*-------------------------------------------------------------------------
17855 Extract indication and send it to UMAC
17856 -------------------------------------------------------------------------*/
17857 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
17858 pEventData->pEventData,
17859 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
17860
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017861 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17862
17863 /*-------------------------------------------------------------------------
17864 Extract response and send it to UMAC
17865 -------------------------------------------------------------------------*/
17866 wpalMemoryCopy( &halStatus,
17867 pEventData->pEventData,
17868 sizeof(halStatus));
17869
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017870 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17871 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017872
17873 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017874 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017875
17876 return WDI_STATUS_SUCCESS;
17877}/*WDI_ProcessLinkEstablishReqRsp*/
17878#endif
schangd82195a2013-03-13 18:41:24 -070017879
Jeff Johnson295189b2012-06-20 16:38:30 -070017880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017881 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017883
17884 @param pWDICtx: pointer to the WLAN DAL context
17885 pEventData: pointer to the event information structure
17886
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 @see
17888 @return Result of the function call
17889*/
17890WDI_Status
17891WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017892(
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 WDI_ControlBlockType* pWDICtx,
17894 WDI_EventInfoType* pEventData
17895)
17896{
17897 WDI_Status wdiStatus;
17898 eHalStatus halStatus;
17899 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17901
17902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 -------------------------------------------------------------------------*/
17905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17906 ( NULL == pEventData->pEventData))
17907 {
17908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 }
17913
17914 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17915
17916 /*-------------------------------------------------------------------------
17917 Extract response and send it to UMAC
17918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 wpalMemoryCopy( &halStatus,
17920 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 sizeof(halStatus));
17922
Jeff Johnsone7245742012-09-05 17:12:55 -070017923 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017924
17925 /*Notify UMAC*/
17926 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17927
Jeff Johnsone7245742012-09-05 17:12:55 -070017928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017929}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017930/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017931 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017933
17934 @param pWDICtx: pointer to the WLAN DAL context
17935 pEventData: pointer to the event information structure
17936
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 @see
17938 @return Result of the function call
17939*/
17940WDI_Status
17941WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017942(
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 WDI_ControlBlockType* pWDICtx,
17944 WDI_EventInfoType* pEventData
17945)
17946{
17947 WDI_Status wdiStatus;
17948 eHalStatus halStatus;
17949 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017950 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17952
17953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 -------------------------------------------------------------------------*/
17956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17957 ( NULL == pEventData->pEventData))
17958 {
17959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017963 }
17964
17965 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17966
17967 /*-------------------------------------------------------------------------
17968 Extract response and send it to UMAC
17969 -------------------------------------------------------------------------*/
17970 halStatus = *((eHalStatus*)pEventData->pEventData);
17971
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017973
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017974 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17975 * Other module states are taken care by PMC.
17976 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17977 */
17978 if (wdiStatus != WDI_STATUS_SUCCESS) {
17979
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17981 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17982 halStatus);
17983 /* Call Back is not required as we are putting the DXE in FULL
17984 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017985 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17986
17987 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17989 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17990 WDI_ASSERT(0);
17991 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017992 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017993 /*Notify UMAC*/
17994 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17995
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017997}/*WDI_ProcessEnterImpsRsp*/
17998
17999/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018002
18003 @param pWDICtx: pointer to the WLAN DAL context
18004 pEventData: pointer to the event information structure
18005
Jeff Johnson295189b2012-06-20 16:38:30 -070018006 @see
18007 @return Result of the function call
18008*/
18009WDI_Status
18010WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018011(
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 WDI_ControlBlockType* pWDICtx,
18013 WDI_EventInfoType* pEventData
18014)
18015{
18016 WDI_Status wdiStatus;
18017 eHalStatus halStatus;
18018 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018019 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18021
18022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 -------------------------------------------------------------------------*/
18025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18026 ( NULL == pEventData->pEventData))
18027 {
18028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 }
18033
18034 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18035
18036 /*-------------------------------------------------------------------------
18037 Extract response and send it to UMAC
18038 -------------------------------------------------------------------------*/
18039 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018041
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018042 if (halStatus != eHAL_STATUS_SUCCESS)
18043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18044 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18045
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018047 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18048 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18049 {
18050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18051 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18052 WDI_ASSERT(0);
18053 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 /*Notify UMAC*/
18055 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18056
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018058}/*WDI_ProcessExitImpsRsp*/
18059
18060/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018061 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018062 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018063
18064 @param pWDICtx: pointer to the WLAN DAL context
18065 pEventData: pointer to the event information structure
18066
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 @see
18068 @return Result of the function call
18069*/
18070WDI_Status
18071WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018072(
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 WDI_ControlBlockType* pWDICtx,
18074 WDI_EventInfoType* pEventData
18075)
18076{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018077 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18078 tHalEnterBmpsRspParams halEnterBmpsRsp;
18079 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18080 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018081 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18083
18084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 -------------------------------------------------------------------------*/
18087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18088 ( NULL == pEventData->pEventData))
18089 {
18090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 }
18095
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018097 Extract response and send it to UMAC
18098 -------------------------------------------------------------------------*/
18099 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18100 {
18101 wpalMemoryCopy( &halEnterBmpsRsp,
18102 pEventData->pEventData,
18103 sizeof(halEnterBmpsRsp));
18104
18105 //Used to print debug message
18106 halStatus = halEnterBmpsRsp.status;
18107 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18108 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18109 }
18110 else
18111 {
18112 halStatus = *((eHalStatus*)pEventData->pEventData);
18113 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18114 }
18115
18116 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018117
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018118 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18119 * Other module states are taken care by PMC.
18120 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18121 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018122 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18123 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018124
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018126 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18127 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018128 /* Call Back is not required as we are putting the DXE in FULL
18129 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018130 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18131 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18132 {
18133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18134 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18135 WDI_ASSERT(0);
18136 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018137 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018138 }
18139
Jeff Johnson295189b2012-06-20 16:38:30 -070018140 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018141 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018142
Jeff Johnsone7245742012-09-05 17:12:55 -070018143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018144}/*WDI_ProcessEnterBmpsRsp*/
18145
18146/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018147 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018149
18150 @param pWDICtx: pointer to the WLAN DAL context
18151 pEventData: pointer to the event information structure
18152
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 @see
18154 @return Result of the function call
18155*/
18156WDI_Status
18157WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018158(
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 WDI_ControlBlockType* pWDICtx,
18160 WDI_EventInfoType* pEventData
18161)
18162{
Jeff Johnson295189b2012-06-20 16:38:30 -070018163 eHalStatus halStatus;
18164 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018165 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018166 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18167 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18169
18170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 -------------------------------------------------------------------------*/
18173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18174 ( NULL == pEventData->pEventData))
18175 {
18176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 }
18181
18182 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18183
18184 /*-------------------------------------------------------------------------
18185 Extract response and send it to UMAC
18186 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018187
18188 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18189 {
18190 wpalMemoryCopy( &halExitBmpsRsp,
18191 pEventData->pEventData,
18192 sizeof(halExitBmpsRsp));
18193
18194 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18195 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18196 }
18197 else
18198 {
18199 halStatus = *((eHalStatus*)pEventData->pEventData);
18200 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18201 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018202
18203 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018204 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18205 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18206 {
18207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18208 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18209 WDI_ASSERT(0);
18210 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18212
18213 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018214 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018215
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018217}/*WDI_ProcessExitBmpsRsp*/
18218
18219/**
18220 @brief Process Enter UAPSD Rsp function (called when a response
18221 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018222
18223 @param pWDICtx: pointer to the WLAN DAL context
18224 pEventData: pointer to the event information structure
18225
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 @see
18227 @return Result of the function call
18228*/
18229WDI_Status
18230WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018231(
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 WDI_ControlBlockType* pWDICtx,
18233 WDI_EventInfoType* pEventData
18234)
18235{
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018237 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018239 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18240
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18242
18243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 -------------------------------------------------------------------------*/
18246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18247 ( NULL == pEventData->pEventData))
18248 {
18249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018253 }
18254
18255 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18256
18257 /*-------------------------------------------------------------------------
18258 Extract response and send it to UMAC
18259 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018260 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18261 {
18262 wpalMemoryCopy( &halEnterUapsdRsp,
18263 pEventData->pEventData,
18264 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018265
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018266 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18267 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18268 }
18269 else
18270 {
18271 halStatus = *((eHalStatus*)pEventData->pEventData);
18272 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18273 }
18274
18275 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 {
18277 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18278 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18279 // the traffic to decide when to suspend the trigger frames when there is no traffic
18280 // activity on the trigger enabled ACs
18281 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18282
18283#ifdef WLAN_PERF
18284 // Increment the BD signature to refresh the fast path BD utilization
18285 pWDICtx->uBdSigSerialNum++;
18286#endif
18287 }
18288
18289 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018290 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018291
Jeff Johnsone7245742012-09-05 17:12:55 -070018292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018293}/*WDI_ProcessEnterUapsdRsp*/
18294
18295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018296 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018297 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018298
18299 @param pWDICtx: pointer to the WLAN DAL context
18300 pEventData: pointer to the event information structure
18301
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 @see
18303 @return Result of the function call
18304*/
18305WDI_Status
18306WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018307(
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 WDI_ControlBlockType* pWDICtx,
18309 WDI_EventInfoType* pEventData
18310)
18311{
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 eHalStatus halStatus;
18313 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018314 tHalExitUapsdRspParams halExitUapsdRsp;
18315 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18317
18318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 -------------------------------------------------------------------------*/
18321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18322 ( NULL == pEventData->pEventData))
18323 {
18324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 }
18329
18330 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18331
18332 /*-------------------------------------------------------------------------
18333 Extract response and send it to UMAC
18334 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018335 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18336 {
18337 wpalMemoryCopy( &halExitUapsdRsp,
18338 pEventData->pEventData,
18339 sizeof(halExitUapsdRsp));
18340
18341 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18342 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18343 }
18344 else
18345 {
18346 halStatus = *((eHalStatus*)pEventData->pEventData);
18347 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18348 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18350 // directly instead of the FW WQ.
18351 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18352
18353#ifdef WLAN_PERF
18354 // Increment the BD signature to refresh the fast path BD utilization
18355 pWDICtx->uBdSigSerialNum++;
18356#endif
18357
18358 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018359 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018360
Jeff Johnsone7245742012-09-05 17:12:55 -070018361 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018362}/*WDI_ProcessExitUapsdRsp*/
18363
18364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018365 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018366 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018367
18368 @param pWDICtx: pointer to the WLAN DAL context
18369 pEventData: pointer to the event information structure
18370
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 @see
18372 @return Result of the function call
18373*/
18374WDI_Status
18375WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018376(
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 WDI_ControlBlockType* pWDICtx,
18378 WDI_EventInfoType* pEventData
18379)
18380{
18381 WDI_Status wdiStatus;
18382 eHalStatus halStatus;
18383 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18385
18386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 -------------------------------------------------------------------------*/
18389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18390 ( NULL == pEventData->pEventData))
18391 {
18392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 }
18397
18398 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18399
18400 /*-------------------------------------------------------------------------
18401 Extract response and send it to UMAC
18402 -------------------------------------------------------------------------*/
18403 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018405
18406 /*Notify UMAC*/
18407 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18408
Jeff Johnsone7245742012-09-05 17:12:55 -070018409 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018410}/*WDI_ProcessSetUapsdAcParamsRsp*/
18411
18412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018415
18416 @param pWDICtx: pointer to the WLAN DAL context
18417 pEventData: pointer to the event information structure
18418
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 @see
18420 @return Result of the function call
18421*/
18422WDI_Status
18423WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018424(
Jeff Johnson295189b2012-06-20 16:38:30 -070018425 WDI_ControlBlockType* pWDICtx,
18426 WDI_EventInfoType* pEventData
18427)
18428{
18429 WDI_Status wdiStatus;
18430 eHalStatus halStatus;
18431 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18433
18434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 -------------------------------------------------------------------------*/
18437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18438 ( NULL == pEventData->pEventData))
18439 {
18440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 }
18445
18446 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18447
18448 /*-------------------------------------------------------------------------
18449 Extract response and send it to UMAC
18450 -------------------------------------------------------------------------*/
18451 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018453
18454 /*Notify UMAC*/
18455 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18456
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018458}/*WDI_ProcessUpdateUapsdParamsRsp*/
18459
18460/**
18461 @brief Process Configure RXP filter Rsp function (called when a
18462 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018463
18464 @param pWDICtx: pointer to the WLAN DAL context
18465 pEventData: pointer to the event information structure
18466
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 @see
18468 @return Result of the function call
18469*/
18470WDI_Status
18471WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018472(
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 WDI_ControlBlockType* pWDICtx,
18474 WDI_EventInfoType* pEventData
18475)
18476{
18477 WDI_Status wdiStatus;
18478 eHalStatus halStatus;
18479 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18481
18482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 -------------------------------------------------------------------------*/
18485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18486 ( NULL == pEventData->pEventData))
18487 {
18488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 }
18493
18494 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18495
18496 /*-------------------------------------------------------------------------
18497 Extract response and send it to UMAC
18498 -------------------------------------------------------------------------*/
18499 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018501
18502 /*Notify UMAC*/
18503 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18504
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506}/*WDI_ProcessConfigureRxpFilterRsp*/
18507
18508/**
18509 @brief Process Set beacon filter Rsp function (called when a
18510 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018511
18512 @param pWDICtx: pointer to the WLAN DAL context
18513 pEventData: pointer to the event information structure
18514
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 @see
18516 @return Result of the function call
18517*/
18518WDI_Status
18519WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018520(
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 WDI_ControlBlockType* pWDICtx,
18522 WDI_EventInfoType* pEventData
18523)
18524{
18525 WDI_Status wdiStatus;
18526 eHalStatus halStatus;
18527 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18529
18530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018532 -------------------------------------------------------------------------*/
18533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18534 ( NULL == pEventData->pEventData))
18535 {
18536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 }
18541
18542 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18543
18544 /*-------------------------------------------------------------------------
18545 Extract response and send it to UMAC
18546 -------------------------------------------------------------------------*/
18547 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018549
18550 /*Notify UMAC*/
18551 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18552
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018554}/*WDI_ProcessSetBeaconFilterRsp*/
18555
18556/**
18557 @brief Process remove beacon filter Rsp function (called when a
18558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018559
18560 @param pWDICtx: pointer to the WLAN DAL context
18561 pEventData: pointer to the event information structure
18562
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 @see
18564 @return Result of the function call
18565*/
18566WDI_Status
18567WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018568(
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 WDI_ControlBlockType* pWDICtx,
18570 WDI_EventInfoType* pEventData
18571)
18572{
18573 WDI_Status wdiStatus;
18574 eHalStatus halStatus;
18575 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18577
18578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 -------------------------------------------------------------------------*/
18581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18582 ( NULL == pEventData->pEventData))
18583 {
18584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 }
18589
18590 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18591
18592 /*-------------------------------------------------------------------------
18593 Extract response and send it to UMAC
18594 -------------------------------------------------------------------------*/
18595 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018596 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018597
18598 /*Notify UMAC*/
18599 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18600
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018602}/*WDI_ProcessRemBeaconFilterRsp*/
18603
18604/**
18605 @brief Process set RSSI thresholds Rsp function (called when a
18606 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018607
18608 @param pWDICtx: pointer to the WLAN DAL context
18609 pEventData: pointer to the event information structure
18610
Jeff Johnson295189b2012-06-20 16:38:30 -070018611 @see
18612 @return Result of the function call
18613*/
18614WDI_Status
18615WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018616(
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 WDI_ControlBlockType* pWDICtx,
18618 WDI_EventInfoType* pEventData
18619)
18620{
18621 WDI_Status wdiStatus;
18622 eHalStatus halStatus;
18623 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18625
18626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018628 -------------------------------------------------------------------------*/
18629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18630 ( NULL == pEventData->pEventData))
18631 {
18632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 }
18637
18638 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18639
18640 /*-------------------------------------------------------------------------
18641 Extract response and send it to UMAC
18642 -------------------------------------------------------------------------*/
18643 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018645
18646 /*Notify UMAC*/
18647 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18648
Jeff Johnsone7245742012-09-05 17:12:55 -070018649 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018650}/*WDI_ProcessSetRSSIThresoldsRsp*/
18651
18652/**
18653 @brief Process host offload Rsp function (called when a
18654 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018655
18656 @param pWDICtx: pointer to the WLAN DAL context
18657 pEventData: pointer to the event information structure
18658
Jeff Johnson295189b2012-06-20 16:38:30 -070018659 @see
18660 @return Result of the function call
18661*/
18662WDI_Status
18663WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018664(
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 WDI_ControlBlockType* pWDICtx,
18666 WDI_EventInfoType* pEventData
18667)
18668{
18669 WDI_Status wdiStatus;
18670 eHalStatus halStatus;
18671 WDI_HostOffloadCb wdiHostOffloadCb;
18672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18673
18674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 -------------------------------------------------------------------------*/
18677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18678 ( NULL == pEventData->pEventData))
18679 {
18680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 }
18685
18686 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18687
18688 /*-------------------------------------------------------------------------
18689 Extract response and send it to UMAC
18690 -------------------------------------------------------------------------*/
18691 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018693
18694 /*Notify UMAC*/
18695 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18696
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018698}/*WDI_ProcessHostOffloadRsp*/
18699
18700/**
18701 @brief Process keep alive Rsp function (called when a
18702 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018703
18704 @param pWDICtx: pointer to the WLAN DAL context
18705 pEventData: pointer to the event information structure
18706
Jeff Johnson295189b2012-06-20 16:38:30 -070018707 @see
18708 @return Result of the function call
18709*/
18710WDI_Status
18711WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018712(
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 WDI_ControlBlockType* pWDICtx,
18714 WDI_EventInfoType* pEventData
18715)
18716{
18717 WDI_Status wdiStatus;
18718 eHalStatus halStatus;
18719 WDI_KeepAliveCb wdiKeepAliveCb;
18720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18722 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18723
18724
18725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018727 -------------------------------------------------------------------------*/
18728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18729 ( NULL == pEventData->pEventData))
18730 {
18731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 }
18736
Jeff Johnsone7245742012-09-05 17:12:55 -070018737 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18738
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 /*-------------------------------------------------------------------------
18740 Extract response and send it to UMAC
18741 -------------------------------------------------------------------------*/
18742 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018744
18745 /*Notify UMAC*/
18746 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18747
Jeff Johnsone7245742012-09-05 17:12:55 -070018748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018749}/*WDI_ProcessKeepAliveRsp*/
18750
18751/**
18752 @brief Process wowl add ptrn Rsp function (called when a
18753 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018754
18755 @param pWDICtx: pointer to the WLAN DAL context
18756 pEventData: pointer to the event information structure
18757
Jeff Johnson295189b2012-06-20 16:38:30 -070018758 @see
18759 @return Result of the function call
18760*/
18761WDI_Status
18762WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018763(
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 WDI_ControlBlockType* pWDICtx,
18765 WDI_EventInfoType* pEventData
18766)
18767{
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 eHalStatus halStatus;
18769 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018770 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18771 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18772
Jeff Johnson295189b2012-06-20 16:38:30 -070018773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18774
18775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018777 -------------------------------------------------------------------------*/
18778 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18779 ( NULL == pEventData->pEventData))
18780 {
18781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018785 }
18786
18787 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18788
18789 /*-------------------------------------------------------------------------
18790 Extract response and send it to UMAC
18791 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018792 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18793 {
18794 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18795 pEventData->pEventData,
18796 sizeof(halAddWowlBcastPtrRsp));
18797
18798 wdiWowlAddBcPtrRsp.wdiStatus =
18799 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18800 }
18801 else
18802 {
18803 halStatus = *((eHalStatus*)pEventData->pEventData);
18804 wdiWowlAddBcPtrRsp.wdiStatus =
18805 WDI_HAL_2_WDI_STATUS(halStatus);
18806 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018807
18808 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018809 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018810
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018812}/*WDI_ProcessWowlAddBcPtrnRsp*/
18813
18814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018815 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018817
18818 @param pWDICtx: pointer to the WLAN DAL context
18819 pEventData: pointer to the event information structure
18820
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 @see
18822 @return Result of the function call
18823*/
18824WDI_Status
18825WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018826(
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 WDI_ControlBlockType* pWDICtx,
18828 WDI_EventInfoType* pEventData
18829)
18830{
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 eHalStatus halStatus;
18832 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018833 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18834 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18836
18837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018839 -------------------------------------------------------------------------*/
18840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18841 ( NULL == pEventData->pEventData))
18842 {
18843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 }
18848
18849 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18850
18851 /*-------------------------------------------------------------------------
18852 Extract response and send it to UMAC
18853 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018854 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18855 {
18856 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18857 pEventData->pEventData,
18858 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018859
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018860 wdiWowlDelBcstPtrRsp.wdiStatus =
18861 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18862 }
18863 else
18864 {
18865 halStatus = *((eHalStatus*)pEventData->pEventData);
18866 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18867 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018869 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018870
Jeff Johnsone7245742012-09-05 17:12:55 -070018871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018872}/*WDI_ProcessWowlDelBcPtrnRsp*/
18873
18874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018877
18878 @param pWDICtx: pointer to the WLAN DAL context
18879 pEventData: pointer to the event information structure
18880
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 @see
18882 @return Result of the function call
18883*/
18884WDI_Status
18885WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018886(
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 WDI_ControlBlockType* pWDICtx,
18888 WDI_EventInfoType* pEventData
18889)
18890{
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 eHalStatus halStatus;
18892 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018893 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18894 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18896
18897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 -------------------------------------------------------------------------*/
18900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18901 ( NULL == pEventData->pEventData))
18902 {
18903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 }
18908
18909 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18910
18911 /*-------------------------------------------------------------------------
18912 Extract response and send it to UMAC
18913 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018914 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18915 {
18916 wpalMemoryCopy( &halEnterWowlRspParams,
18917 (wpt_uint8*)pEventData->pEventData,
18918 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018919
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018920 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18921 wdiwowlEnterRsp.status =
18922 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18923 }
18924 else
18925 {
18926 halStatus = *((eHalStatus*)pEventData->pEventData);
18927 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18928 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018930 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018931
Jeff Johnsone7245742012-09-05 17:12:55 -070018932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018933}/*WDI_ProcessWowlEnterRsp*/
18934
18935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018936 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018937 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018938
18939 @param pWDICtx: pointer to the WLAN DAL context
18940 pEventData: pointer to the event information structure
18941
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 @see
18943 @return Result of the function call
18944*/
18945WDI_Status
18946WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018947(
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 WDI_ControlBlockType* pWDICtx,
18949 WDI_EventInfoType* pEventData
18950)
18951{
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 eHalStatus halStatus;
18953 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018954 tHalExitWowlRspParams halExitWowlRspParams;
18955 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18956
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18958
18959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 -------------------------------------------------------------------------*/
18962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18963 ( NULL == pEventData->pEventData))
18964 {
18965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 }
18970
18971 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18972
18973 /*-------------------------------------------------------------------------
18974 Extract response and send it to UMAC
18975 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018976 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18977 {
18978 wpalMemoryCopy( &halExitWowlRspParams,
18979 pEventData->pEventData,
18980 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018982 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18983 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18984
18985 }
18986 else
18987 {
18988 halStatus = *((eHalStatus*)pEventData->pEventData);
18989 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18990 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018992 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018993
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995}/*WDI_ProcessWowlExitRsp*/
18996
18997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 (called when a response is being received over the bus
19000 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019001
19002 @param pWDICtx: pointer to the WLAN DAL context
19003 pEventData: pointer to the event information structure
19004
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 @see
19006 @return Result of the function call
19007*/
19008WDI_Status
19009WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019010(
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 WDI_ControlBlockType* pWDICtx,
19012 WDI_EventInfoType* pEventData
19013)
19014{
19015 WDI_Status wdiStatus;
19016 eHalStatus halStatus;
19017 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19019
19020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019022 -------------------------------------------------------------------------*/
19023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19024 ( NULL == pEventData->pEventData))
19025 {
19026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 }
19031
19032 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19033
19034 /*-------------------------------------------------------------------------
19035 Extract response and send it to UMAC
19036 -------------------------------------------------------------------------*/
19037 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019038 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019039
19040 /*Notify UMAC*/
19041 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19042
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019044}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19045
19046
19047/**
19048 @brief Process Nv download(called when a response
19049 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019050
19051 @param pWDICtx: pointer to the WLAN DAL context
19052 pEventData: pointer to the event information structure
19053
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 @see
19055 @return Result of the function call
19056*/
19057WDI_Status
19058WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019059(
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 WDI_ControlBlockType* pWDICtx,
19061 WDI_EventInfoType* pEventData
19062)
19063{
19064
19065 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19066 tHalNvImgDownloadRspParams halNvDownloadRsp;
19067 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19068
19069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 -------------------------------------------------------------------------*/
19072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19073 ( NULL == pEventData->pEventData))
19074 {
19075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 }
19080
19081 /*-------------------------------------------------------------------------
19082 Extract response and send it to UMAC
19083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019084 wpalMemoryCopy( &halNvDownloadRsp,
19085 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 sizeof(halNvDownloadRsp));
19087
19088 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19089
19090 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019091 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19092 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019093 {
19094 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 }
19097 else
19098 {
19099 /*Reset the Nv related global information in WDI context information */
19100 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19101 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19102 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19103 /*call WDA callback function for last fragment */
19104 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19105 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19106 }
19107
Jeff Johnsone7245742012-09-05 17:12:55 -070019108 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019109}
19110#ifdef WLAN_FEATURE_VOWIFI_11R
19111/**
19112 @brief Process Add TSpec Rsp function (called when a response
19113 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019114
19115 @param pWDICtx: pointer to the WLAN DAL context
19116 pEventData: pointer to the event information structure
19117
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 @see
19119 @return Result of the function call
19120*/
19121WDI_Status
19122WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019123(
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 WDI_ControlBlockType* pWDICtx,
19125 WDI_EventInfoType* pEventData
19126)
19127{
19128 WDI_Status wdiStatus;
19129 tAggrAddTsRspParams aggrAddTsRsp;
19130 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19132
19133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 -------------------------------------------------------------------------*/
19136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19137 ( NULL == pEventData->pEventData))
19138 {
19139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 }
19144
19145 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19146
19147 /*-------------------------------------------------------------------------
19148 Extract response and send it to UMAC
19149 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019150 wpalMemoryCopy( &aggrAddTsRsp,
19151 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 sizeof(aggrAddTsRsp));
19153
19154 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019155 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019156
19157 /*Notify UMAC*/
19158 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19159
Jeff Johnsone7245742012-09-05 17:12:55 -070019160 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019161}/*WDI_ProcessAddTSpecRsp*/
19162#endif /* WLAN_FEATURE_VOWIFI_11R */
19163
19164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019167
19168 @param pWDICtx: pointer to the WLAN DAL context
19169 pEventData: pointer to the event information structure
19170
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 @see
19172 @return Result of the function call
19173*/
19174WDI_Status
19175WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019176(
Jeff Johnson295189b2012-06-20 16:38:30 -070019177 WDI_ControlBlockType* pWDICtx,
19178 WDI_EventInfoType* pEventData
19179)
19180{
19181 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19182 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19183 tHalHostResumeRspParams hostResumeRspMsg;
19184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19185
19186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 -------------------------------------------------------------------------*/
19189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19190 ( NULL == pEventData->pEventData))
19191 {
19192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 }
19197
19198 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19199
19200 /*-------------------------------------------------------------------------
19201 Extract response and send it to UMAC
19202 -------------------------------------------------------------------------*/
19203
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 (wpt_uint8*)pEventData->pEventData,
19206 sizeof(hostResumeRspMsg));
19207
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 wdiResumeRspParams.wdiStatus =
19209 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019210
19211 /*Notify UMAC*/
19212 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19213
19214 return WDI_STATUS_SUCCESS;
19215}
19216
19217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
19221 @param pWDICtx: pointer to the WLAN DAL context
19222 pEventData: pointer to the event information structure
19223
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 @see
19225 @return Result of the function call
19226*/
19227WDI_Status
19228WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019229(
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_ControlBlockType* pWDICtx,
19231 WDI_EventInfoType* pEventData
19232)
19233{
19234 WDI_Status wdiStatus;
19235 eHalStatus halStatus;
19236 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19238
19239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 -------------------------------------------------------------------------*/
19242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19243 ( NULL == pEventData->pEventData))
19244 {
19245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019250
19251 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019252
19253 /*-------------------------------------------------------------------------
19254 Extract response and send it to UMAC
19255 -------------------------------------------------------------------------*/
19256 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019258
19259 /*Notify UMAC*/
19260 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19261
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019263}/*WDI_ProcessSetTxPerTrackingRsp*/
19264
19265/*==========================================================================
19266 Indications from HAL
19267 ==========================================================================*/
19268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 indication of this kind is being received over the bus
19271 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019272
19273 @param pWDICtx: pointer to the WLAN DAL context
19274 pEventData: pointer to the event information structure
19275
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 @see
19277 @return Result of the function call
19278*/
19279WDI_Status
19280WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019281(
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 WDI_ControlBlockType* pWDICtx,
19283 WDI_EventInfoType* pEventData
19284)
19285{
19286 WDI_LowLevelIndType wdiInd;
19287 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19289
19290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 -------------------------------------------------------------------------*/
19293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19294 ( NULL == pEventData->pEventData))
19295 {
19296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 }
19301
19302 /*-------------------------------------------------------------------------
19303 Extract indication and send it to UMAC
19304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019305 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19306 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 sizeof(tHalRSSINotification));
19308
19309 /*Fill in the indication parameters*/
19310 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19311 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19312 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19313 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19314 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19315 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19316 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19317 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19318 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19319 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19320 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19321 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19322 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019323 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19324 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019325
ltimariu034f7d62013-01-24 18:54:33 -080019326 if ( pWDICtx->wdiLowLevelIndCB )
19327 {
19328 /*Notify UMAC of indication*/
19329 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019331
19332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019333}/*WDI_ProcessLowRSSIInd*/
19334
19335
19336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019337 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 an indication of this kind is being received over the
19339 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019340
19341 @param pWDICtx: pointer to the WLAN DAL context
19342 pEventData: pointer to the event information structure
19343
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 @see
19345 @return Result of the function call
19346*/
19347WDI_Status
19348WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019349(
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 WDI_ControlBlockType* pWDICtx,
19351 WDI_EventInfoType* pEventData
19352)
19353{
19354 WDI_Status wdiStatus;
19355 eHalStatus halStatus;
19356 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019357 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19359
19360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019362 -------------------------------------------------------------------------*/
19363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19364 ( NULL == pEventData->pEventData))
19365 {
19366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019371 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 /*-------------------------------------------------------------------------
19373 Extract indication and send it to UMAC
19374 -------------------------------------------------------------------------*/
19375 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19376 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019378
19379 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019380 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019381 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19382 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019383 if ( pWDICtx->wdiLowLevelIndCB )
19384 {
19385 /*Notify UMAC*/
19386 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19387 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019388
19389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019390}/*WDI_ProcessMissedBeaconInd*/
19391
19392
19393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 an indication of this kind is being received over the
19396 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019397
19398 @param pWDICtx: pointer to the WLAN DAL context
19399 pEventData: pointer to the event information structure
19400
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 @see
19402 @return Result of the function call
19403*/
19404WDI_Status
19405WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019406(
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 WDI_ControlBlockType* pWDICtx,
19408 WDI_EventInfoType* pEventData
19409)
19410{
19411 WDI_Status wdiStatus;
19412 eHalStatus halStatus;
19413 WDI_LowLevelIndType wdiInd;
19414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19415
19416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 -------------------------------------------------------------------------*/
19419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19420 ( NULL == pEventData->pEventData))
19421 {
19422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 }
19427
19428 /*-------------------------------------------------------------------------
19429 Extract indication and send it to UMAC
19430 -------------------------------------------------------------------------*/
19431 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19432 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019433 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019434
19435 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 /* ! TO DO - fill in from HAL struct:
19438 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19439
ltimariu034f7d62013-01-24 18:54:33 -080019440 if ( pWDICtx->wdiLowLevelIndCB )
19441 {
19442 /*Notify UMAC*/
19443 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19444 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019445
19446 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019447}/*WDI_ProcessUnkAddrFrameInd*/
19448
19449
19450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019451 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 indication of this kind is being received over the bus
19453 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019454
19455 @param pWDICtx: pointer to the WLAN DAL context
19456 pEventData: pointer to the event information structure
19457
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 @see
19459 @return Result of the function call
19460*/
19461WDI_Status
19462WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019463(
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 WDI_ControlBlockType* pWDICtx,
19465 WDI_EventInfoType* pEventData
19466)
19467{
19468 WDI_LowLevelIndType wdiInd;
19469 tpSirMicFailureInd pHalMicFailureInd;
19470
19471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19472
19473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 -------------------------------------------------------------------------*/
19476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19477 ( NULL == pEventData->pEventData))
19478 {
19479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019484
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19486 /*-------------------------------------------------------------------------
19487 Extract indication and send it to UMAC
19488 -------------------------------------------------------------------------*/
19489
19490 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019491 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019492 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19493 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19494 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19495 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19496 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19497 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19498 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19499 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 pHalMicFailureInd->info.keyId;
19506 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19507 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19508 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19509 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019510
19511 if ( pWDICtx->wdiLowLevelIndCB )
19512 {
19513 /*Notify UMAC*/
19514 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19515 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019516
19517 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019518}/*WDI_ProcessMicFailureInd*/
19519
19520
19521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019522 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 an indication of this kind is being received over the
19524 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019525
19526 @param pWDICtx: pointer to the WLAN DAL context
19527 pEventData: pointer to the event information structure
19528
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 @see
19530 @return Result of the function call
19531*/
19532WDI_Status
19533WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019534(
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 WDI_ControlBlockType* pWDICtx,
19536 WDI_EventInfoType* pEventData
19537)
19538{
19539 WDI_Status wdiStatus;
19540 eHalStatus halStatus;
19541 WDI_LowLevelIndType wdiInd;
19542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19543
19544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019546 -------------------------------------------------------------------------*/
19547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19548 ( NULL == pEventData->pEventData))
19549 {
19550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 }
19555
19556 /*-------------------------------------------------------------------------
19557 Extract indication and send it to UMAC
19558 -------------------------------------------------------------------------*/
19559
19560 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19561 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019563
19564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19565 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019566
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019568 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19569 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
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_ProcessFatalErrorInd*/
19579
19580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 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_ProcessDelSTAInd
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 tDeleteStaContextParams halDelSTACtx;
19599 WDI_LowLevelIndType wdiInd;
19600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19601
19602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 -------------------------------------------------------------------------*/
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);
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 }
19613
19614 /*-------------------------------------------------------------------------
19615 Extract indication and send it to UMAC
19616 -------------------------------------------------------------------------*/
19617
19618 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 wpalMemoryCopy( &halDelSTACtx,
19620 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019621 sizeof(halDelSTACtx));
19622
19623 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019624 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019625
19626 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19627 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19628 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19629 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19630
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019633 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019635 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19636 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019637
ltimariu034f7d62013-01-24 18:54:33 -080019638 if ( pWDICtx->wdiLowLevelIndCB )
19639 {
19640 /*Notify UMAC*/
19641 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19642 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019643
19644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019645}/*WDI_ProcessDelSTAInd*/
19646
19647/**
19648*@brief Process Coex Indication function (called when
19649 an indication of this kind is being received over the
19650 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019651
19652 @param pWDICtx: pointer to the WLAN DAL context
19653 pEventData: pointer to the event information structure
19654
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 @see
19656 @return Result of the function call
19657*/
19658WDI_Status
19659WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019660(
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ControlBlockType* pWDICtx,
19662 WDI_EventInfoType* pEventData
19663)
19664{
19665 WDI_LowLevelIndType wdiInd;
19666 tCoexIndMsg halCoexIndMsg;
19667 wpt_uint32 index;
19668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19669
19670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 -------------------------------------------------------------------------*/
19673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19674 ( NULL == pEventData->pEventData ))
19675 {
19676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 }
19681
19682 /*-------------------------------------------------------------------------
19683 Extract indication and send it to UMAC
19684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19686 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 sizeof(halCoexIndMsg.coexIndParams) );
19688
19689 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 wdiInd.wdiIndicationType = WDI_COEX_IND;
19691 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19693 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 }
19696
19697 // DEBUG
19698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19699 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19701 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19702 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19703 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19704 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019705
ltimariu034f7d62013-01-24 18:54:33 -080019706 if ( pWDICtx->wdiLowLevelIndCB )
19707 {
19708 /*Notify UMAC*/
19709 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19710 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019711
19712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019713}/*WDI_ProcessCoexInd*/
19714
19715/**
19716*@brief Process Tx Complete Indication function (called when
19717 an indication of this kind is being received over the
19718 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019719
19720 @param pWDICtx: pointer to the WLAN DAL context
19721 pEventData: pointer to the event information structure
19722
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 @see
19724 @return Result of the function call
19725*/
19726WDI_Status
19727WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019728(
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 WDI_ControlBlockType* pWDICtx,
19730 WDI_EventInfoType* pEventData
19731)
19732{
19733 WDI_LowLevelIndType wdiInd;
19734 tTxComplIndMsg halTxComplIndMsg;
19735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19736
19737 /*-------------------------------------------------------------------------
19738 Sanity check
19739 -------------------------------------------------------------------------*/
19740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19741 ( NULL == pEventData->pEventData ))
19742 {
19743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 WDI_ASSERT( 0 );
19746 return WDI_STATUS_E_FAILURE;
19747 }
19748
19749 /*-------------------------------------------------------------------------
19750 Extract indication and send it to UMAC
19751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19753 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 sizeof(halTxComplIndMsg.txComplParams) );
19755
19756 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019757 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19758 wdiInd.wdiIndicationData.tx_complete_status
19759 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019760
ltimariu034f7d62013-01-24 18:54:33 -080019761 if ( pWDICtx->wdiLowLevelIndCB )
19762 {
19763 /*Notify UMAC*/
19764 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019766
19767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019768}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019769#ifdef FEATURE_WLAN_TDLS
19770/**
19771*@brief Process TDLS Indication function (called when
19772 an indication of this kind is being received over the
19773 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019774
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019775 @param pWDICtx: pointer to the WLAN DAL context
19776 pEventData: pointer to the event information structure
19777
19778 @see
19779 @return Result of the function call
19780*/
19781WDI_Status
19782WDI_ProcessTdlsInd
19783(
19784 WDI_ControlBlockType* pWDICtx,
19785 WDI_EventInfoType* pEventData
19786)
19787{
19788 WDI_LowLevelIndType wdiInd;
19789 tTdlsIndMsg halTdlsIndMsg;
19790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19791
19792 /*-------------------------------------------------------------------------
19793 Sanity check
19794 -------------------------------------------------------------------------*/
19795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19796 ( NULL == pEventData->pEventData ))
19797 {
19798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19799 "%s: Invalid parameters", __func__);
19800 WDI_ASSERT( 0 );
19801 return WDI_STATUS_E_FAILURE;
19802 }
19803
19804 /*-------------------------------------------------------------------------
19805 Extract indication and send it to UMAC
19806 -------------------------------------------------------------------------*/
19807 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19808 pEventData->pEventData,
19809 sizeof(halTdlsIndMsg.tdlsIndParams) );
19810
19811 /*Fill in the indication parameters*/
19812 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19813
19814 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19815 = halTdlsIndMsg.tdlsIndParams.status;
19816
19817 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19818 = halTdlsIndMsg.tdlsIndParams.staIdx;
19819
19820 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19821 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19822
19823 /*Notify UMAC*/
19824 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19825
19826 return WDI_STATUS_SUCCESS;
19827}/*WDI_ProcessTdlsInd*/
19828#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019829/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019830*@brief Process Noa Start Indication function (called when
19831 an indication of this kind is being received over the
19832 bus from HAL)
19833
19834 @param pWDICtx: pointer to the WLAN DAL context
19835 pEventData: pointer to the event information structure
19836
19837 @see
19838 @return Result of the function call
19839*/
19840WDI_Status
19841WDI_ProcessP2pNoaStartInd
19842(
19843 WDI_ControlBlockType* pWDICtx,
19844 WDI_EventInfoType* pEventData
19845)
19846{
19847 WDI_LowLevelIndType wdiInd;
19848 tNoaStartIndMsg halNoaStartIndMsg;
19849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19850
19851 /*-------------------------------------------------------------------------
19852 Sanity check
19853 -------------------------------------------------------------------------*/
19854 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19855 ( NULL == pEventData->pEventData ))
19856 {
19857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19858 "%s: Invalid parameters", __func__);
19859 WDI_ASSERT( 0 );
19860 return WDI_STATUS_E_FAILURE;
19861 }
19862
19863 /*-------------------------------------------------------------------------
19864 Extract indication and send it to UMAC
19865 -------------------------------------------------------------------------*/
19866 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19867 pEventData->pEventData,
19868 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19869
19870 /*Fill in the indication parameters*/
19871 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19872
19873 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19874 = halNoaStartIndMsg.noaStartIndParams.status;
19875
19876 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19877 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19878
19879 /*Notify UMAC*/
19880 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19881
19882 return WDI_STATUS_SUCCESS;
19883}/*WDI_ProcessNoaAttrInd*/
19884
19885/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019886*@brief Process Noa Attr Indication function (called when
19887 an indication of this kind is being received over the
19888 bus from HAL)
19889
19890 @param pWDICtx: pointer to the WLAN DAL context
19891 pEventData: pointer to the event information structure
19892
19893 @see
19894 @return Result of the function call
19895*/
19896WDI_Status
19897WDI_ProcessP2pNoaAttrInd
19898(
19899 WDI_ControlBlockType* pWDICtx,
19900 WDI_EventInfoType* pEventData
19901)
19902{
19903 WDI_LowLevelIndType wdiInd;
19904 tNoaAttrIndMsg halNoaAttrIndMsg;
19905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19906
19907 /*-------------------------------------------------------------------------
19908 Sanity check
19909 -------------------------------------------------------------------------*/
19910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19911 ( NULL == pEventData->pEventData ))
19912 {
19913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 WDI_ASSERT( 0 );
19916 return WDI_STATUS_E_FAILURE;
19917 }
19918
19919 /*-------------------------------------------------------------------------
19920 Extract indication and send it to UMAC
19921 -------------------------------------------------------------------------*/
19922 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19923 pEventData->pEventData,
19924 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19925
19926 /*Fill in the indication parameters*/
19927 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019928
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19930 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019931
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19933 = halNoaAttrIndMsg.noaAttrIndParams.index;
19934 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19935 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19936 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19937 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019938
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19940 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19941 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19942 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19943 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19944 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19945 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19946 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019947
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19949 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19950 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19951 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19952 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19953 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19954 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19955 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19956
ltimariu034f7d62013-01-24 18:54:33 -080019957 if ( pWDICtx->wdiLowLevelIndCB )
19958 {
19959 /*Notify UMAC*/
19960 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19961 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019962
19963 return WDI_STATUS_SUCCESS;
19964}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019965
19966/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019967 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 an indication of this kind is being received over the
19969 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019970
19971 @param pWDICtx: pointer to the WLAN DAL context
19972 pEventData: pointer to the event information structure
19973
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 @see
19975 @return Result of the function call
19976*/
19977WDI_Status
19978WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019979(
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 WDI_ControlBlockType* pWDICtx,
19981 WDI_EventInfoType* pEventData
19982)
19983{
19984 WDI_LowLevelIndType wdiInd;
19985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019986
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 /*-------------------------------------------------------------------------
19988 Extract indication and send it to UMAC
19989 -------------------------------------------------------------------------*/
19990 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19992
ltimariu034f7d62013-01-24 18:54:33 -080019993 if ( pWDICtx->wdiLowLevelIndCB )
19994 {
19995 /*Notify UMAC*/
19996 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19997 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019998
Jeff Johnsone7245742012-09-05 17:12:55 -070019999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020000}/*WDI_ProcessTxPerHitInd*/
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002/**
20003 @brief WDI_ProcessFTMCommandReq
20004 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020005
20006 @param pWDICtx: pointer to the WLAN DAL context
20007 pEventData: pointer to the event information structure
20008
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 @see
20010 @return Result of the function call
20011*/
20012WDI_Status
20013WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020014(
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 WDI_ControlBlockType* pWDICtx,
20016 WDI_EventInfoType* pEventData
20017)
20018{
20019 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20020 wpt_uint8 *ftmCommandBuffer = NULL;
20021 wpt_uint16 dataOffset;
20022 wpt_uint16 bufferSize;
20023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 -------------------------------------------------------------------------*/
20026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20027 ( NULL == pEventData->pEventData))
20028
20029 {
20030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 }
20035
20036 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20037
20038 /* Get MSG Buffer */
20039 WDI_GetMessageBuffer(pWDICtx,
20040 WDI_FTM_CMD_REQ,
20041 ftmCommandReq->bodyLength,
20042 &ftmCommandBuffer,
20043 &dataOffset,
20044 &bufferSize);
20045
20046 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20047 ftmCommandReq->FTMCommandBody,
20048 ftmCommandReq->bodyLength);
20049
20050 /* Send MSG */
20051 return WDI_SendMsg(pWDICtx,
20052 ftmCommandBuffer,
20053 bufferSize,
20054 pEventData->pCBfnc,
20055 pEventData->pUserData,
20056 WDI_FTM_CMD_RESP);
20057}
20058
20059/**
20060 @brief WDI_ProcessFTMCommandRsp
20061 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020062
20063 @param pWDICtx: pointer to the WLAN DAL context
20064 pEventData: pointer to the event information structure
20065
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 @see
20067 @return Result of the function call
20068*/
20069WDI_Status
20070WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020071(
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_ControlBlockType* pWDICtx,
20073 WDI_EventInfoType* pEventData
20074)
20075{
20076 WDI_FTMCommandRspCb ftmCMDRspCb;
20077 tProcessPttRspParams *ftmCMDRspData = NULL;
20078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20079
20080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 -------------------------------------------------------------------------*/
20083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20084 ( NULL == pEventData->pEventData))
20085 {
20086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 }
20091
20092 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20093
20094 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20095
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20097 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020098 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20099
20100 /*Notify UMAC*/
20101 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20102
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020104}
Jeff Johnson295189b2012-06-20 16:38:30 -070020105/**
20106 @brief WDI_ProcessHalDumpCmdReq
20107 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020108
20109 @param pWDICtx: pointer to the WLAN DAL context
20110 pEventData: pointer to the event information structure
20111
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 @see
20113 @return Result of the function call
20114*/
20115WDI_Status
20116WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020117(
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 WDI_ControlBlockType* pWDICtx,
20119 WDI_EventInfoType* pEventData
20120)
20121{
20122 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20123 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20124 wpt_uint16 usDataOffset = 0;
20125 wpt_uint16 usSendSize = 0;
20126 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020128
20129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 -------------------------------------------------------------------------*/
20132 if (( NULL == pEventData ) ||
20133 ( NULL == pEventData->pEventData) ||
20134 ( NULL == pEventData->pCBfnc ))
20135 {
20136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 }
20141
20142 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20143 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20144
20145 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020148 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020149 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020150 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020154 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020156
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 /*-----------------------------------------------------------------------
20158 Get message buffer
20159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20162 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20165 {
20166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20167 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20168 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 }
20172
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 wpalMemoryCopy( pSendBuffer+usDataOffset,
20174 &halDumpCmdReqMsg.dumpCmdReqParams,
20175 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020176
20177 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020178 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020179
20180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20184 wdiHALDumpCmdRspCb, pEventData->pUserData,
20185 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020186}
20187
20188/**
20189 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 Process hal Dump Command Response from HAL, simply route to HDD
20191
20192 @param pWDICtx: pointer to the WLAN DAL context
20193 pEventData: pointer to the event information structure
20194
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 @see
20196 @return Result of the function call
20197*/
20198WDI_Status
20199WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020200(
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 WDI_ControlBlockType* pWDICtx,
20202 WDI_EventInfoType* pEventData
20203)
20204{
20205 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020206 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20208
20209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 -------------------------------------------------------------------------*/
20212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20213 ( NULL == pEventData->pEventData))
20214 {
20215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 }
20220
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020222
20223 /*Initialize the WDI Response structure */
20224 wdiHALDumpCmdRsp.usBufferLen = 0;
20225 wdiHALDumpCmdRsp.pBuffer = NULL;
20226
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020227 wpalMemoryCopy( &halDumpCmdRspParams,
20228 pEventData->pEventData,
20229 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020230
20231 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020232 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020233
20234 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020235 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 {
20237 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020238 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20239 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20240
20241 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20242 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020243 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020245
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 /*Notify UMAC*/
20247 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20248
20249 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20250 {
20251 /* Free the allocated buffer */
20252 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20253 }
20254 return WDI_STATUS_SUCCESS;
20255}
20256
20257/*==========================================================================
20258 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020261 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020262==========================================================================*/
20263/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020264 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020265 when it wishes to send up a notification like the ones
20266 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020267
Jeff Johnson295189b2012-06-20 16:38:30 -070020268 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020269
20270 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020272 wctsNotifyCBData: the callback data of the user
20273
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020275
20276 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020277*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020278void
Jeff Johnson295189b2012-06-20 16:38:30 -070020279WDI_NotifyMsgCTSCB
20280(
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 WCTS_NotifyEventType wctsEvent,
20283 void* wctsNotifyCBData
20284)
20285{
Jeff Johnsone7245742012-09-05 17:12:55 -070020286 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20288
20289 if (NULL == pWDICtx )
20290 {
20291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 }
20296
20297 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20298 {
20299 /* callback presumably occurred after close */
20300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020301 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020302 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020303 }
20304
20305 if ( WCTS_EVENT_OPEN == wctsEvent )
20306 {
20307 /*Flag must be set atomically as it is checked from incoming request
20308 functions*/
20309 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020310 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020311
20312 /*Nothing to do - so try to dequeue any pending request that may have
20313 occurred while we were trying to establish this*/
20314 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 {
20319 /*Flag must be set atomically as it is checked from incoming request
20320 functions*/
20321 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020322 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020323
20324 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020325 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020326 wpalMutexRelease(&pWDICtx->wptMutex);
20327
20328 /*Notify that the Control Channel is closed */
20329 wpalEventSet(&pWDICtx->wctsActionEvent);
20330 }
20331
20332}/*WDI_NotifyMsgCTSCB*/
20333
20334
20335/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020336 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 when it wishes to send up a packet received over the
20338 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020339
Jeff Johnson295189b2012-06-20 16:38:30 -070020340 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020341
20342 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 pMsg: the packet
20344 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020345 wctsRxMsgCBData: the callback data of the user
20346
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020348
20349 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020350*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020351void
20352WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020353(
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 void* pMsg,
20356 wpt_uint32 uLen,
20357 void* wctsRxMsgCBData
20358)
20359{
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 tHalMsgHeader *pHalMsgHeader;
20361 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20364
20365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 ( uLen < sizeof(tHalMsgHeader)))
20370 {
20371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020374 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020375 }
20376
20377 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20378 {
20379 /* callback presumably occurred after close */
20380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020381 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020382 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 }
20384
Jeff Johnsone7245742012-09-05 17:12:55 -070020385 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 context - so no serialization is necessary here
20387 ! - revisit this assumption */
20388
20389 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20390
20391 if ( uLen != pHalMsgHeader->msgLen )
20392 {
20393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20394 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20396 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 }
20398
20399 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20400
20401 /*The message itself starts after the header*/
20402 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20403 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20404 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20405 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20406
20407
20408 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20409 {
20410 /*Stop the timer as the response was received */
20411 /*!UT - check for potential race conditions between stop and response */
20412 wpalTimerStop(&pWDICtx->wptResponseTimer);
20413 }
20414 /* Check if we receive a response message which is not expected */
20415 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20416 {
20417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20418 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20419 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020420 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20422 pWDICtx->wdiExpectedResponse);
20423 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20424 return;
20425 }
20426
20427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20428 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20429
20430 /*Post response event to the state machine*/
20431 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20432
20433}/*WDI_RXMsgCTSCB*/
20434
20435
20436/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020438========================================================================*/
20439
20440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020441 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020443
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 @param pWDICtx - pointer to the control block
20445
20446 @return Result of the function call
20447*/
20448WPT_INLINE WDI_Status
20449WDI_CleanCB
20450(
20451 WDI_ControlBlockType* pWDICtx
20452)
20453{
20454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20455
20456 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020458
Jeff Johnsone7245742012-09-05 17:12:55 -070020459 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20461 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20462
20463 WDI_ResetAssocSessions( pWDICtx );
20464
20465 return WDI_STATUS_SUCCESS;
20466}/*WDI_CleanCB*/
20467
20468
20469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020470 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020471
Jeff Johnsone7245742012-09-05 17:12:55 -070020472
20473 @param pWDICtx: pointer to the WLAN DAL context
20474 pEventData: pointer to the event information structure
20475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 @see
20477 @return Result of the function call
20478*/
20479WPT_INLINE WDI_Status
20480WDI_ProcessRequest
20481(
20482 WDI_ControlBlockType* pWDICtx,
20483 WDI_EventInfoType* pEventData
20484)
20485{
20486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20487
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 already checked these pointers*/
20490
20491 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20492 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20495 "Calling request processing function for req %s (%d) %x",
20496 WDI_getReqMsgString(pEventData->wdiRequest),
20497 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20498 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20499 }
20500 else
20501 {
20502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 pEventData->wdiRequest);
20505 return WDI_STATUS_E_NOT_IMPLEMENT;
20506 }
20507}/*WDI_ProcessRequest*/
20508
20509
20510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020513 prefixes it with a send message header
20514
20515 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 wdiReqType: type of the request being sent
20517 uBufferLen: message buffer len
20518 pMsgBuffer: resulting allocated buffer
20519 pusDataOffset: offset in the buffer where the caller
20520 can start copying its message data
20521 puBufferSize: the resulting buffer size (offset+buff
20522 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020523
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 @see
20525 @return Result of the function call
20526*/
20527WDI_Status
20528WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020529(
20530 WDI_ControlBlockType* pWDICtx,
20531 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 wpt_uint8** pMsgBuffer,
20534 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 wpt_uint16* pusBufferSize
20536)
20537{
20538 tHalMsgHeader halMsgHeader;
20539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20540
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 again*/
20543
20544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020548 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20549 if ( NULL == *pMsgBuffer )
20550 {
20551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20552 "Unable to allocate message buffer for req %s (%d)",
20553 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 }
20558
20559 /*-------------------------------------------------------------------------
20560 Fill in the message header
20561 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20563 /* Fill msgVersion */
20564#ifdef WLAN_FEATURE_11AC
20565 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020566 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 else
20568#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020569 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020570
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20572 *pusDataOffset = sizeof(halMsgHeader);
20573 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20574
20575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020576}/*WDI_GetMessageBuffer*/
20577
20578
20579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020580 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 the CB
20583
20584 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020586
Jeff Johnson295189b2012-06-20 16:38:30 -070020587 usSendSize size of the buffer to be sent
20588 pRspCb: response callback - save in the WDI
20589 CB
20590 pUserData: user data associated with the
20591 callback
20592 wdiExpectedResponse: the code of the response that is
20593 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020594
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 @see
20596 @return Result of the function call
20597*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020598WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020599WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020600(
20601 WDI_ControlBlockType* pWDICtx,
20602 wpt_uint8* pSendBuffer,
20603 wpt_uint32 usSendSize,
20604 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 void* pUserData,
20606 WDI_ResponseEnumType wdiExpectedResponse
20607)
20608{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020609 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020610 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20612
20613 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 ------------------------------------------------------------------------*/
20616 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020617 pWDICtx->pfncRspCB = pRspCb;
20618 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020619
20620 /*-----------------------------------------------------------------------
20621 Call the CTS to send this message over - free message afterwards
20622 - notify transport failure
20623 Note: CTS is reponsible for freeing the message buffer.
20624 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020625 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20626 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20627 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 "Failed to send message over the bus - catastrophic failure");
20631
Jeff Johnsond13512a2012-07-17 11:42:19 -070020632 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020634 else
20635 {
20636 /* even when message was placed in CTS deferred Q, we will treat it
20637 success but log this info
20638 */
20639 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20640 {
20641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20642 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20643 "response %s (%d)",
20644 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20645 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020646 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020647 }
20648 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020649
Jeff Johnsond13512a2012-07-17 11:42:19 -070020650 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 if ( NULL != pWDICtx->wdiReqStatusCB )
20652 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020653 /*Inform originator whether request went through or not*/
20654 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20655 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 pWDICtx->wdiReqStatusCB = NULL;
20657 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020658 callback(wdiStatus, callbackContext);
20659
20660 /*For WDI requests which have registered a request callback,
20661 inform the WDA caller of the same via setting the return value
20662 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20663 end up repeating the functonality in the req callback for the
20664 WDI_STATUS_E_FAILURE case*/
20665 if (wdiStatus == WDI_STATUS_E_FAILURE)
20666 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 }
20668
Jeff Johnsond13512a2012-07-17 11:42:19 -070020669 if ( wdiStatus == WDI_STATUS_SUCCESS )
20670 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 /*Start timer for the expected response */
20672 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020673
20674 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020675 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020676 }
20677 else
20678 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020679 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020680 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20681 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020682
Jeff Johnsond13512a2012-07-17 11:42:19 -070020683 return wdiStatus;
20684
Jeff Johnson295189b2012-06-20 16:38:30 -070020685}/*WDI_SendMsg*/
20686
20687
20688
20689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 the bus using the control transport and saves some info
20692 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020693
20694 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 pSendBuffer: buffer to be sent
20696 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020697
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 @see
20699 @return Result of the function call
20700*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020701WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020702WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020703(
20704 WDI_ControlBlockType* pWDICtx,
20705 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 wpt_uint32 usSendSize
20707)
20708{
20709 wpt_uint32 uStatus ;
20710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20711
20712 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020713 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 Note: CTS is reponsible for freeing the message buffer.
20715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020716 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 (void*)pSendBuffer, usSendSize );
20718
20719 /*Inform Upper MAC about the outcome of the request*/
20720 if ( NULL != pWDICtx->wdiReqStatusCB )
20721 {
20722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20723 "Send indication status : %d", uStatus);
20724
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020725 /* even if CTS placed indication into its deferred Q, we treat it
20726 * as success and let CTS drain its queue as per smd interrupt to CTS
20727 */
20728 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 -070020729 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 }
20731
20732 /*If sending of the message failed - it is considered catastrophic and
20733 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020734 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20735 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20736
Jeff Johnson295189b2012-06-20 16:38:30 -070020737 {
20738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020740
20741 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20742 return WDI_STATUS_E_FAILURE;
20743 }
20744
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020746}/*WDI_SendIndication*/
20747
20748
20749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 @brief WDI_DetectedDeviceError - called internally by DAL when
20751 it has detected a failure in the device
20752
20753 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 usErrorCode: error code detected by WDI or received
20755 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020756
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020759*/
20760void
20761WDI_DetectedDeviceError
20762(
20763 WDI_ControlBlockType* pWDICtx,
20764 wpt_uint16 usErrorCode
20765)
20766{
20767 WDI_LowLevelIndType wdiInd;
20768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20769
20770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20771 "Device Error detected code: %d - transitioning to stopped state",
20772 usErrorCode);
20773
20774 wpalMutexAcquire(&pWDICtx->wptMutex);
20775
20776 WDI_STATableStop(pWDICtx);
20777
20778 WDI_ResetAssocSessions(pWDICtx);
20779
20780 /*Set the expected state transition to stopped - because the device
20781 experienced a failure*/
20782 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20783
20784 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020786
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020788
20789 /*TO DO: - there should be an attempt to reset the device here*/
20790
20791 wpalMutexRelease(&pWDICtx->wptMutex);
20792
20793 /*------------------------------------------------------------------------
20794 Notify UMAC if a handler is registered
20795 ------------------------------------------------------------------------*/
20796 if (pWDICtx->wdiLowLevelIndCB)
20797 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20799 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020800
20801 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20802 }
20803}/*WDI_DetectedDeviceError*/
20804
20805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 we started on send message has expire - this should
20808 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020809 reply - trigger catastrophic failure
20810 @param
20811
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020813
20814 @see
20815 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020816*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020817void
Jeff Johnson295189b2012-06-20 16:38:30 -070020818WDI_ResponseTimerCB
20819(
20820 void *pUserData
20821)
20822{
20823 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20825
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020826 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 }
20833
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020834 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020835 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020836
20837 /* If response timer is running at this time that means this timer
20838 * event is not for the last request but rather last-to-last request and
20839 * this timer event has come after we recevied respone for last-to-last
20840 * message
20841 */
20842 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20843 {
20844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20845 "WDI_ResponseTimerCB: timer in running state on timer event, "
20846 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20847 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20848 return;
20849 }
20850
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020851 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 {
20853
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020856 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020858 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20859 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020860
20861 /* WDI timeout means Riva is not responding or SMD communication to Riva
20862 * is not happening. The only possible way to recover from this error
20863 * is to initiate SSR from APPS.
20864 * There is also an option to re-enable wifi, which will eventually
20865 * trigger SSR
20866 */
20867 if (gWDICb.bEnableSSR == false)
20868 {
20869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20870 "SSR is not enabled on WDI timeout");
20871 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20872 return;
20873 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020874#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020875 wpalWcnssResetIntr();
20876 /* if this timer fires, it means Riva did not receive the FIQ */
20877 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020878#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020879 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20880 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020881#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020882 }
20883 else
20884 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020886 "Timeout occurred but not waiting for any response %d "
20887 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20888 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20889 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 }
20891
20892 return;
20893
20894}/*WDI_ResponseTimerCB*/
20895
20896
20897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020899
Jeff Johnsone7245742012-09-05 17:12:55 -070020900
20901 @param pWDICtx: pointer to the WLAN DAL context
20902 pEventData: pointer to the event information structure
20903
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 @see
20905 @return Result of the function call
20906*/
20907WPT_INLINE WDI_Status
20908WDI_ProcessResponse
20909(
20910 WDI_ControlBlockType* pWDICtx,
20911 WDI_EventInfoType* pEventData
20912)
20913{
20914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20915
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 already checked these pointers
20918 ! - revisit this assumption */
20919 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20920 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020921 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 WDI_getRespMsgString(pEventData->wdiResponse),
20925 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20926 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20927 }
20928 else
20929 {
20930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020931 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 pEventData->wdiResponse);
20933 return WDI_STATUS_E_NOT_IMPLEMENT;
20934 }
20935}/*WDI_ProcessResponse*/
20936
20937
20938/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020940=========================================================================*/
20941
20942/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 @brief Utility function used by the DAL Core to help queue a
20944 request that cannot be processed right away.
20945 @param
20946
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 pWDICtx: - pointer to the WDI control block
20948 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020949 queued
20950
20951 @see
20952 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020953*/
20954WDI_Status
20955WDI_QueuePendingReq
20956(
20957 WDI_ControlBlockType* pWDICtx,
20958 WDI_EventInfoType* pEventData
20959)
20960{
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20965
20966 if ( NULL == pEventDataQueue )
20967 {
20968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020969 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 WDI_ASSERT(0);
20971 return WDI_STATUS_MEM_FAILURE;
20972 }
20973
20974 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20975 pEventDataQueue->pUserData = pEventData->pUserData;
20976 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20977 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020979
20980 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20981 {
20982 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020983
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 if ( NULL == pEventInfo )
20985 {
20986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 WDI_ASSERT(0);
20989 wpalMemoryFree(pEventDataQueue);
20990 return WDI_STATUS_MEM_FAILURE;
20991 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020992
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20994
20995 }
20996 pEventDataQueue->pEventData = pEventInfo;
20997
20998 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000
Jeff Johnsone7245742012-09-05 17:12:55 -070021001 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021002
21003 return WDI_STATUS_SUCCESS;
21004}/*WDI_QueuePendingReq*/
21005
21006/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 @param
21010
21011 pMsg - pointer to the message
21012
21013 @see
21014 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021015*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021016void
Jeff Johnson295189b2012-06-20 16:38:30 -070021017WDI_PALCtrlMsgCB
21018(
21019 wpt_msg *pMsg
21020)
21021{
21022 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 WDI_ControlBlockType* pWDICtx = NULL;
21024 WDI_Status wdiStatus;
21025 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 void* pUserData;
21027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21028
21029 if (( NULL == pMsg )||
21030 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21031 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21032 {
21033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 }
21038
21039 /*Transition back to the state that we had before serialization
21040 - serialization transitions us to BUSY to stop any incomming requests
21041 ! TO DO L: possible race condition here if a request comes in between the
21042 state transition and the post function*/
21043
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021045
21046 /*-----------------------------------------------------------------------
21047 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 -----------------------------------------------------------------------*/
21050 switch ( pEventData->wdiRequest )
21051 {
21052
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021054 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21055 break;
21056
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 case WDI_NV_DOWNLOAD_REQ:
21058 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21059 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21060 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21061 {
21062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021063 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21065 }
21066 else
21067 {
21068 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21069 }
21070
21071 break;
21072
21073 default:
21074 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21075 break;
21076 }/*switch ( pEventData->wdiRequest )*/
21077
21078 if ( WDI_STATUS_SUCCESS != wdiStatus )
21079 {
21080 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21081
21082 if ( NULL != pfnReqStatusCB )
21083 {
21084 /*Fail the request*/
21085 pfnReqStatusCB( wdiStatus, pUserData);
21086 }
21087 }
21088
21089 /* Free data - that was allocated when queueing*/
21090 if( pEventData != NULL )
21091 {
21092 if( pEventData->pEventData != NULL )
21093 {
21094 wpalMemoryFree(pEventData->pEventData);
21095 }
21096 wpalMemoryFree(pEventData);
21097 }
21098
21099 if( pMsg != NULL )
21100 {
21101 wpalMemoryFree(pMsg);
21102 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021103
Jeff Johnson295189b2012-06-20 16:38:30 -070021104}/*WDI_PALCtrlMsgCB*/
21105
21106/**
21107 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 and schedule for execution a pending request
21109 @param
21110
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 pWDICtx: - pointer to the WDI control block
21112 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 queued
21114
21115 @see
21116 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021117*/
21118WDI_Status
21119WDI_DequeuePendingReq
21120(
21121 WDI_ControlBlockType* pWDICtx
21122)
21123{
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21128
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021130
21131 if ( NULL == pNode )
21132 {
21133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021134 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 return WDI_STATUS_SUCCESS;
21136 }
21137
21138 /*The node actually points to the 1st element inside the Event Data struct -
21139 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021140 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021141
21142 /*Serialize processing in the control thread
21143 !TO DO: - check to see if these are all the messages params that need
21144 to be filled in*/
21145 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21146
21147 if ( NULL == palMsg )
21148 {
21149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021152 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021153 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 palMsg->callback = WDI_PALCtrlMsgCB;
21156 palMsg->ptr = pEventData;
21157
21158 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 palMsg->val = pWDICtx->uGlobalState;
21160
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 /*Transition back to BUSY as we need to handle a queued request*/
21162 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021163
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21165
21166 return WDI_STATUS_PENDING;
21167}/*WDI_DequeuePendingReq*/
21168
21169
21170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 away.- The assoc requests will be queued by BSSID
21174 @param
21175
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 pWDICtx: - pointer to the WDI control block
21177 pEventData: pointer to the evnt info that needs to be queued
21178 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021179
21180 @see
21181 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021182*/
21183WDI_Status
21184WDI_QueueNewAssocRequest
21185(
21186 WDI_ControlBlockType* pWDICtx,
21187 WDI_EventInfoType* pEventData,
21188 wpt_macAddr macBSSID
21189)
21190{
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 wpt_uint8 i;
21192 WDI_BSSSessionType* pSession = NULL;
21193 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021195 void* pEventInfo;
21196 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021198
Jeff Johnsone7245742012-09-05 17:12:55 -070021199
21200 /*------------------------------------------------------------------------
21201 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 ------------------------------------------------------------------------*/
21203 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21204 {
21205 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21206 {
21207 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 pSession = &pWDICtx->aBSSSessions[i];
21209 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 }
21211 }
21212
21213 if ( i >= WDI_MAX_BSS_SESSIONS )
21214 {
21215 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021218
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 /*------------------------------------------------------------------------
21220 Fill in the BSSID for this session and set the usage flag
21221 ------------------------------------------------------------------------*/
21222 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021223 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021224
21225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 ------------------------------------------------------------------------*/
21228 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21229 if ( NULL == pEventDataQueue )
21230 {
21231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021232 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 WDI_ASSERT(0);
21234 return WDI_STATUS_MEM_FAILURE;
21235 }
21236
21237 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21238 if ( NULL == pSessionIdElement )
21239 {
21240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021241 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 WDI_ASSERT(0);
21243 wpalMemoryFree(pEventDataQueue);
21244 return WDI_STATUS_MEM_FAILURE;
21245 }
21246
21247 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21248 if ( NULL == pEventInfo )
21249 {
21250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021251 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 WDI_ASSERT(0);
21253 wpalMemoryFree(pSessionIdElement);
21254 wpalMemoryFree(pEventDataQueue);
21255 return WDI_STATUS_MEM_FAILURE;
21256 }
21257
21258 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21259 pEventDataQueue->pUserData = pEventData->pUserData;
21260 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21261 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021263
21264 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21265 pEventDataQueue->pEventData = pEventInfo;
21266
21267 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021269
21270 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021272
Jeff Johnsone7245742012-09-05 17:12:55 -070021273 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021274
21275 /*We need to maintain a separate list that keeps track of the order in which
21276 the new assoc requests are being queued such that we can start processing
21277 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021278 pSessionIdElement->ucIndex = i;
21279 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021280
21281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21282 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021283 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021284
21285 /*Return pending as this is what the status of the request is since it has
21286 been queued*/
21287 return WDI_STATUS_PENDING;
21288}/*WDI_QueueNewAssocRequest*/
21289
21290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021293 away.- The assoc requests will be queued by BSSID
21294 @param
21295
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 pWDICtx: - pointer to the WDI control block
21297 pSession: - session in which to queue
21298 pEventData: pointer to the event info that needs to be
21299 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021300
21301 @see
21302 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021303*/
21304WDI_Status
21305WDI_QueueAssocRequest
21306(
21307 WDI_ControlBlockType* pWDICtx,
21308 WDI_BSSSessionType* pSession,
21309 WDI_EventInfoType* pEventData
21310)
21311{
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021316
21317 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 Sanity check
21319 ------------------------------------------------------------------------*/
21320 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21321 {
21322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021324
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 }
21327
21328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 ------------------------------------------------------------------------*/
21331 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21332 if ( NULL == pEventDataQueue )
21333 {
21334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021335 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 WDI_ASSERT(0);
21337 return WDI_STATUS_MEM_FAILURE;
21338 }
21339
21340 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21341 if ( NULL == pEventInfo )
21342 {
21343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21344 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021345 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 WDI_ASSERT(0);
21347 wpalMemoryFree(pEventDataQueue);
21348 return WDI_STATUS_MEM_FAILURE;
21349 }
21350
21351 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21352 pEventDataQueue->pUserData = pEventData->pUserData;
21353 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21354 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 pEventDataQueue->pEventData = pEventInfo;
21357
21358 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21359
21360 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021362
21363 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021365
Jeff Johnsone7245742012-09-05 17:12:55 -070021366 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021367
21368 /*The result of this operation is pending because the request has been
21369 queued and it will be processed at a later moment in time */
21370 return WDI_STATUS_PENDING;
21371}/*WDI_QueueAssocRequest*/
21372
21373/**
21374 @brief Utility function used by the DAL Core to help dequeue
21375 an association request that was pending
21376 The request will be queued up in front of the main
21377 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021378 @param
21379
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021381
21382
21383 @see
21384 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021385*/
21386WDI_Status
21387WDI_DequeueAssocRequest
21388(
21389 WDI_ControlBlockType* pWDICtx
21390)
21391{
Jeff Johnsone7245742012-09-05 17:12:55 -070021392 wpt_list_node* pNode = NULL;
21393 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 WDI_BSSSessionType* pSession;
21395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021396
21397 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 Sanity check
21399 ------------------------------------------------------------------------*/
21400 if ( NULL == pWDICtx )
21401 {
21402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021404
Jeff Johnsone7245742012-09-05 17:12:55 -070021405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 }
21407
21408 /*------------------------------------------------------------------------
21409 An association has been completed => a new association can occur
21410 Check to see if there are any pending associations ->
21411 If so , transfer all the pending requests into the busy queue for
21412 processing
21413 These requests have arrived prior to the requests in the busy queue
21414 (bc they needed to be processed in order to be placed in this queue)
21415 => they will be placed at the front of the busy queue
21416 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021417 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021418
21419 if ( NULL == pNode )
21420 {
21421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021422 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021423 return WDI_STATUS_SUCCESS;
21424 }
21425
21426 /*The node actually points to the 1st element inside the Session Id struct -
21427 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021428 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021429
21430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21431 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21432
21433 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21434 {
21435 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021436
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 the front of the main waiting queue for subsequent execution*/
21439 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 while ( NULL != pNode )
21441 {
21442 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21444 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 }
21448 else
21449 {
21450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 WPAL_ASSERT(0);
21453 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021456
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21458 wpalMemoryFree(pSessionIdElement);
21459 return WDI_STATUS_SUCCESS;
21460}/*WDI_DequeueAssocRequest*/
21461
21462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 pending requests - all req cb will be called with
21465 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021466 @param
21467
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021469
21470 @see
21471 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021472*/
21473WDI_Status
21474WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021475(
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 WDI_ControlBlockType* pWDICtx
21477)
21478{
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 void* pUserData;
21483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21484
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021486
21487 /*------------------------------------------------------------------------
21488 Go through all the requests and fail them - this will only be called
21489 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 ------------------------------------------------------------------------*/
21492 while( pNode )
21493 {
21494 /*The node actually points to the 1st element inside the Event Data struct -
21495 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 pEventDataQueue = (WDI_EventInfoType*)pNode;
21497
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21499 if ( NULL != pfnReqStatusCB )
21500 {
21501 /*Fail the request*/
21502 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21503 }
21504 /* Free data - that was allocated when queueing */
21505 if ( pEventDataQueue->pEventData != NULL )
21506 {
21507 wpalMemoryFree(pEventDataQueue->pEventData);
21508 }
21509 wpalMemoryFree(pEventDataQueue);
21510
21511 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21512 {
21513 break;
21514 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021515 }
21516
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 return WDI_STATUS_SUCCESS;
21518}/*WDI_ClearPendingRequests*/
21519
21520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 @brief Helper routine used to init the BSS Sessions in the WDI control block
21522
21523
21524 @param pWDICtx: pointer to the WLAN DAL context
21525
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 @see
21527*/
21528void
21529WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021530(
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 WDI_ControlBlockType* pWDICtx
21532)
21533{
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21536
21537 /*-------------------------------------------------------------------------
21538 No Sanity check
21539 -------------------------------------------------------------------------*/
21540 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21541 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21544 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21545 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21546 }
21547}/*WDI_ResetAssocSessions*/
21548
21549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 @brief Helper routine used to find a session based on the BSSID
21551
21552
21553 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 pSession: pointer to the session (if found)
21556
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021559*/
21560wpt_uint8
21561WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021562(
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 WDI_ControlBlockType* pWDICtx,
21564 wpt_macAddr macBSSID,
21565 WDI_BSSSessionType** ppSession
21566)
21567{
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21570
21571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 -------------------------------------------------------------------------*/
21574 if ( NULL == ppSession )
21575 {
21576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021577 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021578 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 }
21580
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021582
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 /*------------------------------------------------------------------------
21584 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 ------------------------------------------------------------------------*/
21586 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21587 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021588 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21589 (eWLAN_PAL_TRUE ==
21590 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21591 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 {
21593 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021594 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 return i;
21596 }
21597 }
21598
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021600}/*WDI_FindAssocSession*/
21601
21602/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021603 @brief Helper routine used to find a session based on the BSSID
21604
21605
21606 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 ucBSSIdx: BSS Index of the session
21608 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021609
Jeff Johnson295189b2012-06-20 16:38:30 -070021610 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021611 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021612*/
21613wpt_uint8
21614WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021615(
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 WDI_ControlBlockType* pWDICtx,
21617 wpt_uint16 ucBSSIdx,
21618 WDI_BSSSessionType** ppSession
21619)
21620{
Jeff Johnsone7245742012-09-05 17:12:55 -070021621 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21623
21624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 -------------------------------------------------------------------------*/
21627 if ( NULL == ppSession )
21628 {
21629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021630 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 }
21633
Jeff Johnsone7245742012-09-05 17:12:55 -070021634 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021635
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 /*------------------------------------------------------------------------
21637 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021638 ------------------------------------------------------------------------*/
21639 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21640 {
21641 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21642 {
21643 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021644 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021645 return i;
21646 }
21647 }
21648
Jeff Johnsone7245742012-09-05 17:12:55 -070021649 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021650}/*WDI_FindAssocSessionByBSSIdx*/
21651
21652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 @brief Helper routine used to find a session based on the BSSID
21654
21655
21656 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 ucBSSIdx: BSS Index of the session
21658 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021659
Jeff Johnson295189b2012-06-20 16:38:30 -070021660 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021662*/
21663wpt_uint8
21664WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021665(
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 WDI_ControlBlockType* pWDICtx,
21667 wpt_uint16 usIdx,
21668 WDI_BSSSessionType** ppSession
21669)
21670{
21671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21672
21673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 -------------------------------------------------------------------------*/
21676 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21677 {
21678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021679 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 }
21682
21683 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021685
21686 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021687
Jeff Johnson295189b2012-06-20 16:38:30 -070021688}/*WDI_FindAssocSessionByBSSIdx*/
21689
21690/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021693
21694
21695 @param pWDICtx: pointer to the WLAN DAL context
21696 pSession: pointer to the session (if found)
21697
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021700*/
21701wpt_uint8
21702WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021703(
Jeff Johnson295189b2012-06-20 16:38:30 -070021704 WDI_ControlBlockType* pWDICtx,
21705 WDI_BSSSessionType** ppSession
21706)
21707{
Jeff Johnsone7245742012-09-05 17:12:55 -070021708 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 -------------------------------------------------------------------------*/
21713 if ( NULL == ppSession )
21714 {
21715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021716 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021717 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 }
21719
Jeff Johnsone7245742012-09-05 17:12:55 -070021720 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021721
Jeff Johnsone7245742012-09-05 17:12:55 -070021722 /*------------------------------------------------------------------------
21723 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021724 ------------------------------------------------------------------------*/
21725 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21726 {
21727 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21728 {
21729 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 return i;
21732 }
21733 }
21734
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021736}/*WDI_FindEmptySession*/
21737
21738
21739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021742
21743
21744 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021745 macBSSID: pointer to BSSID. If NULL, get all the session.
21746 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21747 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21748 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 @see
21750 @return Number of sessions in use
21751*/
21752wpt_uint8
21753WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021754(
Hoonki Lee26599972013-04-24 01:21:58 -070021755 WDI_ControlBlockType* pWDICtx,
21756 wpt_macAddr macBSSID,
21757 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021758)
21759{
Jeff Johnsone7245742012-09-05 17:12:55 -070021760 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021762
21763 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021764 Count all sessions in use
21765 ------------------------------------------------------------------------*/
21766 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21767 {
Hoonki Lee26599972013-04-24 01:21:58 -070021768 if ( macBSSID && skipBSSID &&
21769 (eWLAN_PAL_TRUE ==
21770 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21771 WDI_MAC_ADDR_LEN)))
21772 {
21773 continue;
21774 }
21775 else if ( pWDICtx->aBSSSessions[i].bInUse )
21776 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021778 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 }
21780
Jeff Johnsone7245742012-09-05 17:12:55 -070021781 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021782}/*WDI_GetActiveSessionsCount*/
21783
21784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021787
21788
21789 @param pWDICtx: pointer to the WLAN DAL context
21790 pSession: pointer to the session (if found)
21791
Jeff Johnson295189b2012-06-20 16:38:30 -070021792 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021793 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021794*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021795void
Jeff Johnson295189b2012-06-20 16:38:30 -070021796WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021797(
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 WDI_ControlBlockType* pWDICtx,
21799 WDI_BSSSessionType* ppSession
21800)
21801{
21802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021804 -------------------------------------------------------------------------*/
21805 if ( NULL == ppSession )
21806 {
21807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021808 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021809 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 }
21811
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 /*------------------------------------------------------------------------
21813 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 ------------------------------------------------------------------------*/
21815 wpal_list_destroy(&ppSession->wptPendingQueue);
21816 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021817 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21818 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21820 wpal_list_init(&ppSession->wptPendingQueue);
21821
21822}/*WDI_DeleteSession*/
21823
21824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 @param
21828
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 WDI_AddStaParams: - pointer to the WDI Add STA params
21830 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021831
21832 @see
21833 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021834*/
21835void
21836WDI_AddBcastSTAtoSTATable
21837(
21838 WDI_ControlBlockType* pWDICtx,
21839 WDI_AddStaParams * staParams,
21840 wpt_uint16 usBcastStaIdx
21841)
21842{
21843 WDI_AddStaParams wdiAddSTAParam = {0};
21844 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21846
21847 /*---------------------------------------------------------------------
21848 Sanity check
21849 ---------------------------------------------------------------------*/
21850 if ( NULL == staParams )
21851 {
21852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021854
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 }
21857
21858 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21859 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21860 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21861 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21862 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21863 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21864 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21865 WDI_MAC_ADDR_LEN );
21866 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21867 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21868 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21869 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21870 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21871 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21872 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021873
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21875}
21876
21877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 @brief NV blob will be divided into fragments of size 4kb and
21879 Sent to HAL
21880
21881 @param pWDICtx: pointer to the WLAN DAL context
21882 pEventData: pointer to the event information structure
21883
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 @see
21885 @return Result of the function call
21886 */
21887
21888WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021889(
Jeff Johnson295189b2012-06-20 16:38:30 -070021890 WDI_ControlBlockType* pWDICtx,
21891 WDI_EventInfoType* pEventData
21892)
21893{
21894
21895 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21896 wpt_uint8* pSendBuffer = NULL;
21897 wpt_uint16 usDataOffset = 0;
21898 wpt_uint16 usSendSize = 0;
21899 wpt_uint16 usCurrentFragmentSize =0;
21900 wpt_uint8* pSrcBuffer = NULL;
21901 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21902 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21903
21904 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21905 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21906 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21907
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21910
21911 /* Update the current Fragment Number */
21912 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21913
21914 /*Update the HAL REQ structure */
21915 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21916 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21917 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21918
21919 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 image will be sent to HAL*/
21922
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021925 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021926 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021927 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21929 usCurrentFragmentSize = FRAGMENT_SIZE;
21930
21931 /*Update the HAL REQ structure */
21932 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21933 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21934
21935 }
21936 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021937 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021938 usCurrentFragmentSize = FRAGMENT_SIZE;
21939
21940 /*Update the HAL REQ structure */
21941 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21942 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21943 }
21944
21945 /*-----------------------------------------------------------------------
21946 Get message buffer
21947 -----------------------------------------------------------------------*/
21948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21949 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21950 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21953 {
21954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21955 "Unable to get send buffer in NV Download req %x %x ",
21956 pEventData, pwdiNvDownloadReqParams);
21957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 }
21960
21961 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21964
21965 /* Appending the NV image fragment */
21966 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21967 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21968 usCurrentFragmentSize);
21969
21970 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21974 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 WDI_NV_DOWNLOAD_RESP);
21976
21977}
Jeff Johnsone7245742012-09-05 17:12:55 -070021978/*============================================================================
21979 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 ============================================================================*/
21981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 @brief Helper routine used to find a session based on the BSSID
21983 @param pContext: pointer to the WLAN DAL context
21984 @param pDPContext: pointer to the Datapath context
21985
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021988*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021989WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021990WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21991{
21992 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21993
21994 pCB->pDPContext = pDPContext;
21995 return;
21996}
21997
21998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 @brief Helper routine used to find a session based on the BSSID
22000
22001
22002 @param pContext: pointer to the WLAN DAL context
22003
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 @see
22005 @return pointer to Datapath context
22006*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022007WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022008WDI_DS_GetDatapathContext (void *pContext)
22009{
22010 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22011 return pCB->pDPContext;
22012}
22013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 @brief Helper routine used to find a session based on the BSSID
22015
22016
22017 @param pContext: pointer to the WLAN DAL context
22018 @param pDTDriverContext: pointer to the Transport Driver context
22019
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 @see
22021 @return void
22022*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022023WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022024WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22025{
22026 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22027
22028 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022030}
22031
22032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 @brief Helper routine used to find a session based on the BSSID
22034
22035
22036 @param pWDICtx: pointer to the WLAN DAL context
22037
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022039 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022040*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022041WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022042WDT_GetTransportDriverContext (void *pContext)
22043{
22044 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022046}
22047
Jeff Johnsone7245742012-09-05 17:12:55 -070022048/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022049 Helper inline converters
22050 ============================================================================*/
22051/*Convert WDI driver type into HAL driver type*/
22052WPT_STATIC WPT_INLINE WDI_Status
22053WDI_HAL_2_WDI_STATUS
22054(
22055 eHalStatus halStatus
22056)
22057{
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022059 the chances of getting inlined*/
22060 switch( halStatus )
22061 {
22062 case eHAL_STATUS_SUCCESS:
22063 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22064 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22065 return WDI_STATUS_SUCCESS;
22066 case eHAL_STATUS_FAILURE:
22067 return WDI_STATUS_E_FAILURE;
22068 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022069 return WDI_STATUS_MEM_FAILURE;
22070 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 default:
22073 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22074 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022075
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022077}/*WDI_HAL_2_WDI_STATUS*/
22078
22079/*Convert WDI request type into HAL request type*/
22080WPT_STATIC WPT_INLINE tHalHostMsgType
22081WDI_2_HAL_REQ_TYPE
22082(
22083 WDI_RequestEnumType wdiReqType
22084)
22085{
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 the chances of getting inlined*/
22088 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022099 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022107 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022109 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022115 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022117 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 return WLAN_HAL_RMV_STAKEY_REQ;
22125 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 case WDI_DEL_BA_REQ:
22134 return WLAN_HAL_DEL_BA_REQ;
22135#ifdef FEATURE_WLAN_CCX
22136 case WDI_TSM_STATS_REQ:
22137 return WLAN_HAL_TSM_STATS_REQ;
22138#endif
22139 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 case WDI_ADD_BA_SESSION_REQ:
22150 return WLAN_HAL_ADD_BA_SESSION_REQ;
22151 case WDI_TRIGGER_BA_REQ:
22152 return WLAN_HAL_TRIGGER_BA_REQ;
22153 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22158 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22159 case WDI_SET_MAX_TX_POWER_REQ:
22160 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022161 case WDI_SET_TX_POWER_REQ:
22162 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022163 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22164 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022165#ifdef FEATURE_WLAN_TDLS
22166 case WDI_TDLS_LINK_ESTABLISH_REQ:
22167 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22168#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022169 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022171 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022174 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022176 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022178 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022180 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022186 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 case WDI_REM_BEACON_FILTER_REQ:
22190 return WLAN_HAL_REM_BCN_FILTER_REQ;
22191 case WDI_SET_RSSI_THRESHOLDS_REQ:
22192 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22193 case WDI_HOST_OFFLOAD_REQ:
22194 return WLAN_HAL_HOST_OFFLOAD_REQ;
22195 case WDI_WOWL_ADD_BC_PTRN_REQ:
22196 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22197 case WDI_WOWL_DEL_BC_PTRN_REQ:
22198 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22199 case WDI_WOWL_ENTER_REQ:
22200 return WLAN_HAL_ENTER_WOWL_REQ;
22201 case WDI_WOWL_EXIT_REQ:
22202 return WLAN_HAL_EXIT_WOWL_REQ;
22203 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22204 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22205 case WDI_NV_DOWNLOAD_REQ:
22206 return WLAN_HAL_DOWNLOAD_NV_REQ;
22207 case WDI_FLUSH_AC_REQ:
22208 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22209 case WDI_BTAMP_EVENT_REQ:
22210 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22211#ifdef WLAN_FEATURE_VOWIFI_11R
22212 case WDI_AGGR_ADD_TS_REQ:
22213 return WLAN_HAL_AGGR_ADD_TS_REQ;
22214#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022215 case WDI_FTM_CMD_REQ:
22216 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022217 case WDI_ADD_STA_SELF_REQ:
22218 return WLAN_HAL_ADD_STA_SELF_REQ;
22219 case WDI_DEL_STA_SELF_REQ:
22220 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022221#ifdef FEATURE_OEM_DATA_SUPPORT
22222 case WDI_START_OEM_DATA_REQ:
22223 return WLAN_HAL_START_OEM_DATA_REQ;
22224#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 case WDI_HOST_RESUME_REQ:
22226 return WLAN_HAL_HOST_RESUME_REQ;
22227 case WDI_HOST_SUSPEND_IND:
22228 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022229 case WDI_TRAFFIC_STATS_IND:
22230 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022231#ifdef WLAN_FEATURE_11W
22232 case WDI_EXCLUDE_UNENCRYPTED_IND:
22233 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22234#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 case WDI_KEEP_ALIVE_REQ:
22236 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022237#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022238 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22239 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022240#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022241#ifdef FEATURE_WLAN_SCAN_PNO
22242 case WDI_SET_PREF_NETWORK_REQ:
22243 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22244 case WDI_SET_RSSI_FILTER_REQ:
22245 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22246 case WDI_UPDATE_SCAN_PARAMS_REQ:
22247 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22248#endif // FEATURE_WLAN_SCAN_PNO
22249 case WDI_SET_TX_PER_TRACKING_REQ:
22250 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22251#ifdef WLAN_FEATURE_PACKET_FILTERING
22252 case WDI_8023_MULTICAST_LIST_REQ:
22253 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22254 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22257 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22258 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22259 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22260#endif // WLAN_FEATURE_PACKET_FILTERING
22261 case WDI_HAL_DUMP_CMD_REQ:
22262 return WLAN_HAL_DUMP_COMMAND_REQ;
22263#ifdef WLAN_FEATURE_GTK_OFFLOAD
22264 case WDI_GTK_OFFLOAD_REQ:
22265 return WLAN_HAL_GTK_OFFLOAD_REQ;
22266 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22267 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22268#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22269
22270 case WDI_INIT_SCAN_CON_REQ:
22271 return WLAN_HAL_INIT_SCAN_CON_REQ;
22272 case WDI_SET_POWER_PARAMS_REQ:
22273 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22274 case WDI_SET_TM_LEVEL_REQ:
22275 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22276 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22277 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022278#ifdef WLAN_FEATURE_11AC
22279 case WDI_UPDATE_VHT_OP_MODE_REQ:
22280 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22281#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022282 case WDI_GET_ROAM_RSSI_REQ:
22283 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022284 case WDI_DHCP_START_IND:
22285 return WLAN_HAL_DHCP_START_IND;
22286 case WDI_DHCP_STOP_IND:
22287 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022288#ifdef FEATURE_WLAN_LPHB
22289 case WDI_LPHB_CFG_REQ:
22290 return WLAN_HAL_LPHB_CFG_REQ;
22291#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022295
Jeff Johnson295189b2012-06-20 16:38:30 -070022296}/*WDI_2_HAL_REQ_TYPE*/
22297
22298/*Convert WDI response type into HAL response type*/
22299WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22300HAL_2_WDI_RSP_TYPE
22301(
22302 tHalHostMsgType halMsg
22303)
22304{
Jeff Johnsone7245742012-09-05 17:12:55 -070022305 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 the chances of getting inlined*/
22307 switch( halMsg )
22308 {
22309 case WLAN_HAL_START_RSP:
22310 return WDI_START_RESP;
22311 case WLAN_HAL_STOP_RSP:
22312 return WDI_STOP_RESP;
22313 case WLAN_HAL_INIT_SCAN_RSP:
22314 return WDI_INIT_SCAN_RESP;
22315 case WLAN_HAL_START_SCAN_RSP:
22316 return WDI_START_SCAN_RESP;
22317 case WLAN_HAL_END_SCAN_RSP:
22318 return WDI_END_SCAN_RESP;
22319 case WLAN_HAL_FINISH_SCAN_RSP:
22320 return WDI_FINISH_SCAN_RESP;
22321 case WLAN_HAL_CONFIG_STA_RSP:
22322 return WDI_CONFIG_STA_RESP;
22323 case WLAN_HAL_DELETE_STA_RSP:
22324 return WDI_DEL_STA_RESP;
22325 case WLAN_HAL_CONFIG_BSS_RSP:
22326 return WDI_CONFIG_BSS_RESP;
22327 case WLAN_HAL_DELETE_BSS_RSP:
22328 return WDI_DEL_BSS_RESP;
22329 case WLAN_HAL_JOIN_RSP:
22330 return WDI_JOIN_RESP;
22331 case WLAN_HAL_POST_ASSOC_RSP:
22332 return WDI_POST_ASSOC_RESP;
22333 case WLAN_HAL_SET_BSSKEY_RSP:
22334 return WDI_SET_BSS_KEY_RESP;
22335 case WLAN_HAL_SET_STAKEY_RSP:
22336 return WDI_SET_STA_KEY_RESP;
22337 case WLAN_HAL_RMV_BSSKEY_RSP:
22338 return WDI_RMV_BSS_KEY_RESP;
22339 case WLAN_HAL_RMV_STAKEY_RSP:
22340 return WDI_RMV_STA_KEY_RESP;
22341 case WLAN_HAL_SET_BCASTKEY_RSP:
22342 return WDI_SET_STA_BCAST_KEY_RESP;
22343 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22344 // return WDI_RMV_STA_BCAST_KEY_RESP;
22345 case WLAN_HAL_ADD_TS_RSP:
22346 return WDI_ADD_TS_RESP;
22347 case WLAN_HAL_DEL_TS_RSP:
22348 return WDI_DEL_TS_RESP;
22349 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22350 return WDI_UPD_EDCA_PRMS_RESP;
22351 case WLAN_HAL_ADD_BA_RSP:
22352 return WDI_ADD_BA_RESP;
22353 case WLAN_HAL_DEL_BA_RSP:
22354 return WDI_DEL_BA_RESP;
22355#ifdef FEATURE_WLAN_CCX
22356 case WLAN_HAL_TSM_STATS_RSP:
22357 return WDI_TSM_STATS_RESP;
22358#endif
22359 case WLAN_HAL_CH_SWITCH_RSP:
22360 return WDI_CH_SWITCH_RESP;
22361 case WLAN_HAL_SET_LINK_ST_RSP:
22362 return WDI_SET_LINK_ST_RESP;
22363 case WLAN_HAL_GET_STATS_RSP:
22364 return WDI_GET_STATS_RESP;
22365 case WLAN_HAL_UPDATE_CFG_RSP:
22366 return WDI_UPDATE_CFG_RESP;
22367 case WLAN_HAL_ADD_BA_SESSION_RSP:
22368 return WDI_ADD_BA_SESSION_RESP;
22369 case WLAN_HAL_TRIGGER_BA_RSP:
22370 return WDI_TRIGGER_BA_RESP;
22371 case WLAN_HAL_UPDATE_BEACON_RSP:
22372 return WDI_UPD_BCON_PRMS_RESP;
22373 case WLAN_HAL_SEND_BEACON_RSP:
22374 return WDI_SND_BCON_RESP;
22375 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22376 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22377 /*Indications*/
22378 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22379 return WDI_HAL_RSSI_NOTIFICATION_IND;
22380 case WLAN_HAL_MISSED_BEACON_IND:
22381 return WDI_HAL_MISSED_BEACON_IND;
22382 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22383 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22384 case WLAN_HAL_MIC_FAILURE_IND:
22385 return WDI_HAL_MIC_FAILURE_IND;
22386 case WLAN_HAL_FATAL_ERROR_IND:
22387 return WDI_HAL_FATAL_ERROR_IND;
22388 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22389 return WDI_HAL_DEL_STA_IND;
22390 case WLAN_HAL_COEX_IND:
22391 return WDI_HAL_COEX_IND;
22392 case WLAN_HAL_OTA_TX_COMPL_IND:
22393 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 case WLAN_HAL_P2P_NOA_ATTR_IND:
22395 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022396 case WLAN_HAL_P2P_NOA_START_IND:
22397 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 case WLAN_HAL_TX_PER_HIT_IND:
22399 return WDI_HAL_TX_PER_HIT_IND;
22400 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22401 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022402 case WLAN_HAL_SET_TX_POWER_RSP:
22403 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404 case WLAN_HAL_SET_P2P_GONOA_RSP:
22405 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022406#ifdef FEATURE_WLAN_TDLS
22407 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22408 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22409 case WLAN_HAL_TDLS_IND:
22410 return WDI_HAL_TDLS_IND;
22411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022415 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022423 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22431 return WDI_SET_BEACON_FILTER_RESP;
22432 case WLAN_HAL_REM_BCN_FILTER_RSP:
22433 return WDI_REM_BEACON_FILTER_RESP;
22434 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22435 return WDI_SET_RSSI_THRESHOLDS_RESP;
22436 case WLAN_HAL_HOST_OFFLOAD_RSP:
22437 return WDI_HOST_OFFLOAD_RESP;
22438 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22439 return WDI_WOWL_ADD_BC_PTRN_RESP;
22440 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22441 return WDI_WOWL_DEL_BC_PTRN_RESP;
22442 case WLAN_HAL_ENTER_WOWL_RSP:
22443 return WDI_WOWL_ENTER_RESP;
22444 case WLAN_HAL_EXIT_WOWL_RSP:
22445 return WDI_WOWL_EXIT_RESP;
22446 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22447 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22448 case WLAN_HAL_DOWNLOAD_NV_RSP:
22449 return WDI_NV_DOWNLOAD_RESP;
22450 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22451 return WDI_FLUSH_AC_RESP;
22452 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22453 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 case WLAN_HAL_PROCESS_PTT_RSP:
22455 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 case WLAN_HAL_ADD_STA_SELF_RSP:
22457 return WDI_ADD_STA_SELF_RESP;
22458case WLAN_HAL_DEL_STA_SELF_RSP:
22459 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022460#ifdef FEATURE_OEM_DATA_SUPPORT
22461 case WLAN_HAL_START_OEM_DATA_RSP:
22462 return WDI_START_OEM_DATA_RESP;
22463#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 case WLAN_HAL_HOST_RESUME_RSP:
22465 return WDI_HOST_RESUME_RESP;
22466 case WLAN_HAL_KEEP_ALIVE_RSP:
22467 return WDI_KEEP_ALIVE_RESP;
22468#ifdef FEATURE_WLAN_SCAN_PNO
22469 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22470 return WDI_SET_PREF_NETWORK_RESP;
22471 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22474 return WDI_UPDATE_SCAN_PARAMS_RESP;
22475 case WLAN_HAL_PREF_NETW_FOUND_IND:
22476 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22477#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022478#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022479 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22480 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022481#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22483 return WDI_SET_TX_PER_TRACKING_RESP;
22484#ifdef WLAN_FEATURE_PACKET_FILTERING
22485 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22486 return WDI_8023_MULTICAST_LIST_RESP;
22487 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22488 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22489 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22490 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22491 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22492 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22493#endif // WLAN_FEATURE_PACKET_FILTERING
22494
22495 case WLAN_HAL_DUMP_COMMAND_RSP:
22496 return WDI_HAL_DUMP_CMD_RESP;
22497 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22498 return WDI_SET_POWER_PARAMS_RESP;
22499#ifdef WLAN_FEATURE_VOWIFI_11R
22500 case WLAN_HAL_AGGR_ADD_TS_RSP:
22501 return WDI_AGGR_ADD_TS_RESP;
22502#endif
22503
22504#ifdef WLAN_FEATURE_GTK_OFFLOAD
22505 case WLAN_HAL_GTK_OFFLOAD_RSP:
22506 return WDI_GTK_OFFLOAD_RESP;
22507 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22508 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22509#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22510#ifdef WLAN_WAKEUP_EVENTS
22511 case WLAN_HAL_WAKE_REASON_IND:
22512 return WDI_HAL_WAKE_REASON_IND;
22513#endif // WLAN_WAKEUP_EVENTS
22514
22515 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22516 return WDI_SET_TM_LEVEL_RESP;
22517 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22518 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022519#ifdef WLAN_FEATURE_11AC
22520 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22521 return WDI_UPDATE_VHT_OP_MODE_RESP;
22522#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022523#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22524 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22525 return WDI_GET_ROAM_RSSI_RESP;
22526#endif
Leo Chang00bc9132013-08-01 19:21:11 -070022527#ifdef FEATURE_WLAN_LPHB
22528 case WLAN_HAL_LPHB_IND:
22529 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22530 case WLAN_HAL_LPHB_CFG_RSP:
22531 return WDI_LPHB_CFG_RESP;
22532#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -070022533 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 }
22536
22537}/*HAL_2_WDI_RSP_TYPE*/
22538
22539
22540/*Convert WDI driver type into HAL driver type*/
22541WPT_STATIC WPT_INLINE tDriverType
22542WDI_2_HAL_DRV_TYPE
22543(
22544 WDI_DriverType wdiDriverType
22545)
22546{
Jeff Johnsone7245742012-09-05 17:12:55 -070022547 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 the chances of getting inlined*/
22549 switch( wdiDriverType )
22550 {
22551 case WDI_DRIVER_TYPE_PRODUCTION:
22552 return eDRIVER_TYPE_PRODUCTION;
22553 case WDI_DRIVER_TYPE_MFG:
22554 return eDRIVER_TYPE_MFG;
22555 case WDI_DRIVER_TYPE_DVT:
22556 return eDRIVER_TYPE_DVT;
22557 }
22558
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022560}/*WDI_2_HAL_DRV_TYPE*/
22561
22562
22563/*Convert WDI stop reason into HAL stop reason*/
22564WPT_STATIC WPT_INLINE tHalStopType
22565WDI_2_HAL_STOP_REASON
22566(
22567 WDI_StopType wdiDriverType
22568)
22569{
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 the chances of getting inlined*/
22572 switch( wdiDriverType )
22573 {
22574 case WDI_STOP_TYPE_SYS_RESET:
22575 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022576 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22577 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022578 case WDI_STOP_TYPE_RF_KILL:
22579 return HAL_STOP_TYPE_RF_KILL;
22580 }
22581
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022583}/*WDI_2_HAL_STOP_REASON*/
22584
22585
22586/*Convert WDI scan mode type into HAL scan mode type*/
22587WPT_STATIC WPT_INLINE eHalSysMode
22588WDI_2_HAL_SCAN_MODE
22589(
22590 WDI_ScanMode wdiScanMode
22591)
22592{
Jeff Johnsone7245742012-09-05 17:12:55 -070022593 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 the chances of getting inlined*/
22595 switch( wdiScanMode )
22596 {
22597 case WDI_SCAN_MODE_NORMAL:
22598 return eHAL_SYS_MODE_NORMAL;
22599 case WDI_SCAN_MODE_LEARN:
22600 return eHAL_SYS_MODE_LEARN;
22601 case WDI_SCAN_MODE_SCAN:
22602 return eHAL_SYS_MODE_SCAN;
22603 case WDI_SCAN_MODE_PROMISC:
22604 return eHAL_SYS_MODE_PROMISC;
22605 case WDI_SCAN_MODE_SUSPEND_LINK:
22606 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022607 case WDI_SCAN_MODE_ROAM_SCAN:
22608 return eHAL_SYS_MODE_ROAM_SCAN;
22609 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22610 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 }
22612
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022614}/*WDI_2_HAL_SCAN_MODE*/
22615
22616/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022617WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022618WDI_2_HAL_SEC_CH_OFFSET
22619(
22620 WDI_HTSecondaryChannelOffset wdiSecChOffset
22621)
22622{
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 the chances of getting inlined*/
22625 switch( wdiSecChOffset )
22626 {
22627 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22633#ifdef WLAN_FEATURE_11AC
22634 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22635 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22636 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22637 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22638 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22639 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22640 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22641 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22642 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22643 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22644 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22645 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22646 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22647 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22648#endif
22649 default:
22650 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 }
22652
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654}/*WDI_2_HAL_SEC_CH_OFFSET*/
22655
22656/*Convert WDI BSS type into HAL BSS type*/
22657WPT_STATIC WPT_INLINE tSirBssType
22658WDI_2_HAL_BSS_TYPE
22659(
22660 WDI_BssType wdiBSSType
22661)
22662{
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 the chances of getting inlined*/
22665 switch( wdiBSSType )
22666 {
22667 case WDI_INFRASTRUCTURE_MODE:
22668 return eSIR_INFRASTRUCTURE_MODE;
22669 case WDI_INFRA_AP_MODE:
22670 return eSIR_INFRA_AP_MODE;
22671 case WDI_IBSS_MODE:
22672 return eSIR_IBSS_MODE;
22673 case WDI_BTAMP_STA_MODE:
22674 return eSIR_BTAMP_STA_MODE;
22675 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 case WDI_BSS_AUTO_MODE:
22678 return eSIR_AUTO_MODE;
22679 }
22680
Jeff Johnsone7245742012-09-05 17:12:55 -070022681 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022682}/*WDI_2_HAL_BSS_TYPE*/
22683
22684/*Convert WDI NW type into HAL NW type*/
22685WPT_STATIC WPT_INLINE tSirNwType
22686WDI_2_HAL_NW_TYPE
22687(
22688 WDI_NwType wdiNWType
22689)
22690{
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 the chances of getting inlined*/
22693 switch( wdiNWType )
22694 {
22695 case WDI_11A_NW_TYPE:
22696 return eSIR_11A_NW_TYPE;
22697 case WDI_11B_NW_TYPE:
22698 return eSIR_11B_NW_TYPE;
22699 case WDI_11G_NW_TYPE:
22700 return eSIR_11G_NW_TYPE;
22701 case WDI_11N_NW_TYPE:
22702 return eSIR_11N_NW_TYPE;
22703 }
22704
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022706}/*WDI_2_HAL_NW_TYPE*/
22707
22708/*Convert WDI chanel bonding type into HAL cb type*/
22709WPT_STATIC WPT_INLINE ePhyChanBondState
22710WDI_2_HAL_CB_STATE
22711(
22712 WDI_PhyChanBondState wdiCbState
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 ( wdiCbState )
22718 {
22719 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22720 return PHY_SINGLE_CHANNEL_CENTERED;
22721 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22722 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22723 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22724 return PHY_DOUBLE_CHANNEL_CENTERED;
22725 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22726 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022727#ifdef WLAN_FEATURE_11AC
22728 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22729 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22730 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22731 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22732 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22733 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22734 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22735 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22736 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22737 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22738 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22739 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22740 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22741 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22742#endif
22743 case WDI_MAX_CB_STATE:
22744 default:
22745 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022747
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 return PHY_CHANNEL_BONDING_STATE_MAX;
22749}/*WDI_2_HAL_CB_STATE*/
22750
22751/*Convert WDI chanel bonding type into HAL cb type*/
22752WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22753WDI_2_HAL_HT_OPER_MODE
22754(
22755 WDI_HTOperatingMode wdiHTOperMode
22756)
22757{
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 the chances of getting inlined*/
22760 switch ( wdiHTOperMode )
22761 {
22762 case WDI_HT_OP_MODE_PURE:
22763 return eSIR_HT_OP_MODE_PURE;
22764 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22765 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22766 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22767 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22768 case WDI_HT_OP_MODE_MIXED:
22769 return eSIR_HT_OP_MODE_MIXED;
22770 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022771
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 return eSIR_HT_OP_MODE_MAX;
22773}/*WDI_2_HAL_HT_OPER_MODE*/
22774
22775/*Convert WDI mimo PS type into HAL mimo PS type*/
22776WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22777WDI_2_HAL_MIMO_PS
22778(
22779 WDI_HTMIMOPowerSaveState wdiHTOperMode
22780)
22781{
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 the chances of getting inlined*/
22784 switch ( wdiHTOperMode )
22785 {
22786 case WDI_HT_MIMO_PS_STATIC:
22787 return eSIR_HT_MIMO_PS_STATIC;
22788 case WDI_HT_MIMO_PS_DYNAMIC:
22789 return eSIR_HT_MIMO_PS_DYNAMIC;
22790 case WDI_HT_MIMO_PS_NA:
22791 return eSIR_HT_MIMO_PS_NA;
22792 case WDI_HT_MIMO_PS_NO_LIMIT:
22793 return eSIR_HT_MIMO_PS_NO_LIMIT;
22794 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022795
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 return eSIR_HT_MIMO_PS_MAX;
22797}/*WDI_2_HAL_MIMO_PS*/
22798
22799/*Convert WDI ENC type into HAL ENC type*/
22800WPT_STATIC WPT_INLINE tAniEdType
22801WDI_2_HAL_ENC_TYPE
22802(
22803 WDI_EncryptType wdiEncType
22804)
22805{
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 the chances of getting inlined*/
22808 switch ( wdiEncType )
22809 {
22810 case WDI_ENCR_NONE:
22811 return eSIR_ED_NONE;
22812
22813 case WDI_ENCR_WEP40:
22814 return eSIR_ED_WEP40;
22815
22816 case WDI_ENCR_WEP104:
22817 return eSIR_ED_WEP104;
22818
22819 case WDI_ENCR_TKIP:
22820 return eSIR_ED_TKIP;
22821
22822 case WDI_ENCR_CCMP:
22823 return eSIR_ED_CCMP;
22824
22825 case WDI_ENCR_AES_128_CMAC:
22826 return eSIR_ED_AES_128_CMAC;
22827#if defined(FEATURE_WLAN_WAPI)
22828 case WDI_ENCR_WPI:
22829 return eSIR_ED_WPI;
22830#endif
22831 default:
22832 return eSIR_ED_NOT_IMPLEMENTED;
22833 }
22834
22835}/*WDI_2_HAL_ENC_TYPE*/
22836
22837/*Convert WDI WEP type into HAL WEP type*/
22838WPT_STATIC WPT_INLINE tAniWepType
22839WDI_2_HAL_WEP_TYPE
22840(
22841 WDI_WepType wdiWEPType
22842)
22843{
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 the chances of getting inlined*/
22846 switch ( wdiWEPType )
22847 {
22848 case WDI_WEP_STATIC:
22849 return eSIR_WEP_STATIC;
22850
22851 case WDI_WEP_DYNAMIC:
22852 return eSIR_WEP_DYNAMIC;
22853 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022854
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 return eSIR_WEP_MAX;
22856}/*WDI_2_HAL_WEP_TYPE*/
22857
22858WPT_STATIC WPT_INLINE tSirLinkState
22859WDI_2_HAL_LINK_STATE
22860(
22861 WDI_LinkStateType wdiLinkState
22862)
22863{
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022865 the chances of getting inlined*/
22866 switch ( wdiLinkState )
22867 {
22868 case WDI_LINK_IDLE_STATE:
22869 return eSIR_LINK_IDLE_STATE;
22870
22871 case WDI_LINK_PREASSOC_STATE:
22872 return eSIR_LINK_PREASSOC_STATE;
22873
22874 case WDI_LINK_POSTASSOC_STATE:
22875 return eSIR_LINK_POSTASSOC_STATE;
22876
22877 case WDI_LINK_AP_STATE:
22878 return eSIR_LINK_AP_STATE;
22879
22880 case WDI_LINK_IBSS_STATE:
22881 return eSIR_LINK_IBSS_STATE;
22882
22883 case WDI_LINK_BTAMP_PREASSOC_STATE:
22884 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22885
22886 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22887 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22888
22889 case WDI_LINK_BTAMP_AP_STATE:
22890 return eSIR_LINK_BTAMP_AP_STATE;
22891
22892 case WDI_LINK_BTAMP_STA_STATE:
22893 return eSIR_LINK_BTAMP_STA_STATE;
22894
22895 case WDI_LINK_LEARN_STATE:
22896 return eSIR_LINK_LEARN_STATE;
22897
22898 case WDI_LINK_SCAN_STATE:
22899 return eSIR_LINK_SCAN_STATE;
22900
22901 case WDI_LINK_FINISH_SCAN_STATE:
22902 return eSIR_LINK_FINISH_SCAN_STATE;
22903
22904 case WDI_LINK_INIT_CAL_STATE:
22905 return eSIR_LINK_INIT_CAL_STATE;
22906
22907 case WDI_LINK_FINISH_CAL_STATE:
22908 return eSIR_LINK_FINISH_CAL_STATE;
22909
Jeff Johnson295189b2012-06-20 16:38:30 -070022910 case WDI_LINK_LISTEN_STATE:
22911 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022912
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022913 case WDI_LINK_SEND_ACTION_STATE:
22914 return eSIR_LINK_SEND_ACTION_STATE;
22915
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 default:
22917 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022919}
22920
Jeff Johnsone7245742012-09-05 17:12:55 -070022921/*Translate a STA Context from WDI into HAL*/
22922WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022923void
22924WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022925(
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 tConfigStaParams* phalConfigSta,
22927 WDI_ConfigStaReqInfoType* pwdiConfigSta
22928)
22929{
22930 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022931#ifdef WLAN_FEATURE_11AC
22932 /* Get the Version 1 Handler */
22933 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22934 if (WDI_getFwWlanFeatCaps(DOT11AC))
22935 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022936 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 }
22938#endif
22939 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 the chances of getting inlined*/
22941
Jeff Johnsone7245742012-09-05 17:12:55 -070022942 wpalMemoryCopy(phalConfigSta->bssId,
22943 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22944
22945 wpalMemoryCopy(phalConfigSta->staMac,
22946 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022947
22948 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22949 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22950 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22951 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22952 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22953 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22954 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22955 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22956 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22957 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22958 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22959 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22960 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22961 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22962 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22963 phalConfigSta->action = pwdiConfigSta->wdiAction;
22964 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22965 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22966 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22967 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22968 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22969 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22970 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022971
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22973
Jeff Johnsone7245742012-09-05 17:12:55 -070022974 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 pwdiConfigSta->wdiSupportedRates.opRateMode;
22976 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22977 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022978 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22980 }
22981 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22982 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22985 }
22986 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22987 {
22988 phalConfigSta->supportedRates.aniLegacyRates[i] =
22989 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22990 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22993 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22994 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22997 }
22998 phalConfigSta->supportedRates.rxHighestDataRate =
22999 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23000
Jeff Johnsone7245742012-09-05 17:12:55 -070023001#ifdef WLAN_FEATURE_11AC
23002 if(phalConfigSta_V1 != NULL)
23003 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023004 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23005 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23006 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23007 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023008 }
23009#endif
23010
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023012
Jeff Johnsone7245742012-09-05 17:12:55 -070023013#ifdef WLAN_FEATURE_11AC
23014 if(phalConfigSta_V1 != NULL)
23015 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023016 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23017 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023018 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023019 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23020 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23021
Jeff Johnsone7245742012-09-05 17:12:55 -070023022 }
23023#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023024}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023025
23026/*Translate a Rate set info from WDI into HAL*/
23027WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023028WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023029(
Jeff Johnson295189b2012-06-20 16:38:30 -070023030 tSirMacRateSet* pHalRateSet,
23031 WDI_RateSet* pwdiRateSet
23032)
23033{
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23036
23037 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23038 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23039
23040 for ( i = 0; i < pHalRateSet->numRates; i++ )
23041 {
23042 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23043 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023044
Jeff Johnson295189b2012-06-20 16:38:30 -070023045}/*WDI_CopyWDIRateSetToHALRateSet*/
23046
23047
23048/*Translate an EDCA Parameter Record from WDI into HAL*/
23049WPT_STATIC WPT_INLINE void
23050WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023051(
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 tSirMacEdcaParamRecord* phalEdcaParam,
23053 WDI_EdcaParamRecord* pWDIEdcaParam
23054)
23055{
Jeff Johnsone7245742012-09-05 17:12:55 -070023056 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 the chances of getting inlined*/
23058
23059 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23060 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23061 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23062 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23063
23064 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23065 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23066 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23067}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23068
23069
23070/*Copy a management frame header from WDI fmt into HAL fmt*/
23071WPT_STATIC WPT_INLINE void
23072WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23073(
23074 tSirMacMgmtHdr* pmacMgmtHdr,
23075 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23076)
23077{
23078 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23079 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23080 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23081 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23082 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23083 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23084 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23085 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23086 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23087 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23088 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23089
23090 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23091 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23092
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 pwdiMacMgmtHdr->bssId, 6);
23099
23100 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23101 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23102 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23103
23104}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23105
23106
23107/*Copy config bss parameters from WDI fmt into HAL fmt*/
23108WPT_STATIC WPT_INLINE void
23109WDI_CopyWDIConfigBSSToHALConfigBSS
23110(
23111 tConfigBssParams* phalConfigBSS,
23112 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23113)
23114{
23115
23116 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023117#ifdef WLAN_FEATURE_11AC
23118 /* Get the Version 1 Handler */
23119 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23120 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023121 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023122#endif
23123
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 wpalMemoryCopy( phalConfigBSS->bssId,
23125 pwdiConfigBSS->macBSSID,
23126 WDI_MAC_ADDR_LEN);
23127
23128#ifdef HAL_SELF_STA_PER_BSS
23129 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23130 pwdiConfigBSS->macSelfAddr,
23131 WDI_MAC_ADDR_LEN);
23132#endif
23133
23134 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23135
23136 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23137 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23138
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 pwdiConfigBSS->ucShortSlotTimeSupported;
23141 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23142 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23143 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23144 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23145 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023146 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023147 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23148 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23149 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23150 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23151 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23152 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23153 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23154 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23155 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23156 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23157 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23158
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 phalConfigBSS->htOperMode =
23160 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023161
23162 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23163 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23164 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23165 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23166
23167#ifdef WLAN_FEATURE_VOWIFI
23168 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23169#endif
23170
23171 /*! Used 32 as magic number because that is how the ssid is declared inside the
23172 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23175 pwdiConfigBSS->wdiSSID.ucLength : 32;
23176 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 pwdiConfigBSS->wdiSSID.sSSID,
23178 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023179
23180 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23181 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023182
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23184 &pwdiConfigBSS->wdiRateSet);
23185
23186 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23187
23188 if(phalConfigBSS->edcaParamsValid)
23189 {
23190 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23191 &pwdiConfigBSS->wdiBEEDCAParams);
23192 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23193 &pwdiConfigBSS->wdiBKEDCAParams);
23194 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23195 &pwdiConfigBSS->wdiVIEDCAParams);
23196 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23197 &pwdiConfigBSS->wdiVOEDCAParams);
23198 }
23199
Jeff Johnsone7245742012-09-05 17:12:55 -070023200 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023201
23202 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23203
23204#ifdef WLAN_FEATURE_VOWIFI_11R
23205
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023208
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 if( phalConfigBSS->extSetStaKeyParamValid )
23210 {
23211 /*-----------------------------------------------------------------------
23212 Copy the STA Key parameters into the HAL message
23213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23216
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23219
23220 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23221
23222 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23223
23224 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23225
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23227 keyIndex++)
23228 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023229 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23231 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23232 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23233 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23234 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23235 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23242 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 WDI_MAX_KEY_LENGTH);
23245 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 }
23247 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23248 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 sizeof(phalConfigBSS->extSetStaKeyParam) );
23251 }
23252
23253#endif /*WLAN_FEATURE_VOWIFI_11R*/
23254
Jeff Johnsone7245742012-09-05 17:12:55 -070023255#ifdef WLAN_FEATURE_11AC
23256 if(phalConfigBSS_V1 != NULL)
23257 {
23258 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23259 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23260 }
23261#endif
23262
Jeff Johnson295189b2012-06-20 16:38:30 -070023263}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23264
23265
Jeff Johnsone7245742012-09-05 17:12:55 -070023266/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 pointed to by user data */
23268WPT_STATIC WPT_INLINE void
23269WDI_ExtractRequestCBFromEvent
23270(
23271 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 void** ppUserData
23274)
23275{
23276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23277 switch ( pEvent->wdiRequest )
23278 {
23279 case WDI_START_REQ:
23280 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23281 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23282 break;
23283 case WDI_STOP_REQ:
23284 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23285 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23286 break;
23287 case WDI_INIT_SCAN_REQ:
23288 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23289 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23290 break;
23291 case WDI_START_SCAN_REQ:
23292 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23293 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23294 break;
23295 case WDI_END_SCAN_REQ:
23296 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23297 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23298 break;
23299 case WDI_FINISH_SCAN_REQ:
23300 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23301 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23302 break;
23303 case WDI_JOIN_REQ:
23304 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23305 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23306 break;
23307 case WDI_CONFIG_BSS_REQ:
23308 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23309 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23310 break;
23311 case WDI_DEL_BSS_REQ:
23312 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23313 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23314 break;
23315 case WDI_POST_ASSOC_REQ:
23316 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23317 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23318 break;
23319 case WDI_DEL_STA_REQ:
23320 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23321 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23322 break;
23323 case WDI_DEL_STA_SELF_REQ:
23324 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23325 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23326 break;
23327
23328 case WDI_SET_BSS_KEY_REQ:
23329 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23330 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23331 break;
23332 case WDI_RMV_BSS_KEY_REQ:
23333 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23334 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23335 break;
23336 case WDI_SET_STA_KEY_REQ:
23337 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23338 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23339 break;
23340 case WDI_RMV_STA_KEY_REQ:
23341 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23342 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23343 break;
23344 case WDI_ADD_TS_REQ:
23345 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23346 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23347 break;
23348 case WDI_DEL_TS_REQ:
23349 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23350 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23351 break;
23352 case WDI_UPD_EDCA_PRMS_REQ:
23353 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23354 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23355 break;
23356 case WDI_ADD_BA_SESSION_REQ:
23357 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23358 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23359 break;
23360 case WDI_DEL_BA_REQ:
23361 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23362 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23363 break;
23364#ifdef FEATURE_WLAN_CCX
23365 case WDI_TSM_STATS_REQ:
23366 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23367 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23368 break;
23369#endif
23370 case WDI_CH_SWITCH_REQ:
23371 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23372 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23373 break;
23374 case WDI_CONFIG_STA_REQ:
23375 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23376 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23377 break;
23378 case WDI_SET_LINK_ST_REQ:
23379 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23380 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23381 break;
23382 case WDI_GET_STATS_REQ:
23383 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23384 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23385 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023386#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23387 case WDI_GET_ROAM_RSSI_REQ:
23388 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23389 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23390 break;
23391#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 case WDI_UPDATE_CFG_REQ:
23393 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23394 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23395 break;
23396 case WDI_ADD_BA_REQ:
23397 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23398 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23399 break;
23400 case WDI_TRIGGER_BA_REQ:
23401 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23402 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23403 break;
23404 case WDI_UPD_BCON_PRMS_REQ:
23405 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23406 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23407 break;
23408 case WDI_SND_BCON_REQ:
23409 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23410 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23411 break;
23412 case WDI_ENTER_BMPS_REQ:
23413 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23414 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23415 break;
23416 case WDI_EXIT_BMPS_REQ:
23417 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23418 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23419 break;
23420 case WDI_ENTER_UAPSD_REQ:
23421 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23422 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23423 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023424 case WDI_EXIT_UAPSD_REQ:
23425 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23426 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23427 break;
23428 case WDI_SET_UAPSD_PARAM_REQ:
23429 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23430 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23431 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 case WDI_UPDATE_UAPSD_PARAM_REQ:
23433 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23434 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23435 break;
23436 case WDI_CONFIGURE_RXP_FILTER_REQ:
23437 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23438 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23439 break;
23440 case WDI_SET_BEACON_FILTER_REQ:
23441 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23442 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23443 break;
23444 case WDI_REM_BEACON_FILTER_REQ:
23445 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23446 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 case WDI_SET_RSSI_THRESHOLDS_REQ:
23449 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23450 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23451 break;
23452 case WDI_HOST_OFFLOAD_REQ:
23453 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23454 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23455 break;
23456 case WDI_WOWL_ADD_BC_PTRN_REQ:
23457 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23458 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23459 break;
23460 case WDI_WOWL_DEL_BC_PTRN_REQ:
23461 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23462 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23463 break;
23464 case WDI_WOWL_ENTER_REQ:
23465 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23466 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23467 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023468 case WDI_WOWL_EXIT_REQ:
23469 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23470 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23471 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23473 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23474 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23475 break;
23476 case WDI_FLUSH_AC_REQ:
23477 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23478 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23479 break;
23480 case WDI_BTAMP_EVENT_REQ:
23481 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23482 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23483 break;
23484 case WDI_KEEP_ALIVE_REQ:
23485 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23486 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23487 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023488#if defined FEATURE_WLAN_SCAN_PNO
23489 case WDI_SET_PREF_NETWORK_REQ:
23490 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23491 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23492 break;
23493 case WDI_SET_RSSI_FILTER_REQ:
23494 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23495 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23496 break;
23497 case WDI_UPDATE_SCAN_PARAMS_REQ:
23498 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23499 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23500 break;
23501#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 case WDI_SET_TX_PER_TRACKING_REQ:
23503 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23504 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023505 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023506#if defined WLAN_FEATURE_PACKET_FILTERING
23507 case WDI_8023_MULTICAST_LIST_REQ:
23508 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23509 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23510 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023511 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23512 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23513 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23514 break;
23515 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23516 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23517 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23518 break;
23519 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23520 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23521 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23522 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023523#endif
23524 case WDI_SET_POWER_PARAMS_REQ:
23525 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23526 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23527 break;
23528#if defined WLAN_FEATURE_GTK_OFFLOAD
23529 case WDI_GTK_OFFLOAD_REQ:
23530 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23531 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23532 break;
23533 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23534 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23535 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23536 break;
23537#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023538
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 default:
23540 *ppfnReqCB = NULL;
23541 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023542 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 }
23544}/*WDI_ExtractRequestCBFromEvent*/
23545
23546
23547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 frame xtl is enabled for a particular STA.
23550
23551 WDI_PostAssocReq must have been called.
23552
Jeff Johnsone7245742012-09-05 17:12:55 -070023553 @param uSTAIdx: STA index
23554
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 @see WDI_PostAssocReq
23556 @return Result of the function call
23557*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023558wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023559WDI_IsHwFrameTxTranslationCapable
23560(
23561 wpt_uint8 uSTAIdx
23562)
23563{
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 uma value*/
23566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 ------------------------------------------------------------------------*/
23569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23570 {
23571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23572 "WDI API call before module is initialized - Fail request");
23573
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 }
23576
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023577#ifdef WLAN_SOFTAP_VSTA_FEATURE
23578 if (IS_VSTA_IDX(uSTAIdx))
23579 {
23580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23581 "STA %d is a Virtual STA, "
23582 "HW frame translation disabled", uSTAIdx);
23583 return eWLAN_PAL_FALSE;
23584 }
23585#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023586
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 return gWDICb.bFrameTransEnabled;
23588}/*WDI_IsHwFrameTxTranslationCapable*/
23589
23590#ifdef FEATURE_WLAN_SCAN_PNO
23591/**
23592 @brief WDI_SetPreferredNetworkList
23593
Jeff Johnsone7245742012-09-05 17:12:55 -070023594 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023596
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 wdiPNOScanCb: callback for passing back the response
23598 of the Set PNO operation received from the
23599 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023600
Jeff Johnson295189b2012-06-20 16:38:30 -070023601 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023602 callback
23603
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 @return Result of the function call
23605*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023606WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023607WDI_SetPreferredNetworkReq
23608(
23609 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23610 WDI_PNOScanCb wdiPNOScanCb,
23611 void* pUserData
23612)
23613{
23614 WDI_EventInfoType wdiEventData = {{0}};
23615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23616
23617 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 ------------------------------------------------------------------------*/
23620 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23621 {
23622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23623 "WDI API call before module is initialized - Fail request");
23624
Jeff Johnsone7245742012-09-05 17:12:55 -070023625 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 }
23627
23628 /*------------------------------------------------------------------------
23629 Fill in Event data and post to the Main FSM
23630 ------------------------------------------------------------------------*/
23631 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023632 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 wdiEventData.pUserData = pUserData;
23636
23637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23638}
23639
23640
23641/**
23642 @brief WDI_SetRssiFilterReq
23643
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023646
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 wdiRssiFilterCb: callback for passing back the response
23648 of the Set RSSI Filter operation received from the
23649 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023650
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 callback
23653
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 @return Result of the function call
23655*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023656WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023657WDI_SetRssiFilterReq
23658(
23659 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23660 WDI_RssiFilterCb wdiRssiFilterCb,
23661 void* pUserData
23662)
23663{
23664 WDI_EventInfoType wdiEventData = {{0}};
23665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23666
23667 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023668 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 ------------------------------------------------------------------------*/
23670 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23671 {
23672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23673 "WDI API call before module is initialized - Fail request");
23674
Jeff Johnsone7245742012-09-05 17:12:55 -070023675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 }
23677
23678 /*------------------------------------------------------------------------
23679 Fill in Event data and post to the Main FSM
23680 ------------------------------------------------------------------------*/
23681 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023684 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023685 wdiEventData.pUserData = pUserData;
23686
23687 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23688}/*WDI_SetRssiFilterReq*/
23689
23690/**
23691 @brief WDI_UpdateScanParamsReq
23692
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023694 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023695
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 wdiUpdateScanParamsCb: callback for passing back the response
23697 of the Set PNO operation received from the
23698 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023699
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023701 callback
23702
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 @return Result of the function call
23704*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023705WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023706WDI_UpdateScanParamsReq
23707(
23708 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23709 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23710 void* pUserData
23711)
23712{
23713 WDI_EventInfoType wdiEventData = {{0}};
23714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23715
23716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 ------------------------------------------------------------------------*/
23719 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23720 {
23721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23722 "WDI API call before module is initialized - Fail request");
23723
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 }
23726
23727 /*------------------------------------------------------------------------
23728 Fill in Event data and post to the Main FSM
23729 ------------------------------------------------------------------------*/
23730 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023732 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023733 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 wdiEventData.pUserData = pUserData;
23735
23736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23737}
23738
23739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023742
23743 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 pwdiPNOScanReqParams: pointer to the info received
23745 from upper layers
23746 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 and its size
23748
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 @return Result of the function call
23750*/
23751
23752WDI_Status
23753WDI_PackPreferredNetworkList
23754(
23755 WDI_ControlBlockType* pWDICtx,
23756 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23757 wpt_uint8** ppSendBuffer,
23758 wpt_uint16* pSize
23759)
23760{
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 wpt_uint16 usDataOffset = 0;
23763 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023764 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 /*-----------------------------------------------------------------------
23767 Get message buffer
23768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023770 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023772 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023773 {
23774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23775 "Unable to get send buffer in Set PNO req %x ",
23776 pwdiPNOScanReqParams);
23777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023779 }
23780
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023781 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23782
Jeff Johnson295189b2012-06-20 16:38:30 -070023783 /*-------------------------------------------------------------------------
23784 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23785 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023786 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023787 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023788 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23790
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023791 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23796
23797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23800 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23801 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23802
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023803 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 {
23805 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023806 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23808
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023809 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023811 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023812
23813 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023814 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023816
23817 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023818 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023823 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023824 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23825 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23826 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23827 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023828
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023829 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023831 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023832
23833 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023834 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023835 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23836
23837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023839 pPrefNetwListParams->aNetworks[i].ssId.length,
23840 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 }
23842
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023843 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23846 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23847 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23848
23849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023851 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023852 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23853 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23854
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023855 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023857 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023859 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23861 }
23862
23863 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023864 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23866 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23867 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023869
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023870 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023871 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023872 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023873
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023874 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23876 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23877 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023880 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023881 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023882 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023883
23884 /*Set the output values*/
23885 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023887
23888 return WDI_STATUS_SUCCESS;
23889}/*WDI_PackPreferredNetworkList*/
23890
23891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023894
23895 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 pwdiPNOScanReqParams: pointer to the info received
23897 from upper layers
23898 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023899 and its size
23900
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 @return Result of the function call
23902*/
23903
23904WDI_Status
23905WDI_PackPreferredNetworkListNew
23906(
23907 WDI_ControlBlockType* pWDICtx,
23908 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23909 wpt_uint8** ppSendBuffer,
23910 wpt_uint16* pSize
23911)
23912{
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 wpt_uint16 usDataOffset = 0;
23915 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023916 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023918
23919 /*-----------------------------------------------------------------------
23920 Get message buffer
23921 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023922 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023923 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023925 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 {
23927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23928 "Unable to get send buffer in Set PNO req %x ",
23929 pwdiPNOScanReqParams);
23930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 }
23933
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023934 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23935
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 /*-------------------------------------------------------------------------
23937 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23938 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023939 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023941 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23943
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023944 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23949
23950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23953 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23954 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23955
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023956 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 {
23958 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023959 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23961
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023962 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023964 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023965
23966 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023967 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023969
23970 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023971 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023972 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023973
23974 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023975 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023977
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023980 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23982
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023983 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023985 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023986
23987 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023988 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23990
23991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023993 pPrefNetwListParams->aNetworks[i].ssId.length,
23994 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 }
23996
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023997 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24000 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24001 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24002
24003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024005 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24007 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24008
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024009 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024011 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024013 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24015 }
24016
24017 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024018 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24020 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24021 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024024 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024026 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024027
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024028 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24030 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24031 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024034 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024036 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024037
Jeff Johnson295189b2012-06-20 16:38:30 -070024038
24039 /*Set the output values*/
24040 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024041 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024042
24043 return WDI_STATUS_SUCCESS;
24044}/*WDI_PackPreferredNetworkListNew*/
24045
24046/**
24047 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024048
24049 @param pWDICtx: pointer to the WLAN DAL context
24050 pEventData: pointer to the event information structure
24051
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 @return Result of the function call
24053*/
24054WDI_Status
24055WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024056(
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 WDI_ControlBlockType* pWDICtx,
24058 WDI_EventInfoType* pEventData
24059)
24060{
24061 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24062 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024066
24067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 -------------------------------------------------------------------------*/
24070 if (( NULL == pEventData ) ||
24071 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24072 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24073 {
24074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 }
24079
24080 /*-------------------------------------------------------------------------
24081 Pack the PNO request structure based on version
24082 -------------------------------------------------------------------------*/
24083 if ( pWDICtx->wdiPNOVersion > 0 )
24084 {
24085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024086 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 pWDICtx->wdiPNOVersion);
24088
24089 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24090 &pSendBuffer, &usSendSize);
24091 }
24092 else
24093 {
24094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024095 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 pWDICtx->wdiPNOVersion);
24097
24098 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24099 &pSendBuffer, &usSendSize);
24100 }
24101
24102 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24103 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24104 {
24105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024106 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 }
24110
24111 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024112 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024113
24114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024115 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24118 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024119}
24120
24121/**
24122 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024123
24124 @param pWDICtx: pointer to the WLAN DAL context
24125 pEventData: pointer to the event information structure
24126
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 @see
24128 @return Result of the function call
24129*/
24130WDI_Status
24131WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024132(
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 WDI_ControlBlockType* pWDICtx,
24134 WDI_EventInfoType* pEventData
24135)
24136{
24137 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24138 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 wpt_uint16 usDataOffset = 0;
24141 wpt_uint16 usSendSize = 0;
24142 wpt_uint8 ucRssiThreshold;
24143
24144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 -------------------------------------------------------------------------*/
24147 if (( NULL == pEventData ) ||
24148 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24149 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24150 {
24151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 }
24156
24157 /*-----------------------------------------------------------------------
24158 Get message buffer
24159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 sizeof(ucRssiThreshold),
24162 &pSendBuffer, &usDataOffset, &usSendSize))||
24163 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24164 {
24165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24166 "Unable to get send buffer in Set PNO req %x %x %x",
24167 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 }
24171
24172 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24173
Jeff Johnsone7245742012-09-05 17:12:55 -070024174 wpalMemoryCopy( pSendBuffer+usDataOffset,
24175 &ucRssiThreshold,
24176 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024177
24178 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024179 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024180
24181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024182 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24185 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024186}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024187#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24188/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024189 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024190
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024191 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024192 by the Device Interface
24193
24194 wdiRoamOffloadScancb: callback for passing back the response
24195 of the Roam Candidate Lookup Req operation received from the
24196 device
24197
24198 pUserData: user data will be passed back with the
24199 callback
24200 @return Result of the function call
24201*/
24202WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024203WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024204(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024205 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024206 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24207 void* pUserData
24208)
24209{
24210 WDI_EventInfoType wdiEventData = {{0}};
24211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24212
24213 /*------------------------------------------------------------------------
24214 Sanity Check
24215 ------------------------------------------------------------------------*/
24216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24217 {
24218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24219 "WDI API call before module is initialized - Fail request");
24220
24221 return WDI_STATUS_E_NOT_ALLOWED;
24222 }
24223
24224 /*------------------------------------------------------------------------
24225 Fill in Event data and post to the Main FSM
24226 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024227 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24228 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24229 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024230 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24231 wdiEventData.pUserData = pUserData;
24232
24233 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24234}
24235
24236void
24237WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24238{
24239 switch (wdiEdType)
24240 {
24241 case WDI_ED_NONE:
24242 *EdType = eED_NONE;
24243 break;
24244 case WDI_ED_WEP40:
24245 case WDI_ED_WEP104:
24246 *EdType = eED_WEP;
24247 break;
24248 case WDI_ED_TKIP:
24249 *EdType = eED_TKIP;
24250 break;
24251 case WDI_ED_CCMP:
24252#ifdef WLAN_FEATURE_11W
24253 case WDI_ED_AES_128_CMAC:
24254#endif
24255 *EdType = eED_CCMP;
24256 break;
24257#ifdef FEATURE_WLAN_WAPI
24258 case WDI_ED_WPI:
24259 *EdType = eED_WPI;
24260 break;
24261#endif
24262 case WDI_ED_ANY:
24263 *EdType = eED_ANY;
24264 break;
24265
24266 default:
24267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24268 "%s: Unknown Encryption Type", __func__);
24269 break;
24270 }
24271}
24272
24273/**
24274 @brief Helper function to pack Start Roam Candidate Lookup
24275 Request parameters
24276
24277 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024278 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024279 from upper layers
24280 ppSendBuffer, pSize - out pointers of the packed buffer
24281 and its size
24282
24283 @return Result of the function call
24284*/
24285
24286WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024287WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024288(
24289 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024290 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024291 wpt_uint8** ppSendBuffer,
24292 wpt_uint16* pSize
24293)
24294{
24295 wpt_uint8* pSendBuffer = NULL;
24296 wpt_uint16 usDataOffset = 0;
24297 wpt_uint16 usSendSize = 0;
24298 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24299 wpt_uint8 i;
24300 /*-----------------------------------------------------------------------
24301 Get message buffer
24302 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024303 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024304 sizeof(tRoamCandidateListParams),
24305 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024306 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024307 {
24308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24309 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024310 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024311 WDI_ASSERT(0);
24312 return WDI_STATUS_E_FAILURE;
24313 }
24314 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024315 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024316 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024317 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024318 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024319 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024320 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024321 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024322 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024323 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024324 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024325
24326 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024327 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024328 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024329 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024330 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24331 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024332 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24333 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24334 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24335 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24336 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24337 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24338 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24339 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24340 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24341 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24342 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24343 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24344 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24345 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024346 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024347 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24348 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24349 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024350
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24352 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24353 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24354 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24355 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24356 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24357 "HomeAwayTime=%d\n",
24358 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24359 pRoamCandidateListParams->RoamScanOffloadEnabled,
24360 pRoamCandidateListParams->Command,
24361 pRoamCandidateListParams->StartScanReason,
24362 pRoamCandidateListParams->NeighborScanTimerPeriod,
24363 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24364 pRoamCandidateListParams->NeighborScanChannelMinTime,
24365 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24366 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24367 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24368 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24369 pRoamCandidateListParams->ConnectedNetwork.authentication,
24370 pRoamCandidateListParams->ConnectedNetwork.encryption,
24371 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24372 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24373 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024374 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024375 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024376 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024377 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024378 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24379 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024380 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024381 pRoamCandidateListParams->us24GProbeSize);
24382 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024383 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024384 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024385 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024386 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24387 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024388 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024389 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024390 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24391 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24392 pRoamCandidateListParams->nProbes =
24393 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24394 pRoamCandidateListParams->HomeAwayTime =
24395 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024397 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24398 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024400 }
24401
24402
24403 /*Set the output values*/
24404 *ppSendBuffer = pSendBuffer;
24405 *pSize = usSendSize;
24406 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024407}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024408
24409/**
24410 @brief Process Start Roam Candidate Lookup Request function
24411
24412 @param pWDICtx: pointer to the WLAN DAL context
24413 pEventData: pointer to the event information structure
24414
24415 @return Result of the function call
24416*/
24417WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024418WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024419(
24420 WDI_ControlBlockType* pWDICtx,
24421 WDI_EventInfoType* pEventData
24422)
24423{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024424 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024425 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24426 wpt_uint8* pSendBuffer = NULL;
24427 wpt_uint16 usSendSize = 0;
24428 WDI_Status wdiStatus;
24429 /*-------------------------------------------------------------------------
24430 Sanity check
24431 -------------------------------------------------------------------------*/
24432 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024433 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024434 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24435 {
24436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24437 "%s: Invalid parameters", __func__);
24438 WDI_ASSERT(0);
24439 return WDI_STATUS_E_FAILURE;
24440 }
24441
24442 /*-------------------------------------------------------------------------
24443 Pack the Start Roam Candidate Lookup request structure based on version
24444 -------------------------------------------------------------------------*/
24445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24446 "%s: Packing Roam Candidate Lookup request ", __func__);
24447
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024448 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024449 &pSendBuffer, &usSendSize);
24450
24451 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24452 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24453 {
24454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24455 "%s: failed to pack request parameters", __func__);
24456 WDI_ASSERT(0);
24457 return wdiStatus;
24458 }
24459
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024460 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24461 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024462
24463 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024464 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024465 -------------------------------------------------------------------------*/
24466 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024467 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024468}
24469
24470/**
24471 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24472 response is being received over the bus from HAL)
24473
24474 @param pWDICtx: pointer to the WLAN DAL context
24475 pEventData: pointer to the event information structure
24476
24477 @see
24478 @return Result of the function call
24479*/
24480WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024481WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024482(
24483 WDI_ControlBlockType* pWDICtx,
24484 WDI_EventInfoType* pEventData
24485)
24486{
24487 WDI_Status wdiStatus;
24488 eHalStatus halStatus;
24489 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24490
24491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24492
24493 /*-------------------------------------------------------------------------
24494 Sanity check
24495 -------------------------------------------------------------------------*/
24496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24497 ( NULL == pEventData->pEventData ))
24498 {
24499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24500 "%s: Invalid parameters", __func__);
24501 WDI_ASSERT(0);
24502 return WDI_STATUS_E_FAILURE;
24503 }
24504
24505 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24506
24507 /*-------------------------------------------------------------------------
24508 Extract response and send it to UMAC
24509 -------------------------------------------------------------------------*/
24510 halStatus = *((eHalStatus*)pEventData->pEventData);
24511 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24512
24513 /*Notify UMAC*/
24514 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24515
24516 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024517}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024518#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024519
24520/**
24521 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024522
24523 @param pWDICtx: pointer to the WLAN DAL context
24524 pEventData: pointer to the event information structure
24525
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 @see
24527 @return Result of the function call
24528*/
24529WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024530WDI_PackUpdateScanParamsReq
24531(
24532 WDI_ControlBlockType* pWDICtx,
24533 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24534 wpt_uint8** ppSendBuffer,
24535 wpt_uint16* pSize
24536)
24537{
24538 wpt_uint8* pSendBuffer = NULL;
24539 wpt_uint16 usDataOffset = 0;
24540 wpt_uint16 usSendSize = 0;
24541 tUpdateScanParams updateScanParams = {0};
24542
24543
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024545 "Begin WDI Update Scan Parameters Old Style Params");
24546 /*-----------------------------------------------------------------------
24547 Get message buffer
24548 -----------------------------------------------------------------------*/
24549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24550 sizeof(updateScanParams),
24551 &pSendBuffer, &usDataOffset, &usSendSize))||
24552 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24553 {
24554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24555 "Unable to get send buffer in Update Scan Params req %x",
24556 pwdiUpdateScanParams);
24557 WDI_ASSERT(0);
24558 return WDI_STATUS_E_FAILURE;
24559 }
24560
24561 //
24562 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24563 //
24564
24565 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24566 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24567
24568 updateScanParams.ucChannelCount =
24569 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24570 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24571 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24572 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24573
24574 wpalMemoryCopy( updateScanParams.aChannels,
24575 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24576 updateScanParams.ucChannelCount);
24577
24578
24579 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24580 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24581 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24582 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24583 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24584
24585 wpalMemoryCopy( pSendBuffer+usDataOffset,
24586 &updateScanParams,
24587 sizeof(updateScanParams));
24588
24589 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24590 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24591
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024593 "End Update Scan Parameters Old Style");
24594
24595 /*Set the output values*/
24596 *ppSendBuffer = pSendBuffer;
24597 *pSize = usSendSize;
24598
24599 return WDI_STATUS_SUCCESS;
24600}
24601
24602/**
24603 @brief Process Update Scan Params function
24604
24605 @param pWDICtx: pointer to the WLAN DAL context
24606 pEventData: pointer to the event information structure
24607
24608 @see
24609 @return Result of the function call
24610*/
24611WDI_Status
24612WDI_PackUpdateScanParamsReqEx
24613(
24614 WDI_ControlBlockType* pWDICtx,
24615 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24616 wpt_uint8** ppSendBuffer,
24617 wpt_uint16* pSize
24618)
24619{
24620 wpt_uint8* pSendBuffer = NULL;
24621 wpt_uint16 usDataOffset = 0;
24622 wpt_uint16 usSendSize = 0;
24623 tUpdateScanParamsEx updateScanParams = {0};
24624
24625
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024626 /*-----------------------------------------------------------------------
24627 Get message buffer
24628 -----------------------------------------------------------------------*/
24629 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24630 sizeof(updateScanParams),
24631 &pSendBuffer, &usDataOffset, &usSendSize))||
24632 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24633 {
24634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24635 "Unable to get send buffer in Update Scan Params Ex req %x",
24636 pwdiUpdateScanParams);
24637 WDI_ASSERT(0);
24638 return WDI_STATUS_E_FAILURE;
24639 }
24640
24641 //
24642 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24643 //
24644
24645 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24646 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24647
24648 updateScanParams.ucChannelCount =
24649 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24650 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24651 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24652 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24653
24654 wpalMemoryCopy( updateScanParams.aChannels,
24655 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24656 updateScanParams.ucChannelCount);
24657
24658
24659 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24660 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24661 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24662 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24663 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24664
24665 wpalMemoryCopy( pSendBuffer+usDataOffset,
24666 &updateScanParams,
24667 sizeof(updateScanParams));
24668
24669 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24670 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24671
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024672 /*Set the output values*/
24673 *ppSendBuffer = pSendBuffer;
24674 *pSize = usSendSize;
24675
24676 return WDI_STATUS_SUCCESS;
24677}
24678
24679/**
24680 @brief Process Update Scan Params function
24681
24682 @param pWDICtx: pointer to the WLAN DAL context
24683 pEventData: pointer to the event information structure
24684
24685 @see
24686 @return Result of the function call
24687*/
24688WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024689WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024690(
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 WDI_ControlBlockType* pWDICtx,
24692 WDI_EventInfoType* pEventData
24693)
24694{
24695 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24696 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024699 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024700
24701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024703 -------------------------------------------------------------------------*/
24704 if (( NULL == pEventData ) ||
24705 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24706 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24707 {
24708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 }
24713
24714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24715 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024716
24717 //
24718 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24719 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024720 if ( pWDICtx->wlanVersion.revision < 1 )
24721 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024722 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024723 &pSendBuffer, &usSendSize);
24724 }
24725 else
24726 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024727 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24728 &pSendBuffer, &usSendSize);
24729 }
24730
24731 if(WDI_STATUS_SUCCESS != wdiStatus)
24732 {
24733 //memory allocation failed
24734 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024735 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024736
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024738 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024741 wdiUpdateScanParamsCb, pEventData->pUserData,
24742 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024743}
24744
24745/**
24746 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024747
24748 @param pWDICtx: pointer to the WLAN DAL context
24749 pEventData: pointer to the event information structure
24750
Jeff Johnson295189b2012-06-20 16:38:30 -070024751 @see
24752 @return Result of the function call
24753*/
24754WDI_Status
24755WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024756(
Jeff Johnson295189b2012-06-20 16:38:30 -070024757 WDI_ControlBlockType* pWDICtx,
24758 WDI_EventInfoType* pEventData
24759)
24760{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024761 WDI_LowLevelIndType wdiInd;
24762 tpPrefNetwFoundParams pNetwFoundParams;
24763 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024764
24765
24766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 -------------------------------------------------------------------------*/
24769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24770 ( NULL == pEventData->pEventData ))
24771 {
24772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024774 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024776 }
24777
24778 /*-------------------------------------------------------------------------
24779 Extract indication and send it to UMAC
24780 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024781 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24782
24783 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24784 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24785 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24786
24787 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24788 {
24789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24790 "%s: fail to allocate memory", __func__);
24791 return WDI_STATUS_MEM_FAILURE;
24792 }
24793
24794 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24795 (pNetwFoundParams->ssId.length < 32 )?
24796 pNetwFoundParams->ssId.length : 32;
24797 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24798 pNetwFoundParams->ssId.ssId,
24799 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24800 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24801 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24802 pNetwFoundParams->frameLength;
24803 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24804 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24805 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024806
24807 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024808 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024809
Jeff Johnson295189b2012-06-20 16:38:30 -070024810 // DEBUG
24811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24812 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24813 wdiInd.wdiIndicationType,
24814 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24815 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24816
ltimariu034f7d62013-01-24 18:54:33 -080024817 if ( pWDICtx->wdiLowLevelIndCB )
24818 {
24819 /*Notify UMAC*/
24820 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24821 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024822
24823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024824}
24825
24826/**
24827 @brief Process PNO Rsp function (called when a
24828 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024829
24830 @param pWDICtx: pointer to the WLAN DAL context
24831 pEventData: pointer to the event information structure
24832
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 @see
24834 @return Result of the function call
24835*/
24836WDI_Status
24837WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024838(
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 WDI_ControlBlockType* pWDICtx,
24840 WDI_EventInfoType* pEventData
24841)
24842{
24843 WDI_Status wdiStatus;
24844 eHalStatus halStatus;
24845 WDI_PNOScanCb wdiPNOScanCb = NULL;
24846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24847
24848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024850 -------------------------------------------------------------------------*/
24851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24852 ( NULL == pEventData->pEventData ))
24853 {
24854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024858 }
24859
24860
Jeff Johnsone7245742012-09-05 17:12:55 -070024861 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024862
24863 /*-------------------------------------------------------------------------
24864 Extract response and send it to UMAC
24865 -------------------------------------------------------------------------*/
24866 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024867 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024868
24869 /*Notify UMAC*/
24870 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24871
Jeff Johnsone7245742012-09-05 17:12:55 -070024872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024873}/*WDI_ProcessSetPreferredNetworkRsp*/
24874
24875/**
24876 @brief Process RSSI Filter Rsp function (called when a
24877 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024878
24879 @param pWDICtx: pointer to the WLAN DAL context
24880 pEventData: pointer to the event information structure
24881
Jeff Johnson295189b2012-06-20 16:38:30 -070024882 @see
24883 @return Result of the function call
24884*/
24885WDI_Status
24886WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024887(
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 WDI_ControlBlockType* pWDICtx,
24889 WDI_EventInfoType* pEventData
24890)
24891{
24892 WDI_Status wdiStatus;
24893 eHalStatus halStatus;
24894 WDI_RssiFilterCb wdiRssiFilterCb;
24895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24896
24897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024899 -------------------------------------------------------------------------*/
24900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24901 ( NULL == pEventData->pEventData ))
24902 {
24903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024907 }
24908
Jeff Johnsone7245742012-09-05 17:12:55 -070024909 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024910
24911 /*-------------------------------------------------------------------------
24912 Extract response and send it to UMAC
24913 -------------------------------------------------------------------------*/
24914 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024915 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024916
24917 /*Notify UMAC*/
24918 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24919
Jeff Johnsone7245742012-09-05 17:12:55 -070024920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024921}/*WDI_ProcessSetRssiFilterRsp*/
24922
24923/**
24924 @brief Process Update Scan Params Rsp function (called when a
24925 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024926
24927 @param pWDICtx: pointer to the WLAN DAL context
24928 pEventData: pointer to the event information structure
24929
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 @see
24931 @return Result of the function call
24932*/
24933WDI_Status
24934WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024935(
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 WDI_ControlBlockType* pWDICtx,
24937 WDI_EventInfoType* pEventData
24938)
24939{
24940 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024942 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24945
24946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024948 -------------------------------------------------------------------------*/
24949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24950 ( NULL == pEventData->pEventData ))
24951 {
24952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024956 }
24957
24958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024959 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024960
Jeff Johnsone7245742012-09-05 17:12:55 -070024961 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024962
24963 /*-------------------------------------------------------------------------
24964 Extract response and send it to UMAC
24965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024966 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24967 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 sizeof(halUpdScanParams.status));
24969
24970 uStatus = halUpdScanParams.status;
24971
24972 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024973 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024974
24975 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024976 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024977
Jeff Johnsone7245742012-09-05 17:12:55 -070024978 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024979
24980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 halUpdScanParams.status);
24983
24984 /*Notify UMAC*/
24985 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24986
Jeff Johnsone7245742012-09-05 17:12:55 -070024987 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024988}
24989#endif // FEATURE_WLAN_SCAN_PNO
24990
24991#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024993WDI_8023MulticastListReq
24994(
24995 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24996 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24997 void* pUserData
24998)
24999{
25000 WDI_EventInfoType wdiEventData;
25001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25002
25003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025004 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025005
25006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 ------------------------------------------------------------------------*/
25009 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25010 {
25011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25012 "WDI API call before module is initialized - Fail request");
25013
Jeff Johnsone7245742012-09-05 17:12:55 -070025014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025015 }
25016
25017 /*------------------------------------------------------------------------
25018 Fill in Event data and post to the Main FSM
25019 ------------------------------------------------------------------------*/
25020 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025021 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025022 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025023 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025024 wdiEventData.pUserData = pUserData;
25025
25026 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25027}
25028
Jeff Johnsone7245742012-09-05 17:12:55 -070025029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025030WDI_ReceiveFilterSetFilterReq
25031(
25032 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25033 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25034 void* pUserData
25035)
25036{
25037 WDI_EventInfoType wdiEventData;
25038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25039
25040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025041 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025042
25043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 ------------------------------------------------------------------------*/
25046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25047 {
25048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25049 "WDI API call before module is initialized - Fail request");
25050
Jeff Johnsone7245742012-09-05 17:12:55 -070025051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025052 }
25053
25054 /*------------------------------------------------------------------------
25055 Fill in Event data and post to the Main FSM
25056 ------------------------------------------------------------------------*/
25057 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25059 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025060 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25061 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025062 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 wdiEventData.pUserData = pUserData;
25064
25065
25066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25067}
25068
Jeff Johnsone7245742012-09-05 17:12:55 -070025069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025070WDI_FilterMatchCountReq
25071(
25072 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25073 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25074 void* pUserData
25075)
25076{
25077 WDI_EventInfoType wdiEventData;
25078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25079
25080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025081 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025082
25083 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025084 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025085 ------------------------------------------------------------------------*/
25086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25087 {
25088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25089 "WDI API call before module is initialized - Fail request");
25090
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 }
25093
25094 /*------------------------------------------------------------------------
25095 Fill in Event data and post to the Main FSM
25096 ------------------------------------------------------------------------*/
25097 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025098 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025100 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025101 wdiEventData.pUserData = pUserData;
25102
25103
25104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25105}
25106
Jeff Johnsone7245742012-09-05 17:12:55 -070025107WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025108WDI_ReceiveFilterClearFilterReq
25109(
25110 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25111 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25112 void* pUserData
25113)
25114{
25115 WDI_EventInfoType wdiEventData;
25116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25117
25118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025119 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025120
25121 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025122 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025123 ------------------------------------------------------------------------*/
25124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25125 {
25126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25127 "WDI API call before module is initialized - Fail request");
25128
Jeff Johnsone7245742012-09-05 17:12:55 -070025129 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 }
25131
25132 /*------------------------------------------------------------------------
25133 Fill in Event data and post to the Main FSM
25134 ------------------------------------------------------------------------*/
25135 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025136 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 wdiEventData.pUserData = pUserData;
25140
25141
25142 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25143}
25144
25145/**
25146 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025147
25148 @param pWDICtx: pointer to the WLAN DAL context
25149 pEventData: pointer to the event information structure
25150
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 @see
25152 @return Result of the function call
25153*/
25154WDI_Status
25155WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025156(
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 WDI_ControlBlockType* pWDICtx,
25158 WDI_EventInfoType* pEventData
25159)
25160{
25161 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25162 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025164 wpt_uint16 usDataOffset = 0;
25165 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025166 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025167 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025168 wpt_uint8 ucCurrentBSSSesIdx = 0;
25169 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025170
25171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025172 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025173
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025174 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25175 if( NULL == pRcvFltMcAddrListType )
25176 {
25177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25178 "Failed to alloc in WDI_Process8023MulticastListReq");
25179 return WDI_STATUS_E_FAILURE;
25180 }
25181
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 -------------------------------------------------------------------------*/
25185 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025186 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025187 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025188 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25190 {
25191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025192 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025193 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025195 return WDI_STATUS_E_FAILURE;
25196 }
25197
25198 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25199 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25200 &pBSSSes);
25201 if ( NULL == pBSSSes )
25202 {
25203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025204 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025205 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 }
25208
25209 /*-----------------------------------------------------------------------
25210 Get message buffer
25211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25213 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025214 sizeof(tHalRcvFltMcAddrListType),
25215 &pSendBuffer, &usDataOffset, &usSendSize))||
25216 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25217 {
25218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25219 "Unable to get send buffer in "
25220 "WDI_Process8023MulticastListReq() %x %x %x",
25221 pEventData, pwdiFltPktSetMcListReqParamsType,
25222 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025223 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025226 }
25227
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025228 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025229 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025230 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025231 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025232 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25234 sizeof(tSirMacAddr));
25235 }
25236
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025237 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025239 pRcvFltMcAddrListType,
25240 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025241
25242 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025243 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025244
25245
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025246 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025248 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025251 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025252 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025253}
25254
25255/**
25256 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025257
25258 @param pWDICtx: pointer to the WLAN DAL context
25259 pEventData: pointer to the event information structure
25260
Jeff Johnson295189b2012-06-20 16:38:30 -070025261 @see
25262 @return Result of the function call
25263*/
25264WDI_Status
25265WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025266(
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 WDI_ControlBlockType* pWDICtx,
25268 WDI_EventInfoType* pEventData
25269)
25270{
25271 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25272 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 wpt_uint16 usDataOffset = 0;
25275 wpt_uint16 usSendSize = 0;
25276 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025277 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025278 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025279 wpt_uint8 ucCurrentBSSSesIdx = 0;
25280 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025281 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25282 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283
25284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025285 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025286
25287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 -------------------------------------------------------------------------*/
25290 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025291 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025293 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025294 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25295 {
25296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 return WDI_STATUS_E_FAILURE;
25300 }
25301
25302 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25303 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25304 &pBSSSes);
25305 if ( NULL == pBSSSes )
25306 {
25307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025308 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 }
25311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025312 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25313 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025314
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025315 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25316 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25317 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25318
25319 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25320 usSessRcvPktFilterCfgSize);
25321
25322 if(NULL == pSessRcvPktFilterCfg)
25323 {
25324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25325 "%s: Failed to allocate memory for "
25326 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025327 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025328 WDI_ASSERT(0);
25329 return WDI_STATUS_E_FAILURE;
25330 }
25331
25332 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25333
25334 /*-----------------------------------------------------------------------
25335 Get message buffer
25336 -----------------------------------------------------------------------*/
25337
25338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25339 usSessRcvPktFilterCfgSize,
25340 &pSendBuffer, &usDataOffset, &usSendSize))||
25341 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25342 {
25343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25344 "Unable to get send buffer in "
25345 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25346 pEventData, pwdiSetRcvPktFilterReqInfo,
25347 wdiReceiveFilterSetFilterCb);
25348 WDI_ASSERT(0);
25349 wpalMemoryFree(pSessRcvPktFilterCfg);
25350 return WDI_STATUS_E_FAILURE;
25351 }
25352
25353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25354 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25355 usSendSize,pSessRcvPktFilterCfg);
25356
25357 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25358 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25359 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25360 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25361
25362 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25363
25364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25365 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25366 pSessRcvPktFilterCfg->filterType);
25367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25368 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25369 pSessRcvPktFilterCfg->coleasceTime);
25370
25371 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25372 {
25373 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25374 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25375 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25376 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25377 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25378 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25379 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25380 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25381
25382 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25383 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25384 8);
25385 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25386 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25387 8);
25388
25389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25390 "Out:Proto %d Comp Flag %d \n",
25391 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25392 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25393
25394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25395 "Data Offset %d Data Len %d\n",
25396 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25397 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25398
25399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25400 "CData: %d:%d:%d:%d:%d:%d\n",
25401 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25402 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25403 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25404 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25405 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25406 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25407
25408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25409 "MData: %d:%d:%d:%d:%d:%d\n",
25410 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25411 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25412 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25413 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25414 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25415 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25416 }
25417
25418 wpalMemoryCopy( pSendBuffer+usDataOffset,
25419 pSessRcvPktFilterCfg,
25420 usSessRcvPktFilterCfgSize);
25421
25422
25423 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25424 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25425
25426 wpalMemoryFree(pSessRcvPktFilterCfg);
25427
25428 }
25429 /*If SLM_SESSIONIZATION is not supported then do this */
25430 else
25431 {
25432 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25433 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25434 * sizeof(tHalRcvPktFilterParams));
25435
25436 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 usRcvPktFilterCfgSize);
25438
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025439 if(NULL == pRcvPktFilterCfg)
25440 {
25441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25442 "%s: Failed to allocate memory for "
25443 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025444 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025445 WDI_ASSERT(0);
25446 return WDI_STATUS_E_FAILURE;
25447 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025448
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025449 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025450
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025451 /*-----------------------------------------------------------------------
25452 Get message buffer
25453 -----------------------------------------------------------------------*/
25454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025455 usRcvPktFilterCfgSize,
25456 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025457 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25458 {
25459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 "Unable to get send buffer in "
25461 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25462 pEventData, pwdiSetRcvPktFilterReqInfo,
25463 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025464 WDI_ASSERT(0);
25465 wpalMemoryFree(pRcvPktFilterCfg);
25466 return WDI_STATUS_E_FAILURE;
25467 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025468
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025470 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025471 usSendSize,usRcvPktFilterCfgSize);
25472
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025473 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25474 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25475 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25476 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025477
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025479 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025482 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025483 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025484
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025485 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25486 {
25487 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25488 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25489 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25490 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25491 pRcvPktFilterCfg->paramsData[i].dataOffset =
25492 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25493 pRcvPktFilterCfg->paramsData[i].dataLength =
25494 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025495
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025496 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25498 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025499 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025500 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25501 8);
25502
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025505 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025506 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25507
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25509 "Data Offset %d Data Len %d\n",
25510 pRcvPktFilterCfg->paramsData[i].dataOffset,
25511 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025512
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25514 "CData: %d:%d:%d:%d:%d:%d\n",
25515 pRcvPktFilterCfg->paramsData[i].compareData[0],
25516 pRcvPktFilterCfg->paramsData[i].compareData[1],
25517 pRcvPktFilterCfg->paramsData[i].compareData[2],
25518 pRcvPktFilterCfg->paramsData[i].compareData[3],
25519 pRcvPktFilterCfg->paramsData[i].compareData[4],
25520 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025521
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25523 "MData: %d:%d:%d:%d:%d:%d\n",
25524 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25525 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25526 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25527 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25528 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25529 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25530 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025531
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025532 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 pRcvPktFilterCfg,
25534 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025535
25536
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025537 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25538 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025539
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025541 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025542 wpalMemoryFree(pRcvPktFilterCfg);
25543 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025548 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025550}
25551
25552/**
25553 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025554
25555 @param pWDICtx: pointer to the WLAN DAL context
25556 pEventData: pointer to the event information structure
25557
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 @see
25559 @return Result of the function call
25560*/
25561WDI_Status
25562WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025563(
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 WDI_ControlBlockType* pWDICtx,
25565 WDI_EventInfoType* pEventData
25566)
25567{
25568 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25569 NULL;
25570 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25571 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 wpt_uint16 usDataOffset = 0;
25574 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025575 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25576 wpt_uint8 ucCurrentBSSSesIdx = 0;
25577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025578
25579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025580 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025581
25582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 -------------------------------------------------------------------------*/
25585 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25590 {
25591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 }
25596
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025597 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25598 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25599 &pBSSSes);
25600 if ( NULL == pBSSSes )
25601 {
25602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025603 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025604 return WDI_STATUS_E_FAILURE;
25605 }
25606
Jeff Johnson295189b2012-06-20 16:38:30 -070025607 /*-----------------------------------------------------------------------
25608 Get message buffer
25609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25611 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025612 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025614 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 {
25616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25617 "Unable to get send buffer in "
25618 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25619 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25620 wdiFilterMatchCountCb);
25621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025623 }
25624
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025625 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25626 wpalMemoryCopy( pSendBuffer+usDataOffset,
25627 &rcvFltPktMatchCntReqParam,
25628 sizeof(rcvFltPktMatchCntReqParam));
25629
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 //
25631 // Don't need to fill send buffer other than header
25632 //
25633 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025635
25636
25637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025640 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25641 wdiFilterMatchCountCb,
25642 pEventData->pUserData,
25643 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025644}
25645
25646/**
25647 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025648
25649 @param pWDICtx: pointer to the WLAN DAL context
25650 pEventData: pointer to the event information structure
25651
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 @see
25653 @return Result of the function call
25654*/
25655WDI_Status
25656WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025657(
Jeff Johnson295189b2012-06-20 16:38:30 -070025658 WDI_ControlBlockType* pWDICtx,
25659 WDI_EventInfoType* pEventData
25660)
Jeff Johnsone7245742012-09-05 17:12:55 -070025661{
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25663 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 wpt_uint16 usDataOffset = 0;
25666 wpt_uint16 usSendSize = 0;
25667 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025668 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025669 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025670
25671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025672 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025673
25674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 -------------------------------------------------------------------------*/
25677 if (( NULL == pEventData ) ||
25678 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25679 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025680 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025681 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25682 {
25683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025686 return WDI_STATUS_E_FAILURE;
25687 }
25688
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025689 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25691 &pBSSSes);
25692 if ( NULL == pBSSSes )
25693 {
25694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025695 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025697 }
25698
25699 /*-----------------------------------------------------------------------
25700 Get message buffer
25701 -----------------------------------------------------------------------*/
25702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025703 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025704 sizeof(tHalRcvFltPktClearParam),
25705 &pSendBuffer, &usDataOffset, &usSendSize))||
25706 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25707 {
25708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25709 "Unable to get send buffer in "
25710 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25711 pEventData, pwdiRcvFltPktClearReqParamsType,
25712 wdiRcvFltPktClearFilterCb);
25713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025715 }
25716
25717
25718 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025719 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025721 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025722
Jeff Johnsone7245742012-09-05 17:12:55 -070025723 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25724 wpalMemoryCopy( pSendBuffer+usDataOffset,
25725 &rcvFltPktClearParam,
25726 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025727
25728 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025729 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025730
25731
25732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025733 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025734 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025737 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025738}
25739
25740/**
25741 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025742
25743 @param pWDICtx: pointer to the WLAN DAL context
25744 pEventData: pointer to the event information structure
25745
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 @see
25747 @return Result of the function call
25748*/
25749WDI_Status
25750WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025751(
Jeff Johnson295189b2012-06-20 16:38:30 -070025752 WDI_ControlBlockType* pWDICtx,
25753 WDI_EventInfoType* pEventData
25754)
25755{
Jeff Johnson295189b2012-06-20 16:38:30 -070025756 eHalStatus halStatus;
25757 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025758 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25759 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25761
25762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025763 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025764
25765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 -------------------------------------------------------------------------*/
25768 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25769 ( NULL == pEventData->pEventData ))
25770 {
25771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 }
25776
Jeff Johnsone7245742012-09-05 17:12:55 -070025777 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025778
25779 /*-------------------------------------------------------------------------
25780 Extract response and send it to UMAC
25781 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025782 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25783 {
25784 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25785 pEventData->pEventData,
25786 sizeof(halRcvFltPktSetMcListRsp));
25787
25788 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25789 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25790 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25791 halRcvFltPktSetMcListRsp.bssIdx;
25792 }
25793 else
25794 {
25795 halStatus = *((eHalStatus*)pEventData->pEventData);
25796 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25797 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025798
25799 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025800 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025801
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025803}
25804
25805/**
25806 @brief Process Set Rsp function (called when a
25807 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025808
25809 @param pWDICtx: pointer to the WLAN DAL context
25810 pEventData: pointer to the event information structure
25811
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 @see
25813 @return Result of the function call
25814*/
25815WDI_Status
25816WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025817(
Jeff Johnson295189b2012-06-20 16:38:30 -070025818 WDI_ControlBlockType* pWDICtx,
25819 WDI_EventInfoType* pEventData
25820)
25821{
Jeff Johnson295189b2012-06-20 16:38:30 -070025822 eHalStatus halStatus;
25823 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025824 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25825 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25827
25828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025829 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025830
25831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025832 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025833 -------------------------------------------------------------------------*/
25834 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25835 ( NULL == pEventData->pEventData ))
25836 {
25837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 }
25842
25843 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025844 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025845
25846 /*-------------------------------------------------------------------------
25847 Extract response and send it to UMAC
25848 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025849 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25850 {
25851 wpalMemoryCopy( &halSetPktFilterRspParams,
25852 pEventData->pEventData,
25853 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025854
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025855 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25856 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25857 }
25858 else
25859 {
25860 halStatus = *((eHalStatus*)pEventData->pEventData);
25861 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25862 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025864 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025865
Jeff Johnsone7245742012-09-05 17:12:55 -070025866 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025867}
25868
25869/**
25870 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025871
25872 @param pWDICtx: pointer to the WLAN DAL context
25873 pEventData: pointer to the event information structure
25874
Jeff Johnson295189b2012-06-20 16:38:30 -070025875 @see
25876 @return Result of the function call
25877*/
25878WDI_Status
25879WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025880(
Jeff Johnson295189b2012-06-20 16:38:30 -070025881 WDI_ControlBlockType* pWDICtx,
25882 WDI_EventInfoType* pEventData
25883)
25884{
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025887 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25888 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025889
25890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25891
25892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025893 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025894
25895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025896 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 -------------------------------------------------------------------------*/
25898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25899 ( NULL == pEventData->pEventData ))
25900 {
25901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 }
25906
Jeff Johnsone7245742012-09-05 17:12:55 -070025907 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025908
25909 /*-------------------------------------------------------------------------
25910 Extract response and send it to UMAC
25911 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025912 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25913 {
25914 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25915 pEventData->pEventData,
25916 sizeof(halRcvFltrPktMatachRsp));
25917
25918 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25919 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25920 }
25921 else
25922 {
25923 halStatus = *((eHalStatus*)pEventData->pEventData);
25924 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25925 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025926
25927 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025928 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025929
Jeff Johnsone7245742012-09-05 17:12:55 -070025930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025931}
25932
25933/**
25934 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025935
25936 @param pWDICtx: pointer to the WLAN DAL context
25937 pEventData: pointer to the event information structure
25938
Jeff Johnson295189b2012-06-20 16:38:30 -070025939 @see
25940 @return Result of the function call
25941*/
25942WDI_Status
25943WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025944(
Jeff Johnson295189b2012-06-20 16:38:30 -070025945 WDI_ControlBlockType* pWDICtx,
25946 WDI_EventInfoType* pEventData
25947)
25948{
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 eHalStatus halStatus;
25950 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025951 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25952 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25954
25955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025956 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025957
25958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025960 -------------------------------------------------------------------------*/
25961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25962 ( NULL == pEventData->pEventData ))
25963 {
25964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 }
25969
25970 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025971 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025972
25973 /*-------------------------------------------------------------------------
25974 Extract response and send it to UMAC
25975 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025976 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25977 {
25978 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25979 pEventData->pEventData,
25980 sizeof(halRcvFltPktClearRspMsg));
25981
25982 wdiRcvFltPktClearRspParamsType.wdiStatus =
25983 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25984 wdiRcvFltPktClearRspParamsType.bssIdx =
25985 halRcvFltPktClearRspMsg.bssIdx;
25986 }
25987 else
25988 {
25989 halStatus = *((eHalStatus*)pEventData->pEventData);
25990 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25991 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025992
25993 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025994 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025995
Jeff Johnsone7245742012-09-05 17:12:55 -070025996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025997}
25998#endif // WLAN_FEATURE_PACKET_FILTERING
25999
26000/**
26001 @brief Process Shutdown Rsp function
26002 There is no shutdown response comming from HAL
26003 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026004
Jeff Johnson295189b2012-06-20 16:38:30 -070026005 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026006 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026007
26008 @see
26009 @return Result of the function call
26010*/
26011WDI_Status
26012WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026013(
Jeff Johnson295189b2012-06-20 16:38:30 -070026014 WDI_ControlBlockType* pWDICtx,
26015 WDI_EventInfoType* pEventData
26016)
26017{
26018 /*There is no shutdown response comming from HAL - function just kept for
26019 simmetry */
26020 WDI_ASSERT(0);
26021 return WDI_STATUS_SUCCESS;
26022}/*WDI_ProcessShutdownRsp*/
26023
26024/**
26025 @brief WDI_SetPowerParamsReq
26026
Jeff Johnsone7245742012-09-05 17:12:55 -070026027 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026028 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026029
Jeff Johnson295189b2012-06-20 16:38:30 -070026030 wdiPowerParamsCb: callback for passing back the response
26031 of the Set Power Params operation received from the
26032 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026033
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026035 callback
26036
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 @return Result of the function call
26038*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026039WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026040WDI_SetPowerParamsReq
26041(
26042 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26043 WDI_SetPowerParamsCb wdiPowerParamsCb,
26044 void* pUserData
26045)
26046{
26047 WDI_EventInfoType wdiEventData;
26048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26049
26050 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026051 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026052 ------------------------------------------------------------------------*/
26053 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26054 {
26055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26056 "WDI API call before module is initialized - Fail request");
26057
Jeff Johnsone7245742012-09-05 17:12:55 -070026058 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 }
26060
26061 /*------------------------------------------------------------------------
26062 Fill in Event data and post to the Main FSM
26063 ------------------------------------------------------------------------*/
26064 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 wdiEventData.pUserData = pUserData;
26069
26070 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26071}/*WDI_SetPowerParamsReq*/
26072
26073/**
26074 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026075
26076 @param pWDICtx: pointer to the WLAN DAL context
26077 pEventData: pointer to the event information structure
26078
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 @see
26080 @return Result of the function call
26081*/
26082WDI_Status
26083WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026084(
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 WDI_ControlBlockType* pWDICtx,
26086 WDI_EventInfoType* pEventData
26087)
26088{
26089 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26090 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 wpt_uint16 usDataOffset = 0;
26093 wpt_uint16 usSendSize = 0;
26094 tSetPowerParamsType powerParams;
26095
26096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026098 -------------------------------------------------------------------------*/
26099 if (( NULL == pEventData ) ||
26100 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26101 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26102 {
26103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 }
26108
26109 /*-----------------------------------------------------------------------
26110 Get message buffer
26111 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 sizeof(powerParams),
26114 &pSendBuffer, &usDataOffset, &usSendSize))||
26115 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26116 {
26117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26118 "Unable to get send buffer in Set PNO req %x %x %x",
26119 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026122 }
26123
26124 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026125 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26127
26128 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026129 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26131
26132 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026133 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26135
26136 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026138 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26139
26140 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026141 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026142 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26143
26144 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026145 powerParams.uBETInterval =
26146 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026147
Yue Ma0da19492013-05-13 17:01:29 -070026148 /* MAX LI for modulated DTIM */
26149 powerParams.uMaxLIModulatedDTIM =
26150 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026151
26152 wpalMemoryCopy( pSendBuffer+usDataOffset,
26153 &powerParams,
26154 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026155
26156 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026158
26159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26163 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026164}
26165
26166/**
26167 @brief Process Power Params Rsp function (called when a
26168 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026169
26170 @param pWDICtx: pointer to the WLAN DAL context
26171 pEventData: pointer to the event information structure
26172
Jeff Johnson295189b2012-06-20 16:38:30 -070026173 @see
26174 @return Result of the function call
26175*/
26176WDI_Status
26177WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026178(
Jeff Johnson295189b2012-06-20 16:38:30 -070026179 WDI_ControlBlockType* pWDICtx,
26180 WDI_EventInfoType* pEventData
26181)
26182{
26183 WDI_Status wdiStatus;
26184 eHalStatus halStatus;
26185 WDI_SetPowerParamsCb wdiPowerParamsCb;
26186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26187
26188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026190 -------------------------------------------------------------------------*/
26191 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26192 ( NULL == pEventData->pEventData ))
26193 {
26194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 }
26199
Jeff Johnsone7245742012-09-05 17:12:55 -070026200 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026201
26202 /*-------------------------------------------------------------------------
26203 Extract response and send it to UMAC
26204 -------------------------------------------------------------------------*/
26205 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026206 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026207
26208 /*Notify UMAC*/
26209 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26210
Jeff Johnsone7245742012-09-05 17:12:55 -070026211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026212}/*WDI_ProcessSetPowerParamsRsp*/
26213
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026214/**
26215 @brief WDI_dhcpStartInd
26216 Host will send an event to the FW when DHCP is initiated
26217
26218 @param
26219 WDI_DHCPInd: DHCP Indication
26220 @see
26221 @return Result of the function call
26222*/
26223WDI_Status
26224WDI_dhcpStartInd
26225(
26226 WDI_DHCPInd *wdiDHCPInd
26227)
26228{
26229 WDI_EventInfoType wdiEventData;
26230
26231 /*------------------------------------------------------------------------
26232 Sanity Check
26233 ------------------------------------------------------------------------*/
26234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26235 {
26236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26237 "WDI API call before module is initialized - Fail request");
26238
26239 return WDI_STATUS_E_NOT_ALLOWED;
26240 }
26241
26242 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26243 wdiEventData.pEventData = wdiDHCPInd;
26244 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26245 wdiEventData.pCBfnc = NULL;
26246 wdiEventData.pUserData = NULL;
26247
26248 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26249}
26250
26251
26252/**
26253 @brief WDI_dhcpStopInd
26254 Host will send an event to the FW when DHCP is completed
26255
26256 @param
26257 WDI_DHCPInd: DHCP Indication
26258 @see
26259 @return Result of the function call
26260*/
26261WDI_Status
26262WDI_dhcpStopInd
26263(
26264 WDI_DHCPInd *wdiDHCPInd
26265)
26266{
26267 WDI_EventInfoType wdiEventData;
26268
26269 /*------------------------------------------------------------------------
26270 Sanity Check
26271 ------------------------------------------------------------------------*/
26272 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26273 {
26274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26275 "WDI API call before module is initialized - Fail request");
26276
26277 return WDI_STATUS_E_NOT_ALLOWED;
26278 }
26279
26280 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26281 wdiEventData.pEventData = wdiDHCPInd;
26282 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26283 wdiEventData.pCBfnc = NULL;
26284 wdiEventData.pUserData = NULL;
26285
26286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26287}
26288
26289
26290/**
26291 @brief Process DHCP Start Indication message and post it to HAL
26292
26293 @param pWDICtx: pointer to the WLAN DAL context
26294 pEventData: pointer to the event information structure
26295
26296 @see
26297 @return Result of the function call
26298*/
26299WDI_Status
26300WDI_ProcessDHCPStartInd
26301(
26302 WDI_ControlBlockType* pWDICtx,
26303 WDI_EventInfoType* pEventData
26304)
26305{
26306 wpt_uint8* pSendBuffer = NULL;
26307 wpt_uint16 usDataOffset = 0;
26308 wpt_uint16 usSendSize = 0;
26309 wpt_uint16 usLen = 0;
26310 WDI_DHCPInd* pwdiDHCPInd = NULL;
26311 tDHCPInfo* pDHCPInfo;
26312
26313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26314
26315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26316 "%s", __func__);
26317
26318 /*-------------------------------------------------------------------------
26319 Sanity check
26320 -------------------------------------------------------------------------*/
26321 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26322 {
26323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26324 "%s: Invalid parameters", __func__);
26325 WDI_ASSERT(0);
26326 return WDI_STATUS_E_FAILURE;
26327 }
26328 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26329 /*-----------------------------------------------------------------------
26330 Get message buffer
26331 -----------------------------------------------------------------------*/
26332
26333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26334 WDI_DHCP_START_IND,
26335 sizeof(tDHCPInfo),
26336 &pSendBuffer, &usDataOffset, &usSendSize))||
26337 ( usSendSize < (usDataOffset + usLen )))
26338 {
26339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26340 "Unable to get send buffer in DHCP Start req %p ",
26341 pEventData);
26342 WDI_ASSERT(0);
26343 return WDI_STATUS_E_FAILURE;
26344 }
26345
26346 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26347 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26348 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26349 WDI_MAC_ADDR_LEN);
26350
26351 pWDICtx->pReqStatusUserData = NULL;
26352 pWDICtx->pfncRspCB = NULL;
26353
26354 /*-------------------------------------------------------------------------
26355 Send DHCP Start Indication to HAL
26356 -------------------------------------------------------------------------*/
26357 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26358
26359}/*WDI_ProcessDHCPStartInd*/
26360
26361/**
26362 @brief Process DHCP Stop indication message and post it to HAL
26363
26364 @param pWDICtx: pointer to the WLAN DAL context
26365 pEventData: pointer to the event information structure
26366
26367 @see
26368 @return Result of the function call
26369*/
26370WDI_Status
26371WDI_ProcessDHCPStopInd
26372(
26373 WDI_ControlBlockType* pWDICtx,
26374 WDI_EventInfoType* pEventData
26375)
26376{
26377 wpt_uint8* pSendBuffer = NULL;
26378 wpt_uint16 usDataOffset = 0;
26379 wpt_uint16 usSendSize = 0;
26380 wpt_uint16 usLen = 0;
26381 WDI_DHCPInd* pwdiDHCPInd = NULL;
26382 tDHCPInfo* pDHCPInfo;
26383
26384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26385
26386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26387 "%s", __func__);
26388
26389 /*-------------------------------------------------------------------------
26390 Sanity check
26391 -------------------------------------------------------------------------*/
26392
26393 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26394 {
26395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26396 "%s: Invalid parameters", __func__);
26397 WDI_ASSERT(0);
26398 return WDI_STATUS_E_FAILURE;
26399 }
26400 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26401 /*-----------------------------------------------------------------------
26402 Get message buffer
26403 -----------------------------------------------------------------------*/
26404
26405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26406 WDI_DHCP_STOP_IND,
26407 sizeof(tDHCPInfo),
26408 &pSendBuffer, &usDataOffset, &usSendSize))||
26409 ( usSendSize < (usDataOffset + usLen )))
26410 {
26411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26412 "Unable to get send buffer in DHCP Start req %p ",
26413 pEventData);
26414 WDI_ASSERT(0);
26415 return WDI_STATUS_E_FAILURE;
26416 }
26417
26418 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26419 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26420 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26421 WDI_MAC_ADDR_LEN);
26422
26423 pWDICtx->pReqStatusUserData = NULL;
26424 pWDICtx->pfncRspCB = NULL;
26425 /*-------------------------------------------------------------------------
26426 Send DHCP Stop indication to HAL
26427 -------------------------------------------------------------------------*/
26428 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26429
26430}/*WDI_ProcessDHCPStopInd*/
26431
26432
Jeff Johnson295189b2012-06-20 16:38:30 -070026433#ifdef WLAN_FEATURE_GTK_OFFLOAD
26434/**
26435 @brief WDI_GTKOffloadReq will be called when the upper MAC
26436 wants to set GTK Rekey Counter while in power save. Upon
26437 the call of this API the WLAN DAL will pack and send a
26438 HAL GTK offload request message to the lower RIVA
26439 sub-system if DAL is in state STARTED.
26440
26441 In state BUSY this request will be queued. Request won't
26442 be allowed in any other state.
26443
26444 WDI_PostAssocReq must have been called.
26445
26446 @param pwdiGtkOffloadParams: the GTK offload as specified
26447 by the Device Interface
26448
26449 wdiGtkOffloadCb: callback for passing back the response
26450 of the GTK offload operation received from the device
26451
26452 pUserData: user data will be passed back with the
26453 callback
26454
26455 @see WDI_PostAssocReq
26456 @return Result of the function call
26457*/
26458WDI_Status
26459WDI_GTKOffloadReq
26460(
26461 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26462 WDI_GtkOffloadCb wdiGtkOffloadCb,
26463 void* pUserData
26464)
26465{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026466 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26468
26469 /*------------------------------------------------------------------------
26470 Sanity Check
26471 ------------------------------------------------------------------------*/
26472 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26473 {
26474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26475 "WDI API call before module is initialized - Fail request");
26476
26477 return WDI_STATUS_E_NOT_ALLOWED;
26478 }
26479
26480 /*------------------------------------------------------------------------
26481 Fill in Event data and post to the Main FSM
26482 ------------------------------------------------------------------------*/
26483 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26484 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026485 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026486 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26487 wdiEventData.pUserData = pUserData;
26488
26489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26490}
26491
26492
26493/**
26494 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26495 MAC wants to get GTK Rekey Counter while in power save.
26496 Upon the call of this API the WLAN DAL will pack and
26497 send a HAL GTK offload request message to the lower RIVA
26498 sub-system if DAL is in state STARTED.
26499
26500 In state BUSY this request will be queued. Request won't
26501 be allowed in any other state.
26502
26503 WDI_PostAssocReq must have been called.
26504
26505 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26506 Information Message as specified by the
26507 Device Interface
26508
26509 wdiGtkOffloadGetInfoCb: callback for passing back the
26510 response of the GTK offload operation received from the
26511 device
26512
26513 pUserData: user data will be passed back with the
26514 callback
26515
26516 @see WDI_PostAssocReq
26517 @return Result of the function call
26518*/
26519WDI_Status
26520WDI_GTKOffloadGetInfoReq
26521(
26522 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26523 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26524 void* pUserData
26525)
26526{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026527 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26529
26530 /*------------------------------------------------------------------------
26531 Sanity Check
26532 ------------------------------------------------------------------------*/
26533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26534 {
26535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26536 "WDI API call before module is initialized - Fail request");
26537
26538 return WDI_STATUS_E_NOT_ALLOWED;
26539 }
26540
26541 /*------------------------------------------------------------------------
26542 Fill in Event data and post to the Main FSM
26543 ------------------------------------------------------------------------*/
26544 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26545 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26546 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26547 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26548 wdiEventData.pUserData = pUserData;
26549
26550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26551}
26552
26553
26554/**
26555 @brief Process set GTK Offload Request function
26556
26557 @param pWDICtx: pointer to the WLAN DAL context
26558 pEventData: pointer to the event information structure
26559
26560 @see
26561 @return Result of the function call
26562*/
26563WDI_Status
26564WDI_ProcessGTKOffloadReq
26565(
26566 WDI_ControlBlockType* pWDICtx,
26567 WDI_EventInfoType* pEventData
26568)
26569{
26570 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26571 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26572 wpt_uint8* pSendBuffer = NULL;
26573 wpt_uint16 usDataOffset = 0;
26574 wpt_uint16 usSendSize = 0;
26575 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026576 wpt_uint8 ucCurrentSessionId = 0;
26577 WDI_BSSSessionType* pBSSSes = NULL;
26578
Jeff Johnson295189b2012-06-20 16:38:30 -070026579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26580
26581 /*-------------------------------------------------------------------------
26582 Sanity check
26583 -------------------------------------------------------------------------*/
26584 if (( NULL == pEventData ) ||
26585 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26586 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26587 {
26588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026590 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026591 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026592 }
26593
26594 /*-----------------------------------------------------------------------
26595 Get message buffer
26596 -----------------------------------------------------------------------*/
26597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26598 sizeof(gtkOffloadReqParams),
26599 &pSendBuffer, &usDataOffset, &usSendSize))||
26600 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26601 {
26602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26603 "Unable to get send buffer in GTK offload req %x %x %x",
26604 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26605 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026606 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026607 }
26608
26609 //
26610 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26611 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026612 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26613 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26614 &pBSSSes);
26615 if ( NULL == pBSSSes )
26616 {
26617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026618 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026619 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026620 }
26621
26622 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26623
Jeff Johnson295189b2012-06-20 16:38:30 -070026624 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26625 // Copy KCK
26626 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26627 // Copy KEK
26628 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26629 // Copy KeyReplayCounter
26630 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26631
26632 wpalMemoryCopy( pSendBuffer+usDataOffset,
26633 &gtkOffloadReqParams,
26634 sizeof(gtkOffloadReqParams));
26635
26636 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26637 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26638
26639 /*-------------------------------------------------------------------------
26640 Send Get STA Request to HAL
26641 -------------------------------------------------------------------------*/
26642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26643 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026644
26645fail:
26646 // Release the message buffer so we don't leak
26647 wpalMemoryFree(pSendBuffer);
26648
26649failRequest:
26650 //WDA should have failure check to avoid the memory leak
26651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026652}
26653
26654
26655/**
26656 @brief Process GTK Offload Get Information Request function
26657
26658 @param pWDICtx: pointer to the WLAN DAL context
26659 pEventData: pointer to the event information structure
26660
26661 @see
26662 @return Result of the function call
26663*/
26664WDI_Status
26665WDI_ProcessGTKOffloadGetInfoReq
26666(
26667 WDI_ControlBlockType* pWDICtx,
26668 WDI_EventInfoType* pEventData
26669)
26670{
26671 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26672 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26673 wpt_uint8* pSendBuffer = NULL;
26674 wpt_uint16 usDataOffset = 0;
26675 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026676 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26677 wpt_uint8 ucCurrentSessionId = 0;
26678 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026679
26680 /*-------------------------------------------------------------------------
26681 Sanity check
26682 -------------------------------------------------------------------------*/
26683 if (( NULL == pEventData ) ||
26684 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26685 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26686 {
26687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026688 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026689 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026690 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026691 }
26692
26693 /*-----------------------------------------------------------------------
26694 Get message buffer
26695 -----------------------------------------------------------------------*/
26696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026697 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026698 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026699 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026700 {
26701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26702 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26703 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26704 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026705 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026706 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026707 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26708 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26709 &pBSSSes);
26710 if ( NULL == pBSSSes )
26711 {
26712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026713 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026714 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026715 }
26716 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026717
26718 //
26719 // Don't need to fill send buffer other than header
26720 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026721 wpalMemoryCopy( pSendBuffer+usDataOffset,
26722 &halGtkOffloadGetInfoReqParams,
26723 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026724
26725 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26726 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26727
26728 /*-------------------------------------------------------------------------
26729 Send Get STA Request to HAL
26730 -------------------------------------------------------------------------*/
26731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26732 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026733fail:
26734 // Release the message buffer so we don't leak
26735 wpalMemoryFree(pSendBuffer);
26736
26737failRequest:
26738 //WDA should have failure check to avoid the memory leak
26739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026740}
26741
26742/**
26743 @brief Process host offload Rsp function (called when a
26744 response is being received over the bus from HAL)
26745
26746 @param pWDICtx: pointer to the WLAN DAL context
26747 pEventData: pointer to the event information structure
26748
26749 @see
26750 @return Result of the function call
26751*/
26752WDI_Status
26753WDI_ProcessGtkOffloadRsp
26754(
26755 WDI_ControlBlockType* pWDICtx,
26756 WDI_EventInfoType* pEventData
26757)
26758{
Jeff Johnson295189b2012-06-20 16:38:30 -070026759 eHalStatus halStatus;
26760 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026761 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26762 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26764
26765 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26766
26767 /*-------------------------------------------------------------------------
26768 Sanity check
26769 -------------------------------------------------------------------------*/
26770 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26771 ( NULL == pEventData->pEventData))
26772 {
26773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026775 WDI_ASSERT(0);
26776 return WDI_STATUS_E_FAILURE;
26777 }
26778
26779 /*-------------------------------------------------------------------------
26780 Extract response and send it to UMAC
26781 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026782 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26783 {
26784 wpalMemoryCopy( &halGtkOffloadRspParams,
26785 pEventData->pEventData,
26786 sizeof(halGtkOffloadRspParams));
26787
26788 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026789 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026790 wdiGtkOffloadRsparams.bssIdx =
26791 halGtkOffloadRspParams.bssIdx;
26792 }
26793 else
26794 {
26795 halStatus = *((eHalStatus*)pEventData->pEventData);
26796 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26797 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026798
26799 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026800 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026801
26802 return WDI_STATUS_SUCCESS;
26803}
26804
26805/**
26806 @brief Process GTK Offload Get Information Response function
26807
26808 @param pWDICtx: pointer to the WLAN DAL context
26809 pEventData: pointer to the event information structure
26810
26811 @see
26812 @return Result of the function call
26813*/
26814WDI_Status
26815WDI_ProcessGTKOffloadGetInfoRsp
26816(
26817 WDI_ControlBlockType* pWDICtx,
26818 WDI_EventInfoType* pEventData
26819)
26820{
Jeff Johnson295189b2012-06-20 16:38:30 -070026821 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026822 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026823 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26824 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026825 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026826
26827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26828
26829 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26830
26831 /*-------------------------------------------------------------------------
26832 Sanity check
26833 -------------------------------------------------------------------------*/
26834 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26835 ( NULL == pEventData->pEventData ))
26836 {
26837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026839 WDI_ASSERT(0);
26840 return WDI_STATUS_E_FAILURE;
26841 }
26842
26843 /*-------------------------------------------------------------------------
26844 Extract response and send it to UMAC
26845 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026846 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26847 {
26848 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26849 pEventData->pEventData,
26850 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026851
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026852 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026853 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026854 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26855 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26856 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26857 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26858 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26859 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26860 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26861 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026862
26863 wpalMutexAcquire(&pWDICtx->wptMutex);
26864 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26865 &pBSSSes);
26866
26867 if ( NULL == pBSSSes )
26868 {
26869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26870 "Association sequence for this BSS does not exist or "
26871 "association no longer in progress - mysterious HAL response");
26872 wpalMutexRelease(&pWDICtx->wptMutex);
26873 return WDI_STATUS_E_NOT_ALLOWED;
26874 }
26875
26876 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26877 sizeof (wpt_macAddr));
26878 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026879 }
26880 else
26881 {
26882 halStatus = *((eHalStatus*)pEventData->pEventData);
26883 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26884 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026885 /*Notify UMAC*/
26886 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26887 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026888 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026889
26890 return WDI_STATUS_SUCCESS;
26891}
26892#endif // WLAN_FEATURE_GTK_OFFLOAD
26893
26894#ifdef WLAN_WAKEUP_EVENTS
26895WDI_Status
26896WDI_ProcessWakeReasonInd
26897(
26898 WDI_ControlBlockType* pWDICtx,
26899 WDI_EventInfoType* pEventData
26900)
26901{
26902 WDI_LowLevelIndType *pWdiInd;
26903 tpWakeReasonParams pWakeReasonParams;
26904 wpt_uint32 allocSize = 0;
26905
26906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026907 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026908
26909 /*-------------------------------------------------------------------------
26910 Sanity check
26911 -------------------------------------------------------------------------*/
26912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26913 ( NULL == pEventData->pEventData ))
26914 {
26915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026917 WDI_ASSERT( 0 );
26918 return WDI_STATUS_E_FAILURE;
26919 }
26920
26921 /*-------------------------------------------------------------------------
26922 Extract indication and send it to UMAC
26923 -------------------------------------------------------------------------*/
26924 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26925
26926 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26927
26928 //Allocate memory for WDI_WakeReasonIndType structure
26929 pWdiInd = wpalMemoryAllocate(allocSize) ;
26930
26931 if(NULL == pWdiInd)
26932 {
26933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26934 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026935 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 WDI_ASSERT(0);
26937 return WDI_STATUS_E_FAILURE;
26938 }
26939
26940 wpalMemoryZero(pWdiInd, allocSize);
26941
26942 /* Fill in the indication parameters*/
26943 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26944 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26945 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26946 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26947 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26948 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26949 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26950 &(pWakeReasonParams->aDataStart[0]),
26951 pWakeReasonParams->ulStoredDataLen);
26952
ltimariu034f7d62013-01-24 18:54:33 -080026953
26954 if ( pWDICtx->wdiLowLevelIndCB )
26955 {
26956 /*Notify UMAC*/
26957 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26958 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026959
26960 //Free memory allocated for WDI_WakeReasonIndType structure
26961 wpalMemoryFree(pWdiInd);
26962
26963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026964 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026965
26966 return WDI_STATUS_SUCCESS;
26967}
26968#endif // WLAN_WAKEUP_EVENTS
26969
26970void WDI_GetWcnssCompiledApiVersion
26971(
26972 WDI_WlanVersionType *pWcnssApiVersion
26973)
26974{
26975 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26976 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26977 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26978 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26979}
26980
26981/**
26982 @brief Process Set TM Level Rsp function (called when a
26983 response is being received over the bus from HAL)
26984
26985 @param pWDICtx: pointer to the WLAN DAL context
26986 pEventData: pointer to the event information structure
26987
26988 @see
26989 @return Result of the function call
26990*/
26991WDI_Status
26992WDI_ProcessSetTmLevelRsp
26993(
26994 WDI_ControlBlockType* pWDICtx,
26995 WDI_EventInfoType* pEventData
26996)
26997{
26998 WDI_Status wdiStatus;
26999 eHalStatus halStatus;
27000 WDI_SetTmLevelCb wdiSetTmLevelCb;
27001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27002
27003 /*-------------------------------------------------------------------------
27004 Sanity check
27005 -------------------------------------------------------------------------*/
27006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27007 ( NULL == pEventData->pEventData ))
27008 {
27009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027011 WDI_ASSERT(0);
27012 return WDI_STATUS_E_FAILURE;
27013 }
27014
27015 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27016
27017 /*-------------------------------------------------------------------------
27018 Extract response and send it to UMAC
27019 -------------------------------------------------------------------------*/
27020 halStatus = *((eHalStatus*)pEventData->pEventData);
27021 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27022
27023 /*Notify UMAC*/
27024 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27025
27026 return WDI_STATUS_SUCCESS;
27027}/*WDI_ProcessSetTmLevelRsp*/
27028
27029/**
27030 @brief Process Set Thermal Mitigation level Changed request
27031
27032 @param pWDICtx: pointer to the WLAN DAL context
27033 pEventData: pointer to the event information structure
27034
27035 @see
27036 @return Result of the function call
27037*/
27038WDI_Status
27039WDI_ProcessSetTmLevelReq
27040(
27041 WDI_ControlBlockType* pWDICtx,
27042 WDI_EventInfoType* pEventData
27043)
27044{
27045 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27046 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27047 wpt_uint8* pSendBuffer = NULL;
27048 wpt_uint16 usDataOffset = 0;
27049 wpt_uint16 usSendSize = 0;
27050 tSetThermalMitgationType halTmMsg;
27051
27052 /*-------------------------------------------------------------------------
27053 Sanity check
27054 -------------------------------------------------------------------------*/
27055 if (( NULL == pEventData ) ||
27056 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27057 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27058 {
27059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027061 WDI_ASSERT(0);
27062 return WDI_STATUS_E_FAILURE;
27063 }
27064
27065 /*-----------------------------------------------------------------------
27066 Get message buffer
27067 -----------------------------------------------------------------------*/
27068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27069 sizeof(halTmMsg),
27070 &pSendBuffer, &usDataOffset, &usSendSize))||
27071 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27072 {
27073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27074 "Unable to get send buffer in Set PNO req %x %x %x",
27075 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27076 WDI_ASSERT(0);
27077 return WDI_STATUS_E_FAILURE;
27078 }
27079
27080 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27081 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27082
27083 wpalMemoryCopy( pSendBuffer+usDataOffset,
27084 &halTmMsg,
27085 sizeof(halTmMsg));
27086
27087 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27088 pWDICtx->pfncRspCB = NULL;
27089 /*-------------------------------------------------------------------------
27090 Send Get STA Request to HAL
27091 -------------------------------------------------------------------------*/
27092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27093 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27094}
27095
27096/* Fill the value from the global features enabled array to the global capabilities
27097 * bitmap struct
27098 */
27099static void
27100FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27101{
27102 wpt_int8 i;
27103 for (i=0; i<len; i++)
27104 {
27105 setFeatCaps(fCaps, enabledFeat[i]);
27106 }
27107}
27108
27109/**
27110 @brief WDI_featureCapsExchangeReq
27111 Post feature capability bitmap exchange event.
27112 Host will send its own capability to FW in this req and
27113 expect FW to send its capability back as a bitmap in Response
27114
27115 @param
27116
27117 wdiFeatureCapsExchangeCb: callback called on getting the response.
27118 It is kept to mantain similarity between WDI reqs and if needed, can
27119 be used in future. Currently, It is set to NULL
27120
27121 pUserData: user data will be passed back with the
27122 callback
27123
27124 @see
27125 @return Result of the function call
27126*/
27127WDI_Status
27128WDI_featureCapsExchangeReq
27129(
27130 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27131 void* pUserData
27132)
27133{
27134 WDI_EventInfoType wdiEventData;
27135 wpt_int32 fCapsStructSize;
27136
27137 /*------------------------------------------------------------------------
27138 Sanity Check
27139 ------------------------------------------------------------------------*/
27140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27141 {
27142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27143 "WDI API call before module is initialized - Fail request");
27144
27145 return WDI_STATUS_E_NOT_ALLOWED;
27146 }
27147
27148 /* Allocate memory separately for global variable carrying FW caps */
27149 fCapsStructSize = sizeof(tWlanFeatCaps);
27150 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27151 if ( NULL == gpHostWlanFeatCaps )
27152 {
27153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27154 "Cannot allocate memory for host capability info\n");
27155 WDI_ASSERT(0);
27156 return WDI_STATUS_MEM_FAILURE;
27157 }
27158
27159 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27160
27161 /*------------------------------------------------------------------------
27162 Fill in Event data and post to the Main FSM
27163 ------------------------------------------------------------------------*/
27164 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27165 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027167 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027168 gpHostWlanFeatCaps->featCaps[0],
27169 gpHostWlanFeatCaps->featCaps[1],
27170 gpHostWlanFeatCaps->featCaps[2],
27171 gpHostWlanFeatCaps->featCaps[3]
27172 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27174 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027175 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27176 wdiEventData.pEventData = gpHostWlanFeatCaps;
27177 wdiEventData.uEventDataSize = fCapsStructSize;
27178 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27179 wdiEventData.pUserData = pUserData;
27180
27181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27182}
27183
27184/**
Yathishd8713192012-12-10 14:21:35 -080027185 @brief Disable Active mode offload in Host
27186
27187 @param void
27188 @see
27189 @return void
27190*/
27191void
27192WDI_disableCapablityFeature(wpt_uint8 feature_index)
27193{
27194 supportEnabledFeatures[feature_index] = 0;
27195 return;
27196}
27197
27198/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027199 @brief Process Host-FW Capability Exchange Request function
27200
27201 @param pWDICtx: pointer to the WLAN DAL context
27202 pEventData: pointer to the event information structure
27203
27204 @see
27205 @return Result of the function call
27206*/
27207WDI_Status
27208WDI_ProcessFeatureCapsExchangeReq
27209(
27210 WDI_ControlBlockType* pWDICtx,
27211 WDI_EventInfoType* pEventData
27212)
27213{
27214 wpt_uint8* pSendBuffer = NULL;
27215 wpt_uint16 usDataOffset = 0;
27216 wpt_uint16 usSendSize = 0;
27217 wpt_uint16 usLen = 0;
27218
27219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27220
27221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027222 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027223
27224 /*-------------------------------------------------------------------------
27225 Sanity check
27226 -------------------------------------------------------------------------*/
27227 /* Call back function is NULL since not required for cap exchange req */
27228 if (( NULL == pEventData ) ||
27229 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27230 {
27231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027233 WDI_ASSERT(0);
27234 return WDI_STATUS_E_FAILURE;
27235 }
27236
27237 /*-----------------------------------------------------------------------
27238 Get message buffer
27239 -----------------------------------------------------------------------*/
27240 usLen = sizeof(tWlanFeatCaps);
27241
27242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27243 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27244 usLen,
27245 &pSendBuffer, &usDataOffset, &usSendSize))||
27246 ( usSendSize < (usDataOffset + usLen )))
27247 {
27248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27249 "Unable to get send buffer in feat caps exchange req %x %x",
27250 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27251 WDI_ASSERT(0);
27252 return WDI_STATUS_E_FAILURE;
27253 }
27254
27255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027256 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027257 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27258 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27259 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27260 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27261 );
27262
27263 /* Copy host caps after the offset in the send buffer */
27264 wpalMemoryCopy( pSendBuffer+usDataOffset,
27265 (tWlanFeatCaps *)pEventData->pEventData,
27266 usLen);
27267
27268 /*-------------------------------------------------------------------------
27269 Send Start Request to HAL
27270 -------------------------------------------------------------------------*/
27271 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27272 (WDI_StartRspCb)pEventData->pCBfnc,
27273 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27274
27275}/*WDI_ProcessFeatureCapsExchangeReq*/
27276
27277/**
27278 @brief Process Host-FW Capability Exchange Response function
27279
27280 @param pWDICtx: pointer to the WLAN DAL context
27281 pEventData: pointer to the event information structure
27282
27283 @see
27284 @return Result of the function call
27285*/
27286WDI_Status
27287WDI_ProcessFeatureCapsExchangeRsp
27288(
27289 WDI_ControlBlockType* pWDICtx,
27290 WDI_EventInfoType* pEventData
27291)
27292{
27293 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27294 wpt_int32 fCapsStructSize;
27295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27296
27297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027298 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027299
27300 /*-------------------------------------------------------------------------
27301 Sanity check
27302 -------------------------------------------------------------------------*/
27303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27304 ( NULL == pEventData->pEventData ))
27305 {
27306 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027309 WDI_ASSERT(0);
27310 return WDI_STATUS_E_FAILURE;
27311 }
27312
27313 /* Allocate memory separately for global variable carrying FW caps */
27314 fCapsStructSize = sizeof(tWlanFeatCaps);
27315 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27316 if ( NULL == gpFwWlanFeatCaps )
27317 {
27318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27319 "Cannot allocate memory for host capability info\n");
27320 WDI_ASSERT(0);
27321 return WDI_STATUS_MEM_FAILURE;
27322 }
27323
27324 /*-------------------------------------------------------------------------
27325 Unpack HAL Response Message - the header was already extracted by the
27326 main Response Handling procedure
27327 -------------------------------------------------------------------------*/
27328 /*-------------------------------------------------------------------------
27329 Extract response and send it to UMAC
27330 -------------------------------------------------------------------------*/
27331
27332 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27333 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027335 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027336 gpFwWlanFeatCaps->featCaps[0],
27337 gpFwWlanFeatCaps->featCaps[1],
27338 gpFwWlanFeatCaps->featCaps[2],
27339 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027340 );
27341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27342 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027343 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27344
27345 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27346 if (wdiFeatureCapsExchangeCb != NULL)
27347 wdiFeatureCapsExchangeCb(NULL, NULL);
27348
27349 return WDI_STATUS_SUCCESS;
27350}
27351
Mohit Khanna4a70d262012-09-11 16:30:12 -070027352#ifdef WLAN_FEATURE_11AC
27353WDI_Status
27354WDI_ProcessUpdateVHTOpModeRsp
27355(
27356 WDI_ControlBlockType* pWDICtx,
27357 WDI_EventInfoType* pEventData
27358)
27359{
27360 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27361 WDI_Status wdiStatus;
27362 eHalStatus halStatus;
27363
27364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27365
27366 /*-------------------------------------------------------------------------
27367 Sanity check
27368 -------------------------------------------------------------------------*/
27369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27370 ( NULL == pEventData->pEventData))
27371 {
27372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027373 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027374 WDI_ASSERT(0);
27375 return WDI_STATUS_E_FAILURE;
27376 }
27377 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27378
27379 /*-------------------------------------------------------------------------
27380 Extract response and send it to UMAC
27381 -------------------------------------------------------------------------*/
27382 halStatus = *((eHalStatus*)pEventData->pEventData);
27383 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27384
27385 /*Notify UMAC*/
27386 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27387
27388 return WDI_STATUS_SUCCESS;
27389}
27390#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027391/**
27392 @brief WDI_getHostWlanFeatCaps
27393 WDI API that returns whether the feature passed to it as enum value in
27394 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27395 variable storing host capability bitmap to find this. This can be used by
27396 other moduels to decide certain things like call different APIs based on
27397 whether a particular feature is supported.
27398
27399 @param
27400
27401 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27402
27403 @see
27404 @return
27405 0 - if the feature is NOT supported in host
27406 any non-zero value - if the feature is SUPPORTED in host.
27407*/
27408wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27409{
27410 wpt_uint8 featSupported = 0;
27411 if (gpHostWlanFeatCaps != NULL)
27412 {
27413 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27414 }
27415 else
27416 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027418 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027419 }
27420 return featSupported;
27421}
27422
27423/**
27424 @brief WDI_getFwWlanFeatCaps
27425 WDI API that returns whether the feature passed to it as enum value in
27426 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27427 variable storing host capability bitmap to find this. This can be used by
27428 other moduels to decide certain things like call different APIs based on
27429 whether a particular feature is supported.
27430
27431 @param
27432
27433 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27434 in wlan_hal_msg.h.
27435
27436 @see
27437 @return
27438 0 - if the feature is NOT supported in FW
27439 any non-zero value - if the feature is SUPPORTED in FW.
27440*/
27441wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27442{
27443 wpt_uint8 featSupported = 0;
27444 if (gpFwWlanFeatCaps != NULL)
27445 {
27446 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27447 }
27448 else
27449 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027451 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 }
27453 return featSupported;
27454}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027455
27456#ifdef WLAN_FEATURE_11AC
27457WDI_Status
27458WDI_ProcessUpdateVHTOpModeReq
27459(
27460 WDI_ControlBlockType* pWDICtx,
27461 WDI_EventInfoType* pEventData
27462)
27463{
27464 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27465 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27466 wpt_uint8* pSendBuffer = NULL;
27467 wpt_uint16 usDataOffset = 0;
27468 wpt_uint16 usSendSize = 0;
27469
27470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27471
27472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027473 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027474
27475 /*-------------------------------------------------------------------------
27476 Sanity check
27477 -------------------------------------------------------------------------*/
27478 if (( NULL == pEventData ) ||
27479 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27480 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27481 {
27482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027483 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027484 WDI_ASSERT(0);
27485 return WDI_STATUS_E_FAILURE;
27486 }
27487
27488 /*-----------------------------------------------------------------------
27489 Get message buffer
27490 -----------------------------------------------------------------------*/
27491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27492 sizeof(WDI_UpdateVHTOpMode),
27493 &pSendBuffer, &usDataOffset, &usSendSize))||
27494 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27495 {
27496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27497 "Unable to get send buffer in update vht opMode req");
27498 WDI_ASSERT(0);
27499 return WDI_STATUS_E_FAILURE;
27500 }
27501
27502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27503 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27504
27505 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27506 sizeof(WDI_UpdateVHTOpMode));
27507
27508 /*-------------------------------------------------------------------------
27509 Send Start Request to HAL
27510 -------------------------------------------------------------------------*/
27511 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27512 wdiVHTOpModeCb,
27513 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27514
27515}
27516
27517WDI_Status
27518WDI_UpdateVHTOpModeReq
27519(
27520 WDI_UpdateVHTOpMode *pData,
27521 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27522 void* pUserData
27523)
27524{
27525 WDI_EventInfoType wdiEventData;
27526
27527 /*------------------------------------------------------------------------
27528 Sanity Check
27529 ------------------------------------------------------------------------*/
27530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27531 {
27532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27533 "WDI API call before module is initialized - Fail request");
27534
27535 return WDI_STATUS_E_NOT_ALLOWED;
27536 }
27537
27538 /*------------------------------------------------------------------------
27539 Fill in Event data and post to the Main FSM
27540 ------------------------------------------------------------------------*/
27541 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27542 wdiEventData.pEventData = pData;
27543 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27544 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27545 wdiEventData.pUserData = pUserData;
27546
27547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27548 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27549
27550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27551
27552}
27553#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027554
27555/**
27556 @brief WDI_TransportChannelDebug -
27557 Display DXE Channel debugging information
27558 User may request to display DXE channel snapshot
27559 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027560
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027561 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027562 @param enableStallDetect : Enable stall detect feature
27563 This feature will take effect to data performance
27564 Not integrate till fully verification
27565 @see
27566 @return none
27567*/
27568void WDI_TransportChannelDebug
27569(
27570 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027571 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027572)
27573{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027574 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027575 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027576}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027577/**
27578 @brief WDI_SsrTimerCB
27579 Callback function for SSR timer, if this is called then the graceful
27580 shutdown for Riva did not happen.
27581
27582 @param pUserData : user data to timer
27583
27584 @see
27585 @return none
27586*/
27587void
27588WDI_SsrTimerCB
27589(
27590 void *pUserData
27591)
27592{
27593 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27595
27596 if (NULL == pWDICtx )
27597 {
27598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027599 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027600 WDI_ASSERT(0);
27601 return;
27602 }
27603 wpalRivaSubystemRestart();
27604
27605 return;
27606
27607}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027608
27609/**
27610 @brief WDI_SetEnableSSR -
27611 This API is called to enable/disable SSR on WDI timeout.
27612
27613 @param enableSSR : enable/disable SSR
27614
27615 @see
27616 @return none
27617*/
27618void WDI_SetEnableSSR(wpt_boolean enableSSR)
27619{
27620 gWDICb.bEnableSSR = enableSSR;
27621}
Leo Chang00bc9132013-08-01 19:21:11 -070027622
27623
27624#ifdef FEATURE_WLAN_LPHB
27625/**
27626 @brief WDI_ProcessLphbWaitTimeoutInd -
27627 This function will be invoked when FW detects low power
27628 heart beat failure
27629
27630 @param pWDICtx : wdi context
27631 pEventData : indication data
27632
27633 @see
27634 @return Result of the function call
27635*/
27636WDI_Status
27637WDI_ProcessLphbWaitTimeoutInd
27638(
27639 WDI_ControlBlockType* pWDICtx,
27640 WDI_EventInfoType* pEventData
27641)
27642{
27643 WDI_LowLevelIndType wdiInd;
27644 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27646
27647 /*-------------------------------------------------------------------------
27648 Sanity check
27649 -------------------------------------------------------------------------*/
27650 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27651 (NULL == pEventData->pEventData))
27652 {
27653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27654 "%s: Invalid parameters", __func__);
27655 WDI_ASSERT(0);
27656 return WDI_STATUS_E_FAILURE;
27657 }
27658
27659 /*-------------------------------------------------------------------------
27660 Extract indication and send it to UMAC
27661 -------------------------------------------------------------------------*/
27662 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
27663
27664 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
27665 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
27666 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
27667 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
27668 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
27669 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
27670 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
27671 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
27672 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
27673 /*Notify UMAC*/
27674 if (pWDICtx->wdiLowLevelIndCB)
27675 {
27676 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
27677 }
27678
27679 return WDI_STATUS_SUCCESS;
27680}
27681
27682/**
27683 @brief WDI_ProcessLphbCfgRsp -
27684 LPHB configuration response from FW
27685
27686 @param pWDICtx : wdi context
27687 pEventData : indication data
27688
27689 @see
27690 @return Result of the function call
27691*/
27692WDI_Status WDI_ProcessLphbCfgRsp
27693(
27694 WDI_ControlBlockType* pWDICtx,
27695 WDI_EventInfoType* pEventData
27696)
27697{
27698 WDI_Status wdiStatus;
27699 eHalStatus halStatus;
27700 WDI_LphbCfgCb wdiLphbCfgCb;
27701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27702
27703 /*-------------------------------------------------------------------------
27704 Sanity check
27705 -------------------------------------------------------------------------*/
27706 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27707 (NULL == pEventData->pEventData))
27708 {
27709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27710 "%s: Invalid parameters", __func__);
27711 WDI_ASSERT(0);
27712 return WDI_STATUS_E_FAILURE;
27713 }
27714
27715 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
27716
27717 /*-------------------------------------------------------------------------
27718 Extract response and send it to UMAC
27719 -------------------------------------------------------------------------*/
27720 halStatus = *((eHalStatus*)pEventData->pEventData);
27721 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27722
27723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27724 "LPHB Cfg Rsp Return status %d", wdiStatus);
27725 /*Notify UMAC*/
27726 if (NULL != wdiLphbCfgCb)
27727 {
27728 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
27729 }
27730
27731 return WDI_STATUS_SUCCESS;
27732}
27733
27734/**
27735 @brief WDI_ProcessLPHBConfReq -
27736 LPHB configuration request to FW
27737
27738 @param pWDICtx : wdi context
27739 pEventData : indication data
27740
27741 @see
27742 @return none
27743*/
27744WDI_Status WDI_ProcessLPHBConfReq
27745(
27746 WDI_ControlBlockType* pWDICtx,
27747 WDI_EventInfoType* pEventData
27748)
27749{
27750 WDI_LPHBReq *pLphbReqParams;
27751 WDI_Status wdiStatus;
27752 wpt_uint8* pSendBuffer = NULL;
27753 wpt_uint16 usDataOffset = 0;
27754 wpt_uint16 usSendSize = 0;
27755 tHalLowPowerHeartBeatReq *halLphbReqRarams;
27756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27757
27758 /*-------------------------------------------------------------------------
27759 Sanity check
27760 -------------------------------------------------------------------------*/
27761 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
27762 {
27763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27764 "%s: Invalid parameters in Suspend ind",__func__);
27765 WDI_ASSERT(0);
27766 return WDI_STATUS_E_FAILURE;
27767 }
27768
27769 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
27770
27771 /*-----------------------------------------------------------------------
27772 Get message buffer
27773 -----------------------------------------------------------------------*/
27774 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27775 WDI_LPHB_CFG_REQ,
27776 sizeof(tHalLowPowerHeartBeatReqMsg),
27777 &pSendBuffer, &usDataOffset, &usSendSize))||
27778 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
27779 {
27780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27781 "Unable to get send buffer in LPHB Ind ");
27782 WDI_ASSERT(0);
27783 return WDI_STATUS_E_FAILURE;
27784 }
27785
27786 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
27787 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
27788
27789 halLphbReqRarams->lowPowerHeartBeatCmdType =
27790 (tANI_U16)(++pLphbReqParams->cmd);
27791 switch ((tANI_U16)pLphbReqParams->cmd)
27792 {
27793 case WDI_LPHB_SET_EN_PARAMS_INDID:
27794 halLphbReqRarams->sessionIdx =
27795 pLphbReqParams->params.lphbEnableReq.session;
27796 halLphbReqRarams->options.control.heartBeatEnable =
27797 pLphbReqParams->params.lphbEnableReq.enable;
27798 halLphbReqRarams->options.control.heartBeatType =
27799 pLphbReqParams->params.lphbEnableReq.item;
27800 break;
27801
27802 case WDI_LPHB_SET_TCP_PARAMS_INDID:
27803 halLphbReqRarams->sessionIdx =
27804 pLphbReqParams->params.lphbTcpParamReq.session;
27805 halLphbReqRarams->options.tcpParams.timeOutSec =
27806 pLphbReqParams->params.lphbTcpParamReq.timeout;
27807 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
27808 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
27809 sizeof(v_U32_t));
27810 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
27811 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
27812 sizeof(v_U32_t));
27813
27814 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
27815 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
27816 WDI_MAC_ADDR_LEN);
27817
27818 halLphbReqRarams->options.tcpParams.hostPort =
27819 pLphbReqParams->params.lphbTcpParamReq.src_port;
27820 halLphbReqRarams->options.tcpParams.destPort =
27821 pLphbReqParams->params.lphbTcpParamReq.dst_port;
27822 break;
27823
27824 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
27825 halLphbReqRarams->sessionIdx =
27826 pLphbReqParams->params.lphbTcpFilterReq.session;
27827 halLphbReqRarams->options.tcpUdpFilter.offset =
27828 pLphbReqParams->params.lphbTcpFilterReq.offset;
27829 halLphbReqRarams->options.tcpUdpFilter.filterLength =
27830 pLphbReqParams->params.lphbTcpFilterReq.length;
27831 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
27832 pLphbReqParams->params.lphbTcpFilterReq.filter,
27833 WDI_LPHB_FILTER_LEN);
27834 break;
27835
27836 case WDI_LPHB_SET_UDP_PARAMS_INDID:
27837 halLphbReqRarams->sessionIdx =
27838 pLphbReqParams->params.lphbUdpParamReq.session;
27839 halLphbReqRarams->options.udpParams.timeOutSec =
27840 pLphbReqParams->params.lphbUdpParamReq.timeout;
27841 halLphbReqRarams->options.udpParams.timePeriodSec =
27842 pLphbReqParams->params.lphbUdpParamReq.interval;
27843 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
27844 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
27845 sizeof(v_U32_t));
27846 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
27847 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
27848 sizeof(v_U32_t));
27849
27850 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
27851 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
27852 WDI_MAC_ADDR_LEN);
27853
27854 halLphbReqRarams->options.udpParams.hostPort =
27855 pLphbReqParams->params.lphbUdpParamReq.src_port;
27856 halLphbReqRarams->options.udpParams.destPort =
27857 pLphbReqParams->params.lphbUdpParamReq.dst_port;
27858 break;
27859
27860 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
27861 halLphbReqRarams->sessionIdx =
27862 pLphbReqParams->params.lphbUdpFilterReq.session;
27863 halLphbReqRarams->options.tcpUdpFilter.offset =
27864 pLphbReqParams->params.lphbUdpFilterReq.offset;
27865 halLphbReqRarams->options.tcpUdpFilter.filterLength =
27866 pLphbReqParams->params.lphbUdpFilterReq.length;
27867 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
27868 pLphbReqParams->params.lphbUdpFilterReq.filter,
27869 WDI_LPHB_FILTER_LEN);
27870 break;
27871
27872 case WDI_LPHB_SET_NETWORK_INFO_INDID:
27873 /* NA */
27874 break;
27875
27876 default:
27877 break;
27878 }
27879
27880 /*-------------------------------------------------------------------------
27881 Send Suspend Request to HAL
27882 -------------------------------------------------------------------------*/
27883 pWDICtx->pfncRspCB = pEventData->pCBfnc;
27884 pWDICtx->pReqStatusUserData = pEventData->pUserData;
27885
27886 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
27887 usSendSize, pWDICtx->pfncRspCB,
27888 pWDICtx->pReqStatusUserData,
27889 WDI_LPHB_CFG_RESP);
27890
27891 return wdiStatus;
27892}
27893
27894/**
27895 @brief WDI_LPHBConfReq -
27896 LPHB configuration request API
27897
27898 @param lphbconfParam : configuration parameter
27899 usrData : client context
27900 lphbCfgCb : callback function pointer
27901
27902 @see
27903 @return Success or fail status code
27904*/
27905WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
27906 void *usrData, WDI_LphbCfgCb lphbCfgCb)
27907{
27908 WDI_EventInfoType wdiEventData;
27909
27910 /*------------------------------------------------------------------------
27911 Sanity Check
27912 ------------------------------------------------------------------------*/
27913 if (eWLAN_PAL_FALSE == gWDIInitialized)
27914 {
27915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27916 "WDI API call before module is initialized - Fail request");
27917
27918 return WDI_STATUS_E_NOT_ALLOWED;
27919 }
27920
27921 /*------------------------------------------------------------------------
27922 Fill in Event data and post to the Main FSM
27923 ------------------------------------------------------------------------*/
27924 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
27925 wdiEventData.pEventData = lphbconfParam;
27926 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
27927 wdiEventData.pCBfnc = lphbCfgCb;
27928 wdiEventData.pUserData = usrData;
27929
27930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27931}
27932#endif /* FEATURE_WLAN_LPHB */
27933