blob: 8a14608483cc21b7333a48743a97a4e28ff944b8 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yue Ma70627492013-03-28 11:33:46 -0700115#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700146#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
147 ,WLAN_ROAM_SCAN_OFFLOAD
148#else
149 ,FEATURE_NOT_SUPPORTED
150#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800151 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700152
153/*--------------------------------------------------------------------------
154 WLAN DAL State Machine
155 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700156WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700157{
158 /*WDI_INIT_ST*/
159 {{
160 WDI_MainStart, /*WDI_START_EVENT*/
161 NULL, /*WDI_STOP_EVENT*/
162 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
163 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
164 WDI_MainClose, /*WDI_CLOSE_EVENT*/
165 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
166 }},
167
168 /*WDI_STARTED_ST*/
169 {{
170 WDI_MainStartStarted, /*WDI_START_EVENT*/
171 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
172 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
173 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
174 NULL, /*WDI_CLOSE_EVENT*/
175 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
176 }},
177
178 /*WDI_STOPPED_ST*/
179 {{
180 WDI_MainStart, /*WDI_START_EVENT*/
181 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
182 NULL, /*WDI_REQUEST_EVENT*/
183 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
184 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700185 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700186 }},
187
188 /*WDI_BUSY_ST*/
189 {{
190 WDI_MainStartBusy, /*WDI_START_EVENT*/
191 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
192 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
193 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
194 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
195 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
196 }}
197};
198
Jeff Johnsone7245742012-09-05 17:12:55 -0700199/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700200 DAL Request Processing Array - the functions in this table will only be
201 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700202 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700203 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700204WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700205{
206 /*INIT*/
207 WDI_ProcessStartReq, /* WDI_START_REQ */
208 WDI_ProcessStopReq, /* WDI_STOP_REQ */
209 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
210
211 /*SCAN*/
212 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
213 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
214 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
215 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
216
217 /*ASSOCIATION*/
218 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
219 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
220 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
221 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
222 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
223
224 /* Security */
225 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
226 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
227 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
228 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
229
230 /* QoS and BA APIs */
231 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
232 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
233 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
234 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
235 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
236
237 /* Miscellaneous Control APIs */
238 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
239 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
240 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
241 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
242 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
243
244 /*BA APIs*/
245 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
246 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
247
248 /*Beacon processing APIs*/
249 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
250 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
251
252 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
253 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
254 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
255 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 /* PowerSave APIs */
258 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
259 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
260 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
261 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
262 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
263 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
264 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
265 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
266 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
267 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
268 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
269 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
270 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
271 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
272 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
273 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
274 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
275 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
276 /*NV Download APIs*/
277 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
278 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
279 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
280#ifdef WLAN_FEATURE_VOWIFI_11R
281 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
282#else
283 NULL,
284#endif /* WLAN_FEATURE_VOWIFI_11R */
285 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
286 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700288
289#ifdef FEATURE_OEM_DATA_SUPPORT
290 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
291#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700292 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700293#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700294 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700295
296 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700297
298#ifdef FEATURE_WLAN_SCAN_PNO
299 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
300 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
301 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
302#else
303 NULL,
304 NULL,
305 NULL,
306#endif /* FEATURE_WLAN_SCAN_PNO */
307
308 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309
Jeff Johnson295189b2012-06-20 16:38:30 -0700310#ifdef WLAN_FEATURE_PACKET_FILTERING
311 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700312 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700313 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700314 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700316 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700318 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700319#else
320 NULL,
321 NULL,
322 NULL,
323 NULL,
324#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700325 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700326 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
327 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
328
329 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
330#ifdef FEATURE_WLAN_CCX
331 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
332#else
333 NULL,
334#endif
335
336#ifdef WLAN_FEATURE_GTK_OFFLOAD
337 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
338 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
339#else
340 NULL,
341 NULL,
342#endif // WLAN_FEATURE_GTK_OFFLOAD
343
344 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
345 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700346#ifdef WLAN_FEATURE_11AC
347 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800348#else
349 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700350#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800351#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
352 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
353#else
schangd82195a2013-03-13 18:41:24 -0700354 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800355#endif
schangd82195a2013-03-13 18:41:24 -0700356 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700357#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700358 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700359#else
360 NULL,
361#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530362#ifdef FEATURE_WLAN_TDLS
363 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
364#else
365 NULL,
366#endif
schangd82195a2013-03-13 18:41:24 -0700367 /*-------------------------------------------------------------------------
368 Indications
369 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700370 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800371 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530372 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
373 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700374#ifdef WLAN_FEATURE_11W
375 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
376#else
377 NULL,
378#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700379};
380
381
Jeff Johnsone7245742012-09-05 17:12:55 -0700382/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700383 DAL Request Processing Array - the functions in this table will only be
384 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700385 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700386 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700387WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700388{
389 /*INIT*/
390 WDI_ProcessStartRsp, /* WDI_START_RESP */
391 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
392 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
393
394 /*SCAN*/
395 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
396 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
397 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
398 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
399
400 /* ASSOCIATION*/
401 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
402 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
403 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
404 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
405 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
406
407 /* Security */
408 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
409 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
410 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
411 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
412
413 /* QoS and BA APIs */
414 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
415 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
416 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
417 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
418 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
419
420 /* Miscellaneous Control APIs */
421 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
422 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
423 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
424 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
425 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
426
427 /* BA APIs*/
428 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
429 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700430
Jeff Johnson295189b2012-06-20 16:38:30 -0700431 /* IBSS APIs*/
432 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
433 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
434
435 /*Soft AP APIs*/
436 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
437 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
438 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
439 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
440
441 /* PowerSave APIs */
442 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
443 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
444 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
445 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
446 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
447 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
448 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
449 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
450 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
451 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
452 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
453 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
454 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
455 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
456 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
457 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
458 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
459 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700460
Jeff Johnson295189b2012-06-20 16:38:30 -0700461
462 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
463
464 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
465 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
466#ifdef WLAN_FEATURE_VOWIFI_11R
467 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
468#else
469 NULL,
470#endif /* WLAN_FEATURE_VOWIFI_11R */
471 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
472 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700473#ifdef FEATURE_OEM_DATA_SUPPORT
474 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
475#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700476 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700477#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
479
Jeff Johnson295189b2012-06-20 16:38:30 -0700480 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700481
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700483
Jeff Johnsone7245742012-09-05 17:12:55 -0700484 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
485
Jeff Johnson295189b2012-06-20 16:38:30 -0700486#ifdef FEATURE_WLAN_SCAN_PNO
487 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
488 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
489 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
490#else
491 NULL,
492 NULL,
493 NULL,
494#endif // FEATURE_WLAN_SCAN_PNO
495
496 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
497
498 /*---------------------------------------------------------------------
499 Indications
500 ---------------------------------------------------------------------*/
501#ifdef WLAN_FEATURE_PACKET_FILTERING
502 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700503 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700504 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700505 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700508 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700509 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700510#else
511 NULL,
512 NULL,
513 NULL,
514 NULL,
515#endif // WLAN_FEATURE_PACKET_FILTERING
516
517 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
518 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
519
520 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
521#ifdef FEATURE_WLAN_CCX
522 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
523#else
524 NULL,
525#endif
526
527#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700528 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
529 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530#else
531 NULL,
532 NULL,
533#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700534 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
535 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700536#ifdef WLAN_FEATURE_11AC
537 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700538#else
539 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700540#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800541#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
542 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
543#else
544 NULL,
545#endif
schangd82195a2013-03-13 18:41:24 -0700546 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700547#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700548 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700549#else
550 NULL,
551#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530552#ifdef FEATURE_WLAN_TDLS
553 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
554#else
555 NULL,
556#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700557 /*---------------------------------------------------------------------
558 Indications
559 ---------------------------------------------------------------------*/
560 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
561 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
562 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
563 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
564 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
565 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
566
567 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
568
569 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
570
Jeff Johnson295189b2012-06-20 16:38:30 -0700571 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700572
573#ifdef FEATURE_WLAN_SCAN_PNO
574 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
575#else
576 NULL,
577#endif // FEATURE_WLAN_SCAN_PNO
578
579#ifdef WLAN_WAKEUP_EVENTS
580 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
581#else // WLAN_WAKEUP_EVENTS
582 NULL,
583#endif // WLAN_WAKEUP_EVENTS
584
585 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800586
Viral Modi9dc288a2012-12-10 13:09:21 -0800587 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530588#ifdef FEATURE_WLAN_TDLS
589 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
590#else
591 NULL,
592#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700593};
594
595
Jeff Johnsone7245742012-09-05 17:12:55 -0700596/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700597 WLAN DAL Global Control Block
598 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700599WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700600static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
601
Jeff Johnsone7245742012-09-05 17:12:55 -0700602const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700603
604/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700605WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700606void* WDI_GET_PAL_CTX( void )
607{
Jeff Johnsone7245742012-09-05 17:12:55 -0700608 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700609}/*WDI_GET_PAL_CTX*/
610
Jeff Johnsone7245742012-09-05 17:12:55 -0700611/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700612 Helper inline converters
613 ============================================================================*/
614/*Convert WDI driver type into HAL driver type*/
615WPT_STATIC WPT_INLINE WDI_Status
616WDI_HAL_2_WDI_STATUS
617(
618 eHalStatus halStatus
619);
620
621/*Convert WDI request type into HAL request type*/
622WPT_STATIC WPT_INLINE tHalHostMsgType
623WDI_2_HAL_REQ_TYPE
624(
625 WDI_RequestEnumType wdiReqType
626);
627
628/*Convert WDI response type into HAL response type*/
629WPT_STATIC WPT_INLINE WDI_ResponseEnumType
630HAL_2_WDI_RSP_TYPE
631(
632 tHalHostMsgType halMsg
633);
634
635/*Convert WDI driver type into HAL driver type*/
636WPT_STATIC WPT_INLINE tDriverType
637WDI_2_HAL_DRV_TYPE
638(
639 WDI_DriverType wdiDriverType
640);
641
642/*Convert WDI stop reason into HAL stop reason*/
643WPT_STATIC WPT_INLINE tHalStopType
644WDI_2_HAL_STOP_REASON
645(
646 WDI_StopType wdiStopType
647);
648
649/*Convert WDI scan mode type into HAL scan mode type*/
650WPT_STATIC WPT_INLINE eHalSysMode
651WDI_2_HAL_SCAN_MODE
652(
653 WDI_ScanMode wdiScanMode
654);
655
656/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700657WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700658WDI_2_HAL_SEC_CH_OFFSET
659(
660 WDI_HTSecondaryChannelOffset wdiSecChOffset
661);
662
663/*Convert WDI BSS type into HAL BSS type*/
664WPT_STATIC WPT_INLINE tSirBssType
665WDI_2_HAL_BSS_TYPE
666(
667 WDI_BssType wdiBSSType
668);
669
670/*Convert WDI NW type into HAL NW type*/
671WPT_STATIC WPT_INLINE tSirNwType
672WDI_2_HAL_NW_TYPE
673(
674 WDI_NwType wdiNWType
675);
676
677/*Convert WDI chanel bonding type into HAL cb type*/
678WPT_STATIC WPT_INLINE ePhyChanBondState
679WDI_2_HAL_CB_STATE
680(
681 WDI_PhyChanBondState wdiCbState
682);
683
684/*Convert WDI chanel bonding type into HAL cb type*/
685WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
686WDI_2_HAL_HT_OPER_MODE
687(
688 WDI_HTOperatingMode wdiHTOperMode
689);
690
691/*Convert WDI mimo PS type into HAL mimo PS type*/
692WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
693WDI_2_HAL_MIMO_PS
694(
695 WDI_HTMIMOPowerSaveState wdiHTOperMode
696);
697
698/*Convert WDI ENC type into HAL ENC type*/
699WPT_STATIC WPT_INLINE tAniEdType
700WDI_2_HAL_ENC_TYPE
701(
702 WDI_EncryptType wdiEncType
703);
704
705/*Convert WDI WEP type into HAL WEP type*/
706WPT_STATIC WPT_INLINE tAniWepType
707WDI_2_HAL_WEP_TYPE
708(
709 WDI_WepType wdiWEPType
710);
711
712/*Convert WDI Link State into HAL Link State*/
713WPT_STATIC WPT_INLINE tSirLinkState
714WDI_2_HAL_LINK_STATE
715(
716 WDI_LinkStateType wdiLinkState
717);
718
Jeff Johnsone7245742012-09-05 17:12:55 -0700719/*Translate a STA Context from WDI into HAL*/
720WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700721void
722WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700723(
Jeff Johnson295189b2012-06-20 16:38:30 -0700724 tConfigStaParams* phalConfigSta,
725 WDI_ConfigStaReqInfoType* pwdiConfigSta
726);
Jeff Johnsone7245742012-09-05 17:12:55 -0700727
728/*Translate a Rate set info from WDI into HAL*/
729WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700730WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700731(
Jeff Johnson295189b2012-06-20 16:38:30 -0700732 tSirMacRateSet* pHalRateSet,
733 WDI_RateSet* pwdiRateSet
734);
735
736/*Translate an EDCA Parameter Record from WDI into HAL*/
737WPT_STATIC WPT_INLINE void
738WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700739(
Jeff Johnson295189b2012-06-20 16:38:30 -0700740 tSirMacEdcaParamRecord* phalEdcaParam,
741 WDI_EdcaParamRecord* pWDIEdcaParam
742);
743
744/*Copy a management frame header from WDI fmt into HAL fmt*/
745WPT_STATIC WPT_INLINE void
746WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
747(
748 tSirMacMgmtHdr* pmacMgmtHdr,
749 WDI_MacMgmtHdr* pwdiMacMgmtHdr
750);
751
752/*Copy config bss parameters from WDI fmt into HAL fmt*/
753WPT_STATIC WPT_INLINE void
754WDI_CopyWDIConfigBSSToHALConfigBSS
755(
756 tConfigBssParams* phalConfigBSS,
757 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
758);
759
Jeff Johnsone7245742012-09-05 17:12:55 -0700760/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700761 pointed to by user data */
762WPT_STATIC WPT_INLINE void
763WDI_ExtractRequestCBFromEvent
764(
765 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700766 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700767 void** ppUserData
768);
769
770wpt_uint8
771WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700772(
Jeff Johnson295189b2012-06-20 16:38:30 -0700773 WDI_ControlBlockType* pWDICtx,
774 WDI_BSSSessionType** ppSession
775);
776
777void
778WDI_AddBcastSTAtoSTATable
779(
780 WDI_ControlBlockType* pWDICtx,
781 WDI_AddStaParams * staParams,
782 wpt_uint16 usBcastStaIdx
783);
784
785WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700786(
Jeff Johnson295189b2012-06-20 16:38:30 -0700787 WDI_ControlBlockType* pWDICtx,
788 WDI_EventInfoType* pEventData
789);
790
791void
792WDI_SetPowerStateCb
793(
794 wpt_status status,
795 unsigned int dxePhyAddr,
796 void *pContext
797);
798
799#define CASE_RETURN_STRING( str ) \
800 case ( ( str ) ): return( #str ); break \
801
802/**
803 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700804
805 @param wdiReqMsgId: WDI Message request Id
806
807 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 @return Result of the function call
809*/
810static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
811{
812 switch (wdiReqMsgId)
813 {
814 CASE_RETURN_STRING( WDI_START_REQ );
815 CASE_RETURN_STRING( WDI_STOP_REQ );
816 CASE_RETURN_STRING( WDI_CLOSE_REQ );
817 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
818 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
819 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
820 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
821 CASE_RETURN_STRING( WDI_JOIN_REQ );
822 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
823 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
824 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
825 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
826 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
827 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
828 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
829 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
830 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
831 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
832 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
833 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
834 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
835 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
836 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
837 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
838 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
839 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
840 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
841 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
842 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
843 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
844 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
845 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
846 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
847 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
848 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530849#ifdef FEATURE_WLAN_TDLS
850 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
851#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700852 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
853 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
854 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
855 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
856 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
857 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
858 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
859 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
860 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
861 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
862 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
863 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
864 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
865 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
866 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
867 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
868 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
869 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
870 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
871 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
872 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
873 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
874 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
875 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
876 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700877 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700878 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
879 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
880 #ifdef FEATURE_WLAN_SCAN_PNO
881 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
882 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
883 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
884 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700885#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700886 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700887#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700888 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
889 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
890 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
891 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
892 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
893 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
894 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
895 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
896 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800897 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800898 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700899#ifdef WLAN_FEATURE_11W
900 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
901#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700902 default:
903 return "Unknown WDI MessageId";
904 }
905}
906
907
908
909/**
910 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700911
912 @param wdiRespMsgId: WDI Message response Id
913
914 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700915 @return Result of the function call
916*/
917static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
918{
919 switch (wdiRespMsgId)
920 {
921 CASE_RETURN_STRING( WDI_START_RESP );
922 CASE_RETURN_STRING( WDI_STOP_RESP );
923 CASE_RETURN_STRING( WDI_CLOSE_RESP );
924 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
925 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
926 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
927 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
928 CASE_RETURN_STRING( WDI_JOIN_RESP );
929 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
930 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
931 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
932 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
933 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
934 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
935 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
936 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
937 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
938 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
939 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
940 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
941 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
942 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
943 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
944 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
945 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
946 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
947 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
948 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
949 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
950 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
951 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
952 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
953 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
954 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
955 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530956#ifdef FEATURE_WLAN_TDLS
957 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
958 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
959#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700960 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
961 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
962 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
963 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
964 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
965 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
966 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
967 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
968 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
969 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
970 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
971 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
972 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
973 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
974 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
975 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
976 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
977 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
978 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
979 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
980 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
981 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
982 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
983 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
984 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700985 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700986 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
987 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
988 #ifdef FEATURE_WLAN_SCAN_PNO
989 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
990 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
991 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
992 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700993#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700994 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700995#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
997 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
998 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
999 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1000 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1001 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1002 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1003 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001004 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001005 default:
1006 return "Unknown WDI MessageId";
1007 }
1008}
1009
1010/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301011 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1012 Capability bitmap array.
1013 @param capabilityBitmap - Base address of Bitmap array
1014 @see
1015 @returns None
1016 */
1017void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1018{
1019 int i;
1020 char capStr[512];
1021 char *pCapStr = capStr;
1022 for (i = 0; i < 32; i++) {
1023 if ((*(capabilityBitmap + 0) & (1 << i))) {
1024 switch(i) {
1025 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1026 pCapStr += strlen("MCC");
1027 break;
1028 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1029 pCapStr += strlen("P2P");
1030 break;
1031 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1032 pCapStr += strlen("DOT11AC");
1033 break;
1034 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1035 pCapStr += strlen("SLM_SESSIONIZATION");
1036 break;
1037 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1038 pCapStr += strlen("DOT11AC_OPMODE");
1039 break;
1040 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1041 pCapStr += strlen("SAP32STA");
1042 break;
1043 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1044 pCapStr += strlen("TDLS");
1045 break;
1046 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1047 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1048 break;
1049 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1050 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1051 break;
1052 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1053 pCapStr += strlen("BEACON_OFFLOAD");
1054 break;
1055 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1056 pCapStr += strlen("SCAN_OFFLOAD");
1057 break;
1058 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1059 pCapStr += strlen("ROAM_OFFLOAD");
1060 break;
1061 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1062 pCapStr += strlen("BCN_MISS_OFFLOAD");
1063 break;
1064 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1065 pCapStr += strlen("STA_POWERSAVE");
1066 break;
1067 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1068 pCapStr += strlen("AP_UAPSD");
1069 break;
1070 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1071 pCapStr += strlen("AP_DFS");
1072 break;
1073 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1074 pCapStr += strlen("BLOCKACK");
1075 break;
1076 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1077 pCapStr += strlen("PHY_ERR");
1078 break;
1079 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1080 pCapStr += strlen("BCN_FILTER");
1081 break;
1082 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1083 pCapStr += strlen("RTT");
1084 break;
1085 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1086 pCapStr += strlen("RATECTRL");
1087 break;
1088 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1089 pCapStr += strlen("WOW");
1090 break;
1091 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1092 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1093 break;
1094 }
1095 *pCapStr++ = ',';
1096 *pCapStr++ = ' ';
1097 }
1098 }
1099 pCapStr = capStr;
1100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t\t%s", pCapStr);
1101}
1102
1103/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001104 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001105
1106 @param halStatusId: HAL status Id
1107
1108 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001109 @return Result of the function call
1110*/
1111static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1112{
1113 switch (halStatusId)
1114 {
1115 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1116 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1117 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1118 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1119 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1120 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1121 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1122 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1123 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1124 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1125 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1126 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1127 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1128 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1129 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1130 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1131 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1132 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1133 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1134 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1135 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1136 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1137 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1138 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1139 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1140 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1141 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1142 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1143 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1144 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1145 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1146 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1147 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1148 default:
1149 return "Unknown HAL status";
1150 }
1151}
1152
Jeff Johnsone7245742012-09-05 17:12:55 -07001153/*========================================================================
1154
Jeff Johnson295189b2012-06-20 16:38:30 -07001155 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001156
Jeff Johnson295189b2012-06-20 16:38:30 -07001157==========================================================================*/
1158
1159/**
1160 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001161
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 DAL will allocate all the resources it needs. It will open PAL, it will also
1163 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001164 DXE/SMD or any other drivers that they need.
1165
Jeff Johnson295189b2012-06-20 16:38:30 -07001166 @param pOSContext: pointer to the OS context provided by the UMAC
1167 will be passed on to PAL on Open
1168 ppWDIGlobalCtx: output pointer of Global Context
1169 pWdiDevCapability: output pointer of device capability
1170
1171 @return Result of the function call
1172*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001173WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001174WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001175(
Jeff Johnson295189b2012-06-20 16:38:30 -07001176 void* pOSContext,
1177 void** ppWDIGlobalCtx,
1178 WDI_DeviceCapabilityType* pWdiDevCapability,
1179 unsigned int driverType
1180)
1181{
1182 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001183 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001185 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1187
1188 /*---------------------------------------------------------------------
1189 Sanity check
1190 ---------------------------------------------------------------------*/
1191 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1192 {
1193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1194 "Invalid input parameters in WDI_Init");
1195
Jeff Johnsone7245742012-09-05 17:12:55 -07001196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001197 }
1198
1199 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001200 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 ---------------------------------------------------------------------*/
1202 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1203 {
1204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1205 "WDI module already initialized - return");
1206
Jeff Johnsone7245742012-09-05 17:12:55 -07001207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 }
1209
1210 /*Module is now initialized - this flag is to ensure the fact that multiple
1211 init will not happen on WDI
1212 !! - potential race does exist because read and set are not atomic,
1213 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001214 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001215
1216 /*Setup the control block */
1217 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001218 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001219
1220 /*Setup the STA Table*/
1221 wdiStatus = WDI_STATableInit(&gWDICb);
1222 if ( WDI_STATUS_SUCCESS != wdiStatus )
1223 {
1224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1225 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001226 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001227 goto fail_STATableInit;
1228 }
1229
1230 /*------------------------------------------------------------------------
1231 Open the PAL
1232 ------------------------------------------------------------------------*/
1233 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1234 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1235 {
1236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1237 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001238 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001239 goto fail_wpalOpen;
1240 }
1241
1242 /*Initialize main synchro mutex - it will be used to ensure integrity of
1243 the main WDI Control Block*/
1244 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1245 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1246 {
1247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1248 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001249 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 goto fail_mutex;
1251 }
1252
1253 /*Initialize the response timer - it will be used to time all messages
1254 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001255 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1256 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001257 &gWDICb);
1258 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1259 {
1260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1261 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001262 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001263 goto fail_timer;
1264 }
1265
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001266 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1267 WDI_SsrTimerCB,
1268 &gWDICb);
1269 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1270 {
1271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1272 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001273 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001274 goto fail_timer2;
1275 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 /* Initialize the WDI Pending Request Queue*/
1277 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1278 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1279 {
1280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1281 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001282 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 goto fail_pend_queue;
1284 }
1285
1286 /*Init WDI Pending Assoc Id Queue */
1287 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1288 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1289 {
1290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1291 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001292 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001293 goto fail_assoc_queue;
1294 }
1295
1296 /*Initialize the BSS sessions pending Queue */
1297 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1298 {
1299 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1300 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1301 {
1302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1303 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001304 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001305 goto fail_bss_queue;
1306 }
1307 }
1308
1309 /*Indicate the control block is sufficiently initialized for callbacks*/
1310 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1311
1312 /*------------------------------------------------------------------------
1313 Initialize the Data Path Utility Module
1314 ------------------------------------------------------------------------*/
1315 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1316 if ( WDI_STATUS_SUCCESS != wdiStatus )
1317 {
1318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1319 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001320 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001321 goto fail_dp_util_init;
1322 }
1323
1324 /* Init Set power state event */
1325 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001326 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001327 {
1328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1329 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001330 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001331 goto fail_power_event;
1332 }
1333
1334 /* Init WCTS action event */
1335 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001336 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001337 {
1338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1339 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001340 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001341 goto fail_wcts_event;
1342 }
1343
1344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001345 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 ------------------------------------------------------------------------*/
1347 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1348 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001349 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 wctsCBs.wctsRxMsgCBData = &gWDICb;
1351
Jeff Johnsone7245742012-09-05 17:12:55 -07001352 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001354 WDI_CT_CHANNEL_SIZE,
1355 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001356
1357 if ( NULL == gWDICb.wctsHandle )
1358 {
1359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001360 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 goto fail_wcts_open;
1362 }
1363
1364 gWDICb.driverMode = (tDriverType)driverType;
1365 /* FTM mode not need to open Transport Driver */
1366 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001367 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 /*------------------------------------------------------------------------
1369 Open the Data Transport
1370 ------------------------------------------------------------------------*/
1371 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1372 {
1373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001374 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 goto fail_wdts_open;
1376 }
1377 }
1378
1379 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001380 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001381
1382 /*Send the context as a ptr to the global WDI Control Block*/
1383 *ppWDIGlobalCtx = &gWDICb;
1384
1385 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001386 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1388 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1389 return WDI_STATUS_SUCCESS;
1390
1391 /* ERROR handlers
1392 Undo everything that completed successfully */
1393
1394 fail_wdts_open:
1395 {
1396 wpt_status eventStatus;
1397
1398 /* Closing WCTS in this scenario is tricky since it has to close
1399 the SMD channel and then we get notified asynchronously when
1400 the channel has been closed. So we take some of the logic from
1401 the "normal" close procedure in WDI_Close()
1402 */
1403
1404 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001405 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001406 {
1407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001408 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001409 }
1410
1411 WCTS_CloseTransport(gWDICb.wctsHandle);
1412
1413 /* Wait for WCTS to close the control transport. If we were able
1414 to reset the event flag, then we'll wait for the event,
1415 otherwise we'll wait for a maximum amount of time required for
1416 the channel to be closed */
1417 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1418 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001419 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001420 WDI_WCTS_ACTION_TIMEOUT);
1421 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1422 {
1423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001424 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 }
1426 }
1427 else
1428 {
1429 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1430 }
1431 }
1432 fail_wcts_open:
1433 wpalEventDelete(&gWDICb.wctsActionEvent);
1434 fail_wcts_event:
1435 wpalEventDelete(&gWDICb.setPowerStateEvent);
1436 fail_power_event:
1437 WDI_DP_UtilsExit(&gWDICb);
1438 fail_dp_util_init:
1439 gWDICb.magic = 0;
1440 fail_bss_queue:
1441 /* entries 0 thru i-1 were successfully initialized */
1442 while (0 < i)
1443 {
1444 i--;
1445 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1446 }
1447 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1448 fail_assoc_queue:
1449 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1450 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001451 wpalTimerDelete(&gWDICb.ssrTimer);
1452 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 wpalTimerDelete(&gWDICb.wptResponseTimer);
1454 fail_timer:
1455 wpalMutexDelete(&gWDICb.wptMutex);
1456 fail_mutex:
1457 wpalClose(gWDICb.pPALContext);
1458 fail_wpalOpen:
1459 WDI_STATableClose(&gWDICb);
1460 fail_STATableInit:
1461 gWDIInitialized = eWLAN_PAL_FALSE;
1462
1463 return WDI_STATUS_E_FAILURE;
1464
1465}/*WDI_Init*/;
1466
1467/**
1468 @brief WDI_Start will be called when the upper MAC is ready to
1469 commence operation with the WLAN Device. Upon the call
1470 of this API the WLAN DAL will pack and send a HAL Start
1471 message to the lower RIVA sub-system if the SMD channel
1472 has been fully opened and the RIVA subsystem is up.
1473
1474 If the RIVA sub-system is not yet up and running DAL
1475 will queue the request for Open and will wait for the
1476 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001477 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001478
1479 WDI_Init must have been called.
1480
Jeff Johnsone7245742012-09-05 17:12:55 -07001481 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001482 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001483
Jeff Johnson295189b2012-06-20 16:38:30 -07001484 wdiStartRspCb: callback for passing back the response of
1485 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001486
Jeff Johnson295189b2012-06-20 16:38:30 -07001487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001488 callback
1489
Jeff Johnson295189b2012-06-20 16:38:30 -07001490 @see WDI_Start
1491 @return Result of the function call
1492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001494WDI_Start
1495(
1496 WDI_StartReqParamsType* pwdiStartParams,
1497 WDI_StartRspCb wdiStartRspCb,
1498 void* pUserData
1499)
1500{
1501 WDI_EventInfoType wdiEventData;
1502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1503
1504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 ------------------------------------------------------------------------*/
1507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1508 {
1509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1510 "WDI API call before module is initialized - Fail request");
1511
Jeff Johnsone7245742012-09-05 17:12:55 -07001512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001513 }
1514
1515 /*------------------------------------------------------------------------
1516 Fill in Event data and post to the Main FSM
1517 ------------------------------------------------------------------------*/
1518 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001519 wdiEventData.pEventData = pwdiStartParams;
1520 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1521 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 wdiEventData.pUserData = pUserData;
1523
1524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1525
1526}/*WDI_Start*/
1527
1528/**
1529 @brief WDI_Stop will be called when the upper MAC is ready to
1530 stop any operation with the WLAN Device. Upon the call
1531 of this API the WLAN DAL will pack and send a HAL Stop
1532 message to the lower RIVA sub-system if the DAL Core is
1533 in started state.
1534
1535 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001536
1537 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001538
1539 WDI_Start must have been called.
1540
Jeff Johnsone7245742012-09-05 17:12:55 -07001541 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001542 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001543
Jeff Johnson295189b2012-06-20 16:38:30 -07001544 wdiStopRspCb: callback for passing back the response of
1545 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001546
Jeff Johnson295189b2012-06-20 16:38:30 -07001547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001548 callback
1549
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 @see WDI_Start
1551 @return Result of the function call
1552*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001553WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001554WDI_Stop
1555(
1556 WDI_StopReqParamsType* pwdiStopParams,
1557 WDI_StopRspCb wdiStopRspCb,
1558 void* pUserData
1559)
1560{
1561 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001562 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1564
1565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001567 ------------------------------------------------------------------------*/
1568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1569 {
1570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1571 "WDI API call before module is initialized - Fail request");
1572
Jeff Johnsone7245742012-09-05 17:12:55 -07001573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001574 }
1575
Jeff Johnson43971f52012-07-17 12:26:56 -07001576 /*Access to the global state must be locked before cleaning */
1577 wpalMutexAcquire(&pWDICtx->wptMutex);
1578
1579 /*Clear all pending request*/
1580 WDI_ClearPendingRequests(pWDICtx);
1581
1582 /*We have completed cleaning unlock now*/
1583 wpalMutexRelease(&pWDICtx->wptMutex);
1584
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 /* Free the global variables */
1586 wpalMemoryFree(gpHostWlanFeatCaps);
1587 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001588 gpHostWlanFeatCaps = NULL;
1589 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001590
1591 /*------------------------------------------------------------------------
1592 Fill in Event data and post to the Main FSM
1593 ------------------------------------------------------------------------*/
1594 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001595 wdiEventData.pEventData = pwdiStopParams;
1596 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1597 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 wdiEventData.pUserData = pUserData;
1599
1600 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1601
1602}/*WDI_Stop*/
1603
1604
1605
1606/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001607 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001608 needs to interact with DAL. DAL will free its control
1609 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001610
1611 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001612
1613 WDI_Stop must have been called.
1614
1615 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001616
Jeff Johnson295189b2012-06-20 16:38:30 -07001617 @see WDI_Stop
1618 @return Result of the function call
1619*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001620WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001621WDI_Close
1622(
1623 void
1624)
1625{
1626 wpt_uint8 i;
1627 WDI_EventInfoType wdiEventData;
1628 wpt_status wptStatus;
1629 wpt_status eventStatus;
1630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1631
1632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001634 ------------------------------------------------------------------------*/
1635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1636 {
1637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1638 "WDI API call before module is initialized - Fail request");
1639
Jeff Johnsone7245742012-09-05 17:12:55 -07001640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001641 }
1642
1643 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1644 (the control transport will be closed by the FSM and we'll want
1645 to wait until that completes)*/
1646 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001647 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001648 {
1649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001650 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001651 /* fall through and try to finish closing via the FSM */
1652 }
1653
1654 /*------------------------------------------------------------------------
1655 Fill in Event data and post to the Main FSM
1656 ------------------------------------------------------------------------*/
1657 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001658 wdiEventData.pEventData = NULL;
1659 wdiEventData.uEventDataSize = 0;
1660 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 wdiEventData.pUserData = NULL;
1662
1663 gWDIInitialized = eWLAN_PAL_FALSE;
1664
1665 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1666
1667 /*Wait for WCTS to close the control transport
1668 (but only if we were able to reset the event flag*/
1669 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1670 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001671 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001672 WDI_WCTS_ACTION_TIMEOUT);
1673 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1674 {
1675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001676 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 }
1678 }
1679
1680 /* Destroy the WCTS action event */
1681 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1682 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1685 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001686 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 }
1688
1689 /* Destroy the Set Power State event */
1690 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1691 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1692 {
1693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1694 "WDI Close failed to destroy an event");
1695
Jeff Johnsone7245742012-09-05 17:12:55 -07001696 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001697 }
1698
1699 /*------------------------------------------------------------------------
1700 Closes the Data Path Utility Module
1701 ------------------------------------------------------------------------*/
1702 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1703 {
1704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1705 "WDI Init failed to close the DP Util Module");
1706
Jeff Johnsone7245742012-09-05 17:12:55 -07001707 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001708 }
1709
1710 /*destroy the BSS sessions pending Queue */
1711 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1712 {
1713 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1714 }
1715
1716 /* destroy the WDI Pending Assoc Id Request Queue*/
1717 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1718
1719 /* destroy the WDI Pending Request Queue*/
1720 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001721
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 /*destroy the response timer */
1723 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1724
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001725 /*destroy the SSR timer */
1726 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1727
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 /*invalidate the main synchro mutex */
1729 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1730 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1731 {
1732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1733 "Failed to delete mutex %d", wptStatus);
1734 WDI_ASSERT(0);
1735 }
1736
1737 /*Clear control block. note that this will clear the "magic"
1738 which will inhibit all asynchronous callbacks*/
1739 WDI_CleanCB(&gWDICb);
1740
1741 return wptStatus;
1742
1743}/*WDI_Close*/
1744
1745/**
1746 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1747 This will do most of the WDI stop & close
1748 operations without doing any handshake with Riva
1749
1750 This will also make sure that the control transport
1751 will NOT be closed.
1752
1753 This request will not be queued.
1754
1755
1756 WDI_Start must have been called.
1757
1758 @param closeTransport: Close control channel if this is set
1759
1760 @return Result of the function call
1761*/
1762WDI_Status
1763WDI_Shutdown
1764(
1765 wpt_boolean closeTransport
1766)
1767{
1768 WDI_EventInfoType wdiEventData;
1769 wpt_status wptStatus;
1770 int i = 0;
1771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1772
1773 /*------------------------------------------------------------------------
1774 Sanity Check
1775 ------------------------------------------------------------------------*/
1776 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1777 {
1778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1779 "WDI API call before module is initialized - Fail request");
1780
1781 return WDI_STATUS_E_NOT_ALLOWED;
1782 }
1783
1784 /*------------------------------------------------------------------------
1785 Fill in Event data and post to the Main FSM
1786 ------------------------------------------------------------------------*/
1787 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1788 wdiEventData.pEventData = NULL;
1789 wdiEventData.uEventDataSize = 0;
1790
1791 /* Shutdown will not be queued, if the state is busy timer will be
1792 * stopped & this message will be processed.*/
1793 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1794 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1795 {
1796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001797 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 }
1799 /* Destroy the Set Power State event */
1800 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1801 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1802 {
1803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1804 "WDI Close failed to destroy an event");
1805
1806 WDI_ASSERT(0);
1807 }
1808 /*------------------------------------------------------------------------
1809 Closes the Data Path Utility Module
1810 ------------------------------------------------------------------------*/
1811 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1812 {
1813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1814 "WDI Init failed to close the DP Util Module");
1815
1816 WDI_ASSERT(0);
1817 }
1818 if ( closeTransport )
1819 {
1820 /* Close control transport, called from module unload */
1821 WCTS_CloseTransport(gWDICb.wctsHandle);
1822 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001823 else
1824 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001825 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001826 the pending messages in the transport queue */
1827 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1828 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001829 /*destroy the BSS sessions pending Queue */
1830 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1831 {
1832 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1833 }
1834
1835 /* destroy the WDI Pending Assoc Id Request Queue*/
1836 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1837 /* destroy the WDI Pending Request Queue*/
1838 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1839 /*destroy the response timer */
1840 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001841 /*destroy the SSR timer */
1842 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001843
1844 /*invalidate the main synchro mutex */
1845 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1846 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1847 {
1848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001849 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 WDI_ASSERT(0);
1851 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001852 /* Free the global variables */
1853 wpalMemoryFree(gpHostWlanFeatCaps);
1854 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001855 gpHostWlanFeatCaps = NULL;
1856 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001857 /*Clear control block. note that this will clear the "magic"
1858 which will inhibit all asynchronous callbacks*/
1859 WDI_CleanCB(&gWDICb);
1860 return wptStatus;
1861
1862}/*WDI_Shutdown*/
1863
1864
Jeff Johnsone7245742012-09-05 17:12:55 -07001865/*========================================================================
1866
Jeff Johnson295189b2012-06-20 16:38:30 -07001867 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001868
Jeff Johnson295189b2012-06-20 16:38:30 -07001869==========================================================================*/
1870
1871/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 the WLAN Device to get ready for a scan procedure. Upon
1874 the call of this API the WLAN DAL will pack and send a
1875 HAL Init Scan request message to the lower RIVA
1876 sub-system if DAL is in state STARTED.
1877
1878 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001880
1881 WDI_Start must have been called.
1882
1883 @param wdiInitScanParams: the init scan parameters as specified
1884 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001885
Jeff Johnson295189b2012-06-20 16:38:30 -07001886 wdiInitScanRspCb: callback for passing back the response
1887 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001888
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001890 callback
1891
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 @see WDI_Start
1893 @return Result of the function call
1894*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001895WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001896WDI_InitScanReq
1897(
1898 WDI_InitScanReqParamsType* pwdiInitScanParams,
1899 WDI_InitScanRspCb wdiInitScanRspCb,
1900 void* pUserData
1901)
1902{
1903 WDI_EventInfoType wdiEventData;
1904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1905
1906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 ------------------------------------------------------------------------*/
1909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1910 {
1911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1912 "WDI API call before module is initialized - Fail request");
1913
Jeff Johnsone7245742012-09-05 17:12:55 -07001914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 }
1916
1917 /*------------------------------------------------------------------------
1918 Fill in Event data and post to the Main FSM
1919 ------------------------------------------------------------------------*/
1920 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001921 wdiEventData.pEventData = pwdiInitScanParams;
1922 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1923 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001924 wdiEventData.pUserData = pUserData;
1925
1926 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1927
1928}/*WDI_InitScanReq*/
1929
1930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001931 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001932 wishes to change the Scan channel on the WLAN Device.
1933 Upon the call of this API the WLAN DAL will pack and
1934 send a HAL Start Scan request message to the lower RIVA
1935 sub-system if DAL is in state STARTED.
1936
1937 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001938 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001939
1940 WDI_InitScanReq must have been called.
1941
Jeff Johnsone7245742012-09-05 17:12:55 -07001942 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 wdiStartScanRspCb: callback for passing back the
1946 response of the start scan operation received from the
1947 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001948
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001950 callback
1951
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 @see WDI_InitScanReq
1953 @return Result of the function call
1954*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001955WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001956WDI_StartScanReq
1957(
1958 WDI_StartScanReqParamsType* pwdiStartScanParams,
1959 WDI_StartScanRspCb wdiStartScanRspCb,
1960 void* pUserData
1961)
1962{
1963 WDI_EventInfoType wdiEventData;
1964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1965
1966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 ------------------------------------------------------------------------*/
1969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1970 {
1971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1972 "WDI API call before module is initialized - Fail request");
1973
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 }
1976
1977 /*------------------------------------------------------------------------
1978 Fill in Event data and post to the Main FSM
1979 ------------------------------------------------------------------------*/
1980 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 wdiEventData.pEventData = pwdiStartScanParams;
1982 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1983 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 wdiEventData.pUserData = pUserData;
1985
1986 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1987
1988}/*WDI_StartScanReq*/
1989
1990
1991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 wants to end scanning for a particular channel that it
1994 had set before by calling Scan Start on the WLAN Device.
1995 Upon the call of this API the WLAN DAL will pack and
1996 send a HAL End Scan request message to the lower RIVA
1997 sub-system if DAL is in state STARTED.
1998
1999 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002001
2002 WDI_StartScanReq must have been called.
2003
Jeff Johnsone7245742012-09-05 17:12:55 -07002004 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002005 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002006
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 wdiEndScanRspCb: callback for passing back the response
2008 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002009
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002011 callback
2012
Jeff Johnson295189b2012-06-20 16:38:30 -07002013 @see WDI_StartScanReq
2014 @return Result of the function call
2015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002017WDI_EndScanReq
2018(
2019 WDI_EndScanReqParamsType* pwdiEndScanParams,
2020 WDI_EndScanRspCb wdiEndScanRspCb,
2021 void* pUserData
2022)
2023{
2024 WDI_EventInfoType wdiEventData;
2025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2026
2027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 ------------------------------------------------------------------------*/
2030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2031 {
2032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2033 "WDI API call before module is initialized - Fail request");
2034
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002036 }
2037
2038 /*------------------------------------------------------------------------
2039 Fill in Event data and post to the Main FSM
2040 ------------------------------------------------------------------------*/
2041 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002042 wdiEventData.pEventData = pwdiEndScanParams;
2043 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2044 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002045 wdiEventData.pUserData = pUserData;
2046
2047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2048
2049}/*WDI_EndScanReq*/
2050
2051
2052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 completed the scan process on the WLAN Device. Upon the
2055 call of this API the WLAN DAL will pack and send a HAL
2056 Finish Scan Request request message to the lower RIVA
2057 sub-system if DAL is in state STARTED.
2058
2059 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002060 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002061
2062 WDI_InitScanReq must have been called.
2063
Jeff Johnsone7245742012-09-05 17:12:55 -07002064 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002066
Jeff Johnson295189b2012-06-20 16:38:30 -07002067 wdiFinishScanRspCb: callback for passing back the
2068 response of the finish scan operation received from the
2069 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002070
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 callback
2073
Jeff Johnson295189b2012-06-20 16:38:30 -07002074 @see WDI_InitScanReq
2075 @return Result of the function call
2076*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002077WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002078WDI_FinishScanReq
2079(
2080 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2081 WDI_FinishScanRspCb wdiFinishScanRspCb,
2082 void* pUserData
2083)
2084{
2085 WDI_EventInfoType wdiEventData;
2086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2087
2088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002090 ------------------------------------------------------------------------*/
2091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2092 {
2093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2094 "WDI API call before module is initialized - Fail request");
2095
Jeff Johnsone7245742012-09-05 17:12:55 -07002096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002097 }
2098
2099 /*------------------------------------------------------------------------
2100 Fill in Event data and post to the Main FSM
2101 ------------------------------------------------------------------------*/
2102 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 wdiEventData.pEventData = pwdiFinishScanParams;
2104 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2105 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 wdiEventData.pUserData = pUserData;
2107
2108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2109
2110}/*WDI_FinishScanReq*/
2111
Jeff Johnsone7245742012-09-05 17:12:55 -07002112/*========================================================================
2113
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116==========================================================================*/
2117
2118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002119 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002120 to start an association procedure to a BSS. Upon the
2121 call of this API the WLAN DAL will pack and send a HAL
2122 Join request message to the lower RIVA sub-system if
2123 DAL is in state STARTED.
2124
2125 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002126 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002127
2128 WDI_Start must have been called.
2129
Jeff Johnsone7245742012-09-05 17:12:55 -07002130 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002131 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002132
Jeff Johnson295189b2012-06-20 16:38:30 -07002133 wdiJoinRspCb: callback for passing back the response of
2134 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002135
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 callback
2138
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 @see WDI_Start
2140 @return Result of the function call
2141*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002142WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002143WDI_JoinReq
2144(
2145 WDI_JoinReqParamsType* pwdiJoinParams,
2146 WDI_JoinRspCb wdiJoinRspCb,
2147 void* pUserData
2148)
2149{
2150 WDI_EventInfoType wdiEventData;
2151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2152
2153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 ------------------------------------------------------------------------*/
2156 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2157 {
2158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2159 "WDI API call before module is initialized - Fail request");
2160
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 }
2163
2164 /*------------------------------------------------------------------------
2165 Fill in Event data and post to the Main FSM
2166 ------------------------------------------------------------------------*/
2167 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 wdiEventData.pEventData = pwdiJoinParams;
2169 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2170 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 wdiEventData.pUserData = pUserData;
2172
2173 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2174
2175}/*WDI_JoinReq*/
2176
2177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 wishes to configure the newly acquired or in process of
2180 being acquired BSS to the HW . Upon the call of this API
2181 the WLAN DAL will pack and send a HAL Config BSS request
2182 message to the lower RIVA sub-system if DAL is in state
2183 STARTED.
2184
2185 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002187
2188 WDI_JoinReq must have been called.
2189
Jeff Johnsone7245742012-09-05 17:12:55 -07002190 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002191 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002192
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 wdiConfigBSSRspCb: callback for passing back the
2194 response of the config BSS operation received from the
2195 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002196
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002198 callback
2199
Jeff Johnson295189b2012-06-20 16:38:30 -07002200 @see WDI_JoinReq
2201 @return Result of the function call
2202*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002203WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002204WDI_ConfigBSSReq
2205(
2206 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2207 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2208 void* pUserData
2209)
2210{
2211 WDI_EventInfoType wdiEventData;
2212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2213
2214 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 ------------------------------------------------------------------------*/
2217 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2218 {
2219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2220 "WDI API call before module is initialized - Fail request");
2221
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 }
2224
2225 /*------------------------------------------------------------------------
2226 Fill in Event data and post to the Main FSM
2227 ------------------------------------------------------------------------*/
2228 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 wdiEventData.pEventData = pwdiConfigBSSParams;
2230 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2231 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 wdiEventData.pUserData = pUserData;
2233
2234 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2235
2236}/*WDI_ConfigBSSReq*/
2237
2238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 disassociating from the BSS and wishes to notify HW.
2241 Upon the call of this API the WLAN DAL will pack and
2242 send a HAL Del BSS request message to the lower RIVA
2243 sub-system if DAL is in state STARTED.
2244
2245 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002247
2248 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2249
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002252
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 wdiDelBSSRspCb: callback for passing back the response
2254 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002255
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 callback
2258
2259 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002260 @return Result of the function call
2261*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002263WDI_DelBSSReq
2264(
2265 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2266 WDI_DelBSSRspCb wdiDelBSSRspCb,
2267 void* pUserData
2268)
2269{
2270 WDI_EventInfoType wdiEventData;
2271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2272
2273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 ------------------------------------------------------------------------*/
2276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2277 {
2278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2279 "WDI API call before module is initialized - Fail request");
2280
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 }
2283
2284 /*------------------------------------------------------------------------
2285 Fill in Event data and post to the Main FSM
2286 ------------------------------------------------------------------------*/
2287 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 wdiEventData.pEventData = pwdiDelBSSParams;
2289 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2290 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 wdiEventData.pUserData = pUserData;
2292
2293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2294
2295}/*WDI_DelBSSReq*/
2296
2297/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 associated to a BSS and wishes to configure HW for
2300 associated state. Upon the call of this API the WLAN DAL
2301 will pack and send a HAL Post Assoc request message to
2302 the lower RIVA sub-system if DAL is in state STARTED.
2303
2304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002306
2307 WDI_JoinReq must have been called.
2308
2309 @param wdiPostAssocReqParams: the assoc parameters as specified
2310 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002311
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 wdiPostAssocRspCb: callback for passing back the
2313 response of the post assoc operation received from the
2314 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002315
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002317 callback
2318
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 @see WDI_JoinReq
2320 @return Result of the function call
2321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002323WDI_PostAssocReq
2324(
2325 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2326 WDI_PostAssocRspCb wdiPostAssocRspCb,
2327 void* pUserData
2328)
2329{
2330 WDI_EventInfoType wdiEventData;
2331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2332
2333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 ------------------------------------------------------------------------*/
2336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2337 {
2338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2339 "WDI API call before module is initialized - Fail request");
2340
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 }
2343
2344 /*------------------------------------------------------------------------
2345 Fill in Event data and post to the Main FSM
2346 ------------------------------------------------------------------------*/
2347 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 wdiEventData.pEventData = pwdiPostAssocReqParams;
2349 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2350 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 wdiEventData.pUserData = pUserData;
2352
2353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2354
2355}/*WDI_PostAssocReq*/
2356
2357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 association with another STA has ended and the station
2360 must be deleted from HW. Upon the call of this API the
2361 WLAN DAL will pack and send a HAL Del STA request
2362 message to the lower RIVA sub-system if DAL is in state
2363 STARTED.
2364
2365 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002367
2368 WDI_PostAssocReq must have been called.
2369
Jeff Johnsone7245742012-09-05 17:12:55 -07002370 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002371 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 wdiDelSTARspCb: callback for passing back the response
2374 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002375
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002377 callback
2378
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 @see WDI_PostAssocReq
2380 @return Result of the function call
2381*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002382WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002383WDI_DelSTAReq
2384(
2385 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2386 WDI_DelSTARspCb wdiDelSTARspCb,
2387 void* pUserData
2388)
2389{
2390 WDI_EventInfoType wdiEventData;
2391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2392
2393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 ------------------------------------------------------------------------*/
2396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2397 {
2398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2399 "WDI API call before module is initialized - Fail request");
2400
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 }
2403
2404 /*------------------------------------------------------------------------
2405 Fill in Event data and post to the Main FSM
2406 ------------------------------------------------------------------------*/
2407 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 wdiEventData.pEventData = pwdiDelSTAParams;
2409 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2410 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 wdiEventData.pUserData = pUserData;
2412
2413 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2414
2415}/*WDI_DelSTAReq*/
2416
Jeff Johnsone7245742012-09-05 17:12:55 -07002417/*========================================================================
2418
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002420
Jeff Johnson295189b2012-06-20 16:38:30 -07002421==========================================================================*/
2422
2423/**
2424 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2425 install a BSS encryption key on the HW. Upon the call of this
2426 API the WLAN DAL will pack and send a Set BSS Key request
2427 message to the lower RIVA sub-system if DAL is in state
2428 STARTED.
2429
2430 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002431 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002432
2433 WDI_PostAssocReq must have been called.
2434
Jeff Johnsone7245742012-09-05 17:12:55 -07002435 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002436 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002437
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 wdiSetBSSKeyRspCb: callback for passing back the
2439 response of the set BSS Key operation received from the
2440 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002441
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 callback
2444
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 @see WDI_PostAssocReq
2446 @return Result of the function call
2447*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002448WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002449WDI_SetBSSKeyReq
2450(
2451 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2452 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2453 void* pUserData
2454)
2455{
2456 WDI_EventInfoType wdiEventData;
2457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2458
2459 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002460 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 ------------------------------------------------------------------------*/
2462 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2463 {
2464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2465 "WDI API call before module is initialized - Fail request");
2466
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 }
2469
2470 /*------------------------------------------------------------------------
2471 Fill in Event data and post to the Main FSM
2472 ------------------------------------------------------------------------*/
2473 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002474 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2475 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2476 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 wdiEventData.pUserData = pUserData;
2478
2479 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2480
2481}/*WDI_SetBSSKeyReq*/
2482
2483/**
2484 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2485 uninstall a BSS key from HW. Upon the call of this API the
2486 WLAN DAL will pack and send a HAL Remove BSS Key request
2487 message to the lower RIVA sub-system if DAL is in state
2488 STARTED.
2489
2490 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002491 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002492
2493 WDI_SetBSSKeyReq must have been called.
2494
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002497
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 wdiRemoveBSSKeyRspCb: callback for passing back the
2499 response of the remove BSS key operation received from
2500 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002501
Jeff Johnson295189b2012-06-20 16:38:30 -07002502 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002503 callback
2504
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 @see WDI_SetBSSKeyReq
2506 @return Result of the function call
2507*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002508WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002509WDI_RemoveBSSKeyReq
2510(
2511 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2512 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2513 void* pUserData
2514)
2515{
2516 WDI_EventInfoType wdiEventData;
2517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2518
2519 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 ------------------------------------------------------------------------*/
2522 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2523 {
2524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2525 "WDI API call before module is initialized - Fail request");
2526
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002528 }
2529
2530 /*------------------------------------------------------------------------
2531 Fill in Event data and post to the Main FSM
2532 ------------------------------------------------------------------------*/
2533 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002534 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2535 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2536 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 wdiEventData.pUserData = pUserData;
2538
2539 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2540
2541}/*WDI_RemoveBSSKeyReq*/
2542
2543
2544/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 ready to install a STA(ast) encryption key in HW. Upon
2547 the call of this API the WLAN DAL will pack and send a
2548 HAL Set STA Key request message to the lower RIVA
2549 sub-system if DAL is in state STARTED.
2550
2551 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002553
2554 WDI_PostAssocReq must have been called.
2555
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002558
Jeff Johnson295189b2012-06-20 16:38:30 -07002559 wdiSetSTAKeyRspCb: callback for passing back the
2560 response of the set STA key operation received from the
2561 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002562
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002564 callback
2565
Jeff Johnson295189b2012-06-20 16:38:30 -07002566 @see WDI_PostAssocReq
2567 @return Result of the function call
2568*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002569WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002570WDI_SetSTAKeyReq
2571(
2572 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2573 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2574 void* pUserData
2575)
2576{
2577 WDI_EventInfoType wdiEventData;
2578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2579
2580 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 ------------------------------------------------------------------------*/
2583 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2584 {
2585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2586 "WDI API call before module is initialized - Fail request");
2587
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002589 }
2590
2591 /*------------------------------------------------------------------------
2592 Fill in Event data and post to the Main FSM
2593 ------------------------------------------------------------------------*/
2594 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2596 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2597 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 wdiEventData.pUserData = pUserData;
2599
2600 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2601
2602}/*WDI_SetSTAKeyReq*/
2603
2604
2605/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 wants to uninstall a previously set STA key in HW. Upon
2608 the call of this API the WLAN DAL will pack and send a
2609 HAL Remove STA Key request message to the lower RIVA
2610 sub-system if DAL is in state STARTED.
2611
2612 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002614
2615 WDI_SetSTAKeyReq must have been called.
2616
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002619
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 wdiRemoveSTAKeyRspCb: callback for passing back the
2621 response of the remove STA key operation received from
2622 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002623
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 callback
2626
Jeff Johnson295189b2012-06-20 16:38:30 -07002627 @see WDI_SetSTAKeyReq
2628 @return Result of the function call
2629*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002630WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002631WDI_RemoveSTAKeyReq
2632(
2633 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2634 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2635 void* pUserData
2636)
2637{
2638 WDI_EventInfoType wdiEventData;
2639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2640
2641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 ------------------------------------------------------------------------*/
2644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2645 {
2646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2647 "WDI API call before module is initialized - Fail request");
2648
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 }
2651
2652 /*------------------------------------------------------------------------
2653 Fill in Event data and post to the Main FSM
2654 ------------------------------------------------------------------------*/
2655 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002656 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2657 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2658 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 wdiEventData.pUserData = pUserData;
2660
2661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2662
2663}/*WDI_RemoveSTAKeyReq*/
2664
2665
2666/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 wants to install a STA Bcast encryption key on the HW.
2669 Upon the call of this API the WLAN DAL will pack and
2670 send a HAL Start request message to the lower RIVA
2671 sub-system if DAL is in state STARTED.
2672
2673 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002675
2676 WDI_PostAssocReq must have been called.
2677
Jeff Johnsone7245742012-09-05 17:12:55 -07002678 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002680
Jeff Johnson295189b2012-06-20 16:38:30 -07002681 wdiSetSTABcastKeyRspCb: callback for passing back the
2682 response of the set BSS Key operation received from the
2683 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002684
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 callback
2687
Jeff Johnson295189b2012-06-20 16:38:30 -07002688 @see WDI_PostAssocReq
2689 @return Result of the function call
2690*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002691WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002692WDI_SetSTABcastKeyReq
2693(
2694 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2695 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2696 void* pUserData
2697)
2698
2699{
2700 WDI_EventInfoType wdiEventData;
2701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2702
2703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002705 ------------------------------------------------------------------------*/
2706 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2707 {
2708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2709 "WDI API call before module is initialized - Fail request");
2710
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 }
2713
2714 /*------------------------------------------------------------------------
2715 Fill in Event data and post to the Main FSM
2716 ------------------------------------------------------------------------*/
2717 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2719 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2720 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 wdiEventData.pUserData = pUserData;
2722
2723 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2724
2725}/*WDI_SetSTABcastKeyReq*/
2726
2727/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 MAC wants to uninstall a STA Bcast key from HW. Upon the
2730 call of this API the WLAN DAL will pack and send a HAL
2731 Remove STA Bcast Key request message to the lower RIVA
2732 sub-system if DAL is in state STARTED.
2733
2734 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002736
2737 WDI_SetSTABcastKeyReq must have been called.
2738
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 parameters as specified by the Device
2741 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002742
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2744 response of the remove STA Bcast key operation received
2745 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002746
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002748 callback
2749
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 @see WDI_SetSTABcastKeyReq
2751 @return Result of the function call
2752*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002753WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002754WDI_RemoveSTABcastKeyReq
2755(
2756 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2757 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2758 void* pUserData
2759)
2760{
2761 WDI_EventInfoType wdiEventData;
2762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2763
2764 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002765 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 ------------------------------------------------------------------------*/
2767 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2768 {
2769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2770 "WDI API call before module is initialized - Fail request");
2771
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 }
2774
2775 /*------------------------------------------------------------------------
2776 Fill in Event data and post to the Main FSM
2777 ------------------------------------------------------------------------*/
2778 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2780 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2781 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 wdiEventData.pUserData = pUserData;
2783
2784 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2785
2786}/*WDI_RemoveSTABcastKeyReq*/
2787
2788/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002789 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 MAC wants to set Max Tx Power to HW. Upon the
2791 call of this API the WLAN DAL will pack and send a HAL
2792 Remove STA Bcast Key request message to the lower RIVA
2793 sub-system if DAL is in state STARTED.
2794
2795 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002796 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002797
2798 WDI_SetSTABcastKeyReq must have been called.
2799
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 parameters as specified by the Device
2802 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002803
Jeff Johnson295189b2012-06-20 16:38:30 -07002804 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2805 response of the remove STA Bcast key operation received
2806 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002807
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 callback
2810
Jeff Johnson295189b2012-06-20 16:38:30 -07002811 @see WDI_SetMaxTxPowerReq
2812 @return Result of the function call
2813*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002814WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002815WDI_SetMaxTxPowerReq
2816(
2817 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2818 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2819 void* pUserData
2820)
2821{
2822 WDI_EventInfoType wdiEventData;
2823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2824
2825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002826 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 ------------------------------------------------------------------------*/
2828 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2829 {
2830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2831 "WDI API call before module is initialized - Fail request");
2832
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 }
2835
2836 /*------------------------------------------------------------------------
2837 Fill in Event data and post to the Main FSM
2838 ------------------------------------------------------------------------*/
2839 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2841 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2842 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 wdiEventData.pUserData = pUserData;
2844
2845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2846}
2847
schangd82195a2013-03-13 18:41:24 -07002848/**
2849 @brief WDI_SetTxPowerReq will be called when the upper
2850 MAC wants to set Tx Power to HW.
2851 In state BUSY this request will be queued. Request won't
2852 be allowed in any other state.
2853
2854
2855 @param pwdiSetTxPowerParams: set TS Power parameters
2856 BSSID and target TX Power with dbm included
2857
2858 wdiReqStatusCb: callback for passing back the response
2859
2860 pUserData: user data will be passed back with the
2861 callback
2862
2863 @return Result of the function call
2864*/
2865WDI_Status
2866WDI_SetTxPowerReq
2867(
2868 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2869 WDA_SetTxPowerRspCb wdiReqStatusCb,
2870 void* pUserData
2871)
2872{
2873 WDI_EventInfoType wdiEventData;
2874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2875
2876 /*------------------------------------------------------------------------
2877 Sanity Check
2878 ------------------------------------------------------------------------*/
2879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2880 {
2881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2882 "WDI API call before module is initialized - Fail request");
2883
2884 return WDI_STATUS_E_NOT_ALLOWED;
2885 }
2886
2887 /*------------------------------------------------------------------------
2888 Fill in Event data and post to the Main FSM
2889 ------------------------------------------------------------------------*/
2890 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2891 wdiEventData.pEventData = pwdiSetTxPowerParams;
2892 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2893 wdiEventData.pCBfnc = wdiReqStatusCb;
2894 wdiEventData.pUserData = pUserData;
2895
2896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2897}
2898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899#ifdef FEATURE_WLAN_CCX
2900WDI_Status
2901WDI_TSMStatsReq
2902(
2903 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2904 WDI_TsmRspCb wdiReqStatusCb,
2905 void* pUserData
2906)
2907{
2908 WDI_EventInfoType wdiEventData;
2909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002910 /*------------------------------------------------------------------------
2911 Sanity Check
2912 ------------------------------------------------------------------------*/
2913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2914 {
2915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2916 "WDI API call before module is initialized - Fail request");
2917
2918 return WDI_STATUS_E_NOT_ALLOWED;
2919 }
2920
2921 /*------------------------------------------------------------------------
2922 Fill in Event data and post to the Main FSM
2923 ------------------------------------------------------------------------*/
2924 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2925 wdiEventData.pEventData = pwdiTsmReqParams;
2926 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2927 wdiEventData.pCBfnc = wdiReqStatusCb;
2928 wdiEventData.pUserData = pUserData;
2929
2930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2931
2932}
2933#endif
2934
2935/*========================================================================
2936
2937 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002938
Jeff Johnson295189b2012-06-20 16:38:30 -07002939==========================================================================*/
2940
2941/**
2942 @brief WDI_AddTSReq will be called when the upper MAC to inform
2943 the device of a successful add TSpec negotiation. HW
2944 needs to receive the TSpec Info from the UMAC in order
2945 to configure properly the QoS data traffic. Upon the
2946 call of this API the WLAN DAL will pack and send a HAL
2947 Add TS request message to the lower RIVA sub-system if
2948 DAL is in state STARTED.
2949
2950 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002951 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002952
2953 WDI_PostAssocReq must have been called.
2954
2955 @param wdiAddTsReqParams: the add TS parameters as specified by
2956 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002957
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 wdiAddTsRspCb: callback for passing back the response of
2959 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002960
Jeff Johnson295189b2012-06-20 16:38:30 -07002961 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 callback
2963
Jeff Johnson295189b2012-06-20 16:38:30 -07002964 @see WDI_PostAssocReq
2965 @return Result of the function call
2966*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002968WDI_AddTSReq
2969(
2970 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2971 WDI_AddTsRspCb wdiAddTsRspCb,
2972 void* pUserData
2973)
2974{
2975 WDI_EventInfoType wdiEventData;
2976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2977
2978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 ------------------------------------------------------------------------*/
2981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2982 {
2983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2984 "WDI API call before module is initialized - Fail request");
2985
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 }
2988
2989 /*------------------------------------------------------------------------
2990 Fill in Event data and post to the Main FSM
2991 ------------------------------------------------------------------------*/
2992 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 wdiEventData.pEventData = pwdiAddTsReqParams;
2994 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2995 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 wdiEventData.pUserData = pUserData;
2997
2998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2999
3000}/*WDI_AddTSReq*/
3001
3002
3003
3004/**
3005 @brief WDI_DelTSReq will be called when the upper MAC has ended
3006 admission on a specific AC. This is to inform HW that
3007 QoS traffic parameters must be rest. Upon the call of
3008 this API the WLAN DAL will pack and send a HAL Del TS
3009 request message to the lower RIVA sub-system if DAL is
3010 in state STARTED.
3011
3012 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003013 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003014
3015 WDI_AddTSReq must have been called.
3016
3017 @param wdiDelTsReqParams: the del TS parameters as specified by
3018 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003019
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 wdiDelTsRspCb: callback for passing back the response of
3021 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003022
Jeff Johnson295189b2012-06-20 16:38:30 -07003023 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003024 callback
3025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 @see WDI_AddTSReq
3027 @return Result of the function call
3028*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003030WDI_DelTSReq
3031(
3032 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3033 WDI_DelTsRspCb wdiDelTsRspCb,
3034 void* pUserData
3035)
3036{
3037 WDI_EventInfoType wdiEventData;
3038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3039
3040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 ------------------------------------------------------------------------*/
3043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3044 {
3045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3046 "WDI API call before module is initialized - Fail request");
3047
Jeff Johnsone7245742012-09-05 17:12:55 -07003048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003049 }
3050
3051 /*------------------------------------------------------------------------
3052 Fill in Event data and post to the Main FSM
3053 ------------------------------------------------------------------------*/
3054 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003055 wdiEventData.pEventData = pwdiDelTsReqParams;
3056 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3057 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 wdiEventData.pUserData = pUserData;
3059
3060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3061
3062}/*WDI_DelTSReq*/
3063
3064
3065
3066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003067 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003068 wishes to update the EDCA parameters used by HW for QoS
3069 data traffic. Upon the call of this API the WLAN DAL
3070 will pack and send a HAL Update EDCA Params request
3071 message to the lower RIVA sub-system if DAL is in state
3072 STARTED.
3073
3074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003076
3077 WDI_PostAssocReq must have been called.
3078
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 wdiUpdateEDCAParamsRspCb: callback for passing back the
3083 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 callback
3087
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 @see WDI_PostAssocReq
3089 @return Result of the function call
3090*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003091WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003092WDI_UpdateEDCAParams
3093(
3094 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3095 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3096 void* pUserData
3097)
3098{
3099 WDI_EventInfoType wdiEventData;
3100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3101
3102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 ------------------------------------------------------------------------*/
3105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3106 {
3107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3108 "WDI API call before module is initialized - Fail request");
3109
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 }
3112
3113 /*------------------------------------------------------------------------
3114 Fill in Event data and post to the Main FSM
3115 ------------------------------------------------------------------------*/
3116 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003117 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3118 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3119 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 wdiEventData.pUserData = pUserData;
3121
3122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3123
3124}/*WDI_UpdateEDCAParams*/
3125
3126
3127/**
3128 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3129 successfully a BA session and needs to notify the HW for
3130 the appropriate settings to take place. Upon the call of
3131 this API the WLAN DAL will pack and send a HAL Add BA
3132 request message to the lower RIVA sub-system if DAL is
3133 in state STARTED.
3134
3135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003137
3138 WDI_PostAssocReq must have been called.
3139
3140 @param wdiAddBAReqParams: the add BA parameters as specified by
3141 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003142
Jeff Johnson295189b2012-06-20 16:38:30 -07003143 wdiAddBARspCb: callback for passing back the response of
3144 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003145
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 callback
3148
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 @see WDI_PostAssocReq
3150 @return Result of the function call
3151*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003153WDI_AddBASessionReq
3154(
3155 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3156 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3157 void* pUserData
3158)
3159{
3160 WDI_EventInfoType wdiEventData;
3161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3162
3163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 ------------------------------------------------------------------------*/
3166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3167 {
3168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3169 "WDI API call before module is initialized - Fail request");
3170
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 }
3173
3174 /*------------------------------------------------------------------------
3175 Fill in Event data and post to the Main FSM
3176 ------------------------------------------------------------------------*/
3177 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3179 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3180 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 wdiEventData.pUserData = pUserData;
3182
3183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3184
3185}/*WDI_AddBASessionReq*/
3186
3187/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 inform HW that it has deleted a previously created BA
3190 session. Upon the call of this API the WLAN DAL will
3191 pack and send a HAL Del BA request message to the lower
3192 RIVA sub-system if DAL is in state STARTED.
3193
3194 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003196
3197 WDI_AddBAReq must have been called.
3198
3199 @param wdiDelBAReqParams: the del BA parameters as specified by
3200 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003201
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 wdiDelBARspCb: callback for passing back the response of
3203 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 callback
3207
Jeff Johnson295189b2012-06-20 16:38:30 -07003208 @see WDI_AddBAReq
3209 @return Result of the function call
3210*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003211WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003212WDI_DelBAReq
3213(
3214 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3215 WDI_DelBARspCb wdiDelBARspCb,
3216 void* pUserData
3217)
3218{
3219 WDI_EventInfoType wdiEventData;
3220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3221
3222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 ------------------------------------------------------------------------*/
3225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3226 {
3227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3228 "WDI API call before module is initialized - Fail request");
3229
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 }
3232
3233 /*------------------------------------------------------------------------
3234 Fill in Event data and post to the Main FSM
3235 ------------------------------------------------------------------------*/
3236 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003237 wdiEventData.pEventData = pwdiDelBAReqParams;
3238 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3239 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 wdiEventData.pUserData = pUserData;
3241
3242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3243
3244}/*WDI_DelBAReq*/
3245
Jeff Johnsone7245742012-09-05 17:12:55 -07003246/*========================================================================
3247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003249
Jeff Johnson295189b2012-06-20 16:38:30 -07003250==========================================================================*/
3251
3252/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003253 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003254 wants to set the power save related configurations of
3255 the WLAN Device. Upon the call of this API the WLAN DAL
3256 will pack and send a HAL Update CFG request message to
3257 the lower RIVA sub-system if DAL is in state STARTED.
3258
3259 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003260 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003261
3262 WDI_Start must have been called.
3263
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003266
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 wdiSetPwrSaveCfgCb: callback for passing back the
3268 response of the set power save cfg operation received
3269 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003270
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003272 callback
3273
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003275 @return Result of the function call
3276*/
3277WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003278WDI_SetPwrSaveCfgReq
3279(
3280 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3281 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3282 void* pUserData
3283)
3284{
3285 WDI_EventInfoType wdiEventData;
3286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3287
3288 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 ------------------------------------------------------------------------*/
3291 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3292 {
3293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3294 "WDI API call before module is initialized - Fail request");
3295
Jeff Johnsone7245742012-09-05 17:12:55 -07003296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 }
3298
3299 /*------------------------------------------------------------------------
3300 Fill in Event data and post to the Main FSM
3301 ------------------------------------------------------------------------*/
3302 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003303 wdiEventData.pEventData = pwdiPowerSaveCfg;
3304 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3305 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 wdiEventData.pUserData = pUserData;
3307
3308 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3309
3310}/*WDI_SetPwrSaveCfgReq*/
3311
3312/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 request the device to get into IMPS power state. Upon
3315 the call of this API the WLAN DAL will send a HAL Enter
3316 IMPS request message to the lower RIVA sub-system if DAL
3317 is in state STARTED.
3318
3319 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003320 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003321
Jeff Johnsone7245742012-09-05 17:12:55 -07003322
3323 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 response of the Enter IMPS operation received from the
3325 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003326
Jeff Johnson295189b2012-06-20 16:38:30 -07003327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 callback
3329
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 @see WDI_Start
3331 @return Result of the function call
3332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003334WDI_EnterImpsReq
3335(
3336 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3337 void* pUserData
3338)
3339{
3340 WDI_EventInfoType wdiEventData;
3341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3342
3343 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 ------------------------------------------------------------------------*/
3346 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3347 {
3348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3349 "WDI API call before module is initialized - Fail request");
3350
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 }
3353
3354 /*------------------------------------------------------------------------
3355 Fill in Event data and post to the Main FSM
3356 ------------------------------------------------------------------------*/
3357 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003358 wdiEventData.pEventData = NULL;
3359 wdiEventData.uEventDataSize = 0;
3360 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 wdiEventData.pUserData = pUserData;
3362
3363 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3364
3365}/*WDI_EnterImpsReq*/
3366
3367/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 request the device to get out of IMPS power state. Upon
3370 the call of this API the WLAN DAL will send a HAL Exit
3371 IMPS request message to the lower RIVA sub-system if DAL
3372 is in state STARTED.
3373
3374 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003376
Jeff Johnson295189b2012-06-20 16:38:30 -07003377
Jeff Johnsone7245742012-09-05 17:12:55 -07003378
3379 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003380 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003381
Jeff Johnson295189b2012-06-20 16:38:30 -07003382 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 callback
3384
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 @see WDI_Start
3386 @return Result of the function call
3387*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003388WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003389WDI_ExitImpsReq
3390(
3391 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3392 void* pUserData
3393)
3394{
3395 WDI_EventInfoType wdiEventData;
3396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3397
3398 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 ------------------------------------------------------------------------*/
3401 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3402 {
3403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3404 "WDI API call before module is initialized - Fail request");
3405
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 }
3408
3409 /*------------------------------------------------------------------------
3410 Fill in Event data and post to the Main FSM
3411 ------------------------------------------------------------------------*/
3412 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003413 wdiEventData.pEventData = NULL;
3414 wdiEventData.uEventDataSize = 0;
3415 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 wdiEventData.pUserData = pUserData;
3417
3418 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3419
3420}/*WDI_ExitImpsReq*/
3421
3422/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 request the device to get into BMPS power state. Upon
3425 the call of this API the WLAN DAL will pack and send a
3426 HAL Enter BMPS request message to the lower RIVA
3427 sub-system if DAL is in state STARTED.
3428
3429 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003431
3432 WDI_PostAssocReq must have been called.
3433
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003436
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 wdiEnterBmpsRspCb: callback for passing back the
3438 response of the Enter BMPS operation received from the
3439 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003440
Jeff Johnson295189b2012-06-20 16:38:30 -07003441 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003442 callback
3443
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 @see WDI_PostAssocReq
3445 @return Result of the function call
3446*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003447WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003448WDI_EnterBmpsReq
3449(
3450 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3451 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3452 void* pUserData
3453)
3454{
3455 WDI_EventInfoType wdiEventData;
3456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3457
3458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003459 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 ------------------------------------------------------------------------*/
3461 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3462 {
3463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3464 "WDI API call before module is initialized - Fail request");
3465
Jeff Johnsone7245742012-09-05 17:12:55 -07003466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 }
3468
3469 /*------------------------------------------------------------------------
3470 Fill in Event data and post to the Main FSM
3471 ------------------------------------------------------------------------*/
3472 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3474 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3475 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 wdiEventData.pUserData = pUserData;
3477
3478 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3479
3480}/*WDI_EnterBmpsReq*/
3481
3482/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 request the device to get out of BMPS power state. Upon
3485 the call of this API the WLAN DAL will pack and send a
3486 HAL Exit BMPS request message to the lower RIVA
3487 sub-system if DAL is in state STARTED.
3488
3489 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003490 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003491
3492 WDI_PostAssocReq must have been called.
3493
Jeff Johnsone7245742012-09-05 17:12:55 -07003494 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003495 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003496
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 wdiExitBmpsRspCb: callback for passing back the response
3498 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003499
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003501 callback
3502
Jeff Johnson295189b2012-06-20 16:38:30 -07003503 @see WDI_PostAssocReq
3504 @return Result of the function call
3505*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003506WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003507WDI_ExitBmpsReq
3508(
3509 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3510 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3511 void* pUserData
3512)
3513{
3514 WDI_EventInfoType wdiEventData;
3515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3516
3517 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 ------------------------------------------------------------------------*/
3520 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3521 {
3522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3523 "WDI API call before module is initialized - Fail request");
3524
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 }
3527
3528 /*------------------------------------------------------------------------
3529 Fill in Event data and post to the Main FSM
3530 ------------------------------------------------------------------------*/
3531 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003532 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3533 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3534 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 wdiEventData.pUserData = pUserData;
3536
3537 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3538
3539}/*WDI_ExitBmpsReq*/
3540
3541/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003542 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 request the device to get into UAPSD power state. Upon
3544 the call of this API the WLAN DAL will pack and send a
3545 HAL Enter UAPSD request message to the lower RIVA
3546 sub-system if DAL is in state STARTED.
3547
3548 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003549 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003550
3551 WDI_PostAssocReq must have been called.
3552 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003553
3554 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003556
Jeff Johnson295189b2012-06-20 16:38:30 -07003557 wdiEnterUapsdRspCb: callback for passing back the
3558 response of the Enter UAPSD operation received from the
3559 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003560
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 callback
3563
Jeff Johnson295189b2012-06-20 16:38:30 -07003564 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3565 @return Result of the function call
3566*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003568WDI_EnterUapsdReq
3569(
3570 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3571 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3572 void* pUserData
3573)
3574{
3575 WDI_EventInfoType wdiEventData;
3576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3577
3578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 ------------------------------------------------------------------------*/
3581 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3582 {
3583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3584 "WDI API call before module is initialized - Fail request");
3585
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 }
3588
3589 /*------------------------------------------------------------------------
3590 Fill in Event data and post to the Main FSM
3591 ------------------------------------------------------------------------*/
3592 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3594 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3595 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 wdiEventData.pUserData = pUserData;
3597
3598 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3599
3600}/*WDI_EnterUapsdReq*/
3601
3602/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 request the device to get out of UAPSD power state. Upon
3605 the call of this API the WLAN DAL will send a HAL Exit
3606 UAPSD request message to the lower RIVA sub-system if
3607 DAL is in state STARTED.
3608
3609 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003611
3612 WDI_PostAssocReq must have been called.
3613
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 response of the Exit UAPSD operation received from the
3616 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003617
Jeff Johnson295189b2012-06-20 16:38:30 -07003618 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 callback
3620
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 @see WDI_PostAssocReq
3622 @return Result of the function call
3623*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003624WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003625WDI_ExitUapsdReq
3626(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003627 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3629 void* pUserData
3630)
3631{
3632 WDI_EventInfoType wdiEventData;
3633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3634
3635 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 ------------------------------------------------------------------------*/
3638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3639 {
3640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3641 "WDI API call before module is initialized - Fail request");
3642
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003644 }
3645
3646 /*------------------------------------------------------------------------
3647 Fill in Event data and post to the Main FSM
3648 ------------------------------------------------------------------------*/
3649 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003650 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3651 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 wdiEventData.pUserData = pUserData;
3654
3655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3656
3657}/*WDI_ExitUapsdReq*/
3658
3659/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003660 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 MAC wants to set the UAPSD related configurations
3662 of an associated STA (while acting as an AP) to the WLAN
3663 Device. Upon the call of this API the WLAN DAL will pack
3664 and send a HAL Update UAPSD params request message to
3665 the lower RIVA sub-system if DAL is in state STARTED.
3666
3667 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003668 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003669
3670 WDI_ConfigBSSReq must have been called.
3671
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003674
Jeff Johnson295189b2012-06-20 16:38:30 -07003675 wdiUpdateUapsdParamsCb: callback for passing back the
3676 response of the update UAPSD params operation received
3677 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003678
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 callback
3681
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 @see WDI_ConfigBSSReq
3683 @return Result of the function call
3684*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003685WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003686WDI_UpdateUapsdParamsReq
3687(
3688 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3689 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3690 void* pUserData
3691)
3692{
3693 WDI_EventInfoType wdiEventData;
3694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3695
3696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 ------------------------------------------------------------------------*/
3699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3700 {
3701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3702 "WDI API call before module is initialized - Fail request");
3703
Jeff Johnsone7245742012-09-05 17:12:55 -07003704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 }
3706
3707 /*------------------------------------------------------------------------
3708 Fill in Event data and post to the Main FSM
3709 ------------------------------------------------------------------------*/
3710 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003711 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003712 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 wdiEventData.pUserData = pUserData;
3715
3716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3717
3718}/*WDI_UpdateUapsdParamsReq*/
3719
3720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 MAC wants to set the UAPSD related configurations before
3723 requesting for enter UAPSD power state to the WLAN
3724 Device. Upon the call of this API the WLAN DAL will pack
3725 and send a HAL Set UAPSD params request message to
3726 the lower RIVA sub-system if DAL is in state STARTED.
3727
3728 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003730
3731 WDI_PostAssocReq must have been called.
3732
3733 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3734 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003735
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 wdiSetUapsdAcParamsCb: callback for passing back the
3737 response of the set UAPSD params operation received from
3738 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003739
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 callback
3742
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 @see WDI_PostAssocReq
3744 @return Result of the function call
3745*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003746WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003747WDI_SetUapsdAcParamsReq
3748(
3749 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3750 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3751 void* pUserData
3752)
3753{
3754 WDI_EventInfoType wdiEventData;
3755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3756
3757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 ------------------------------------------------------------------------*/
3760 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3761 {
3762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3763 "WDI API call before module is initialized - Fail request");
3764
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 }
3767
3768 /*------------------------------------------------------------------------
3769 Fill in Event data and post to the Main FSM
3770 ------------------------------------------------------------------------*/
3771 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 wdiEventData.pEventData = pwdiUapsdInfo;
3773 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3774 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 wdiEventData.pUserData = pUserData;
3776
3777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3778
3779}/*WDI_SetUapsdAcParamsReq*/
3780
3781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 MAC wants to set/reset the RXP filters for received pkts
3784 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3785 and send a HAL configure RXP filter request message to
3786 the lower RIVA sub-system.
3787
3788 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003790
Jeff Johnsone7245742012-09-05 17:12:55 -07003791
3792 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003793 filter as specified by the Device
3794 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003795
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 wdiConfigureRxpFilterCb: callback for passing back the
3797 response of the configure RXP filter operation received
3798 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003799
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003801 callback
3802
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 @return Result of the function call
3804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003806WDI_ConfigureRxpFilterReq
3807(
3808 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3809 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3810 void* pUserData
3811)
3812{
3813 WDI_EventInfoType wdiEventData;
3814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3815
3816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 ------------------------------------------------------------------------*/
3819 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3820 {
3821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3822 "WDI API call before module is initialized - Fail request");
3823
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 }
3826
3827 /*------------------------------------------------------------------------
3828 Fill in Event data and post to the Main FSM
3829 ------------------------------------------------------------------------*/
3830 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3832 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3833 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 wdiEventData.pUserData = pUserData;
3835
3836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3837}/*WDI_ConfigureRxpFilterReq*/
3838
3839/**
3840 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3841 wants to set the beacon filters while in power save.
3842 Upon the call of this API the WLAN DAL will pack and
3843 send a Beacon filter request message to the
3844 lower RIVA sub-system.
3845
3846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003848
Jeff Johnsone7245742012-09-05 17:12:55 -07003849
3850 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 filter as specified by the Device
3852 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003853
Jeff Johnson295189b2012-06-20 16:38:30 -07003854 wdiBeaconFilterCb: callback for passing back the
3855 response of the set beacon filter operation received
3856 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003857
Jeff Johnson295189b2012-06-20 16:38:30 -07003858 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 callback
3860
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 @return Result of the function call
3862*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003863WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003864WDI_SetBeaconFilterReq
3865(
3866 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3867 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3868 void* pUserData
3869)
3870{
3871 WDI_EventInfoType wdiEventData;
3872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3873
3874 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 ------------------------------------------------------------------------*/
3877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3878 {
3879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3880 "WDI API call before module is initialized - Fail request");
3881
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 }
3884
3885 /*------------------------------------------------------------------------
3886 Fill in Event data and post to the Main FSM
3887 ------------------------------------------------------------------------*/
3888 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003890 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 wdiEventData.pUserData = pUserData;
3893
3894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3895}/*WDI_SetBeaconFilterReq*/
3896
3897/**
3898 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3899 wants to remove the beacon filter for particular IE
3900 while in power save. Upon the call of this API the WLAN
3901 DAL will pack and send a remove Beacon filter request
3902 message to the lower RIVA sub-system.
3903
3904 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003906
Jeff Johnsone7245742012-09-05 17:12:55 -07003907
3908 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 filter as specified by the Device
3910 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003911
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 wdiBeaconFilterCb: callback for passing back the
3913 response of the remove beacon filter operation received
3914 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003915
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 callback
3918
Jeff Johnson295189b2012-06-20 16:38:30 -07003919 @return Result of the function call
3920*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003921WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003922WDI_RemBeaconFilterReq
3923(
3924 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3925 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3926 void* pUserData
3927)
3928{
3929 WDI_EventInfoType wdiEventData;
3930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3931
3932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 ------------------------------------------------------------------------*/
3935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3936 {
3937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3938 "WDI API call before module is initialized - Fail request");
3939
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 }
3942
3943 /*------------------------------------------------------------------------
3944 Fill in Event data and post to the Main FSM
3945 ------------------------------------------------------------------------*/
3946 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003948 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 wdiEventData.pUserData = pUserData;
3951
3952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3953}/*WDI_RemBeaconFilterReq*/
3954
3955/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 MAC wants to set the RSSI thresholds related
3958 configurations while in power save. Upon the call of
3959 this API the WLAN DAL will pack and send a HAL Set RSSI
3960 thresholds request message to the lower RIVA
3961 sub-system if DAL is in state STARTED.
3962
3963 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003965
3966 WDI_PostAssocReq must have been called.
3967
3968 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3969 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003970
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 wdiSetUapsdAcParamsCb: callback for passing back the
3972 response of the set UAPSD params operation received from
3973 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003974
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 callback
3977
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 @see WDI_PostAssocReq
3979 @return Result of the function call
3980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003982WDI_SetRSSIThresholdsReq
3983(
3984 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3985 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3986 void* pUserData
3987)
3988{
3989 WDI_EventInfoType wdiEventData;
3990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3991
3992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 ------------------------------------------------------------------------*/
3995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3996 {
3997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3998 "WDI API call before module is initialized - Fail request");
3999
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 }
4002
4003 /*------------------------------------------------------------------------
4004 Fill in Event data and post to the Main FSM
4005 ------------------------------------------------------------------------*/
4006 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004008 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 wdiEventData.pUserData = pUserData;
4011
4012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4013}/* WDI_SetRSSIThresholdsReq*/
4014
4015/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 wants to set the filter to minimize unnecessary host
4018 wakeup due to broadcast traffic while in power save.
4019 Upon the call of this API the WLAN DAL will pack and
4020 send a HAL host offload request message to the
4021 lower RIVA sub-system if DAL is in state STARTED.
4022
4023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004025
4026 WDI_PostAssocReq must have been called.
4027
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004030
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 wdiHostOffloadCb: callback for passing back the response
4032 of the host offload operation received from the
4033 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004034
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 callback
4037
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 @see WDI_PostAssocReq
4039 @return Result of the function call
4040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004042WDI_HostOffloadReq
4043(
4044 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4045 WDI_HostOffloadCb wdiHostOffloadCb,
4046 void* pUserData
4047)
4048{
4049 WDI_EventInfoType wdiEventData;
4050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4051
4052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 ------------------------------------------------------------------------*/
4055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4056 {
4057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4058 "WDI API call before module is initialized - Fail request");
4059
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 }
4062
4063 /*------------------------------------------------------------------------
4064 Fill in Event data and post to the Main FSM
4065 ------------------------------------------------------------------------*/
4066 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004067 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004068 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 wdiEventData.pUserData = pUserData;
4071
4072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4073}/*WDI_HostOffloadReq*/
4074
4075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004076 @brief WDI_KeepAliveReq will be called when the upper MAC
4077 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 and minimize unnecessary host wakeups due to while in power save.
4079 Upon the call of this API the WLAN DAL will pack and
4080 send a HAL Keep Alive request message to the
4081 lower RIVA sub-system if DAL is in state STARTED.
4082
4083 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004084 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004085
4086 WDI_PostAssocReq must have been called.
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004090
Jeff Johnson295189b2012-06-20 16:38:30 -07004091 wdiKeepAliveCb: callback for passing back the response
4092 of the Keep Alive operation received from the
4093 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004094
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 callback
4097
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 @see WDI_PostAssocReq
4099 @return Result of the function call
4100*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004101WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004102WDI_KeepAliveReq
4103(
4104 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4105 WDI_KeepAliveCb wdiKeepAliveCb,
4106 void* pUserData
4107)
4108{
4109 WDI_EventInfoType wdiEventData;
4110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4111
4112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 ------------------------------------------------------------------------*/
4115 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4116 {
4117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4118 "WDI_KeepAliveReq: WDI API call before module "
4119 "is initialized - Fail request");
4120
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 }
4123
4124 /*------------------------------------------------------------------------
4125 Fill in Event data and post to the Main FSM
4126 ------------------------------------------------------------------------*/
4127 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 wdiEventData.pEventData = pwdiKeepAliveParams;
4129 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4130 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 wdiEventData.pUserData = pUserData;
4132
4133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4134}/*WDI_KeepAliveReq*/
4135
4136/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004137 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 wants to set the Wowl Bcast ptrn to minimize unnecessary
4139 host wakeup due to broadcast traffic while in power
4140 save. Upon the call of this API the WLAN DAL will pack
4141 and send a HAL Wowl Bcast ptrn request message to the
4142 lower RIVA sub-system if DAL is in state STARTED.
4143
4144 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004146
4147 WDI_PostAssocReq must have been called.
4148
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004151
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 wdiWowlAddBcPtrnCb: callback for passing back the
4153 response of the add Wowl bcast ptrn operation received
4154 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004155
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 callback
4158
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 @see WDI_PostAssocReq
4160 @return Result of the function call
4161*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004162WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004163WDI_WowlAddBcPtrnReq
4164(
4165 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4166 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4167 void* pUserData
4168)
4169{
4170 WDI_EventInfoType wdiEventData;
4171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4172
4173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 ------------------------------------------------------------------------*/
4176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4177 {
4178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4179 "WDI API call before module is initialized - Fail request");
4180
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 }
4183
4184 /*------------------------------------------------------------------------
4185 Fill in Event data and post to the Main FSM
4186 ------------------------------------------------------------------------*/
4187 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004188 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004189 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 wdiEventData.pUserData = pUserData;
4192
4193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4194}/*WDI_WowlAddBcPtrnReq*/
4195
4196/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004197 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 wants to clear the Wowl Bcast ptrn. Upon the call of
4199 this API the WLAN DAL will pack and send a HAL delete
4200 Wowl Bcast ptrn request message to the lower RIVA
4201 sub-system if DAL is in state STARTED.
4202
4203 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004204 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004205
4206 WDI_WowlAddBcPtrnReq must have been called.
4207
Jeff Johnsone7245742012-09-05 17:12:55 -07004208 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004210
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 wdiWowlDelBcPtrnCb: callback for passing back the
4212 response of the del Wowl bcast ptrn operation received
4213 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004214
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 callback
4217
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 @see WDI_WowlAddBcPtrnReq
4219 @return Result of the function call
4220*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004221WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004222WDI_WowlDelBcPtrnReq
4223(
4224 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4225 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4226 void* pUserData
4227)
4228{
4229 WDI_EventInfoType wdiEventData;
4230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4231
4232 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 ------------------------------------------------------------------------*/
4235 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4236 {
4237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4238 "WDI API call before module is initialized - Fail request");
4239
Jeff Johnsone7245742012-09-05 17:12:55 -07004240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 }
4242
4243 /*------------------------------------------------------------------------
4244 Fill in Event data and post to the Main FSM
4245 ------------------------------------------------------------------------*/
4246 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004248 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 wdiEventData.pUserData = pUserData;
4251
4252 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4253}/*WDI_WowlDelBcPtrnReq*/
4254
4255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 wants to enter the Wowl state to minimize unnecessary
4258 host wakeup while in power save. Upon the call of this
4259 API the WLAN DAL will pack and send a HAL Wowl enter
4260 request message to the lower RIVA sub-system if DAL is
4261 in state STARTED.
4262
4263 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004264 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004265
4266 WDI_PostAssocReq must have been called.
4267
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004270
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 wdiWowlEnterReqCb: callback for passing back the
4272 response of the enter Wowl operation received from the
4273 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004274
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 callback
4277
Jeff Johnson295189b2012-06-20 16:38:30 -07004278 @see WDI_PostAssocReq
4279 @return Result of the function call
4280*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004281WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004282WDI_WowlEnterReq
4283(
4284 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4285 WDI_WowlEnterReqCb wdiWowlEnterCb,
4286 void* pUserData
4287)
4288{
4289 WDI_EventInfoType wdiEventData;
4290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4291
4292 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 ------------------------------------------------------------------------*/
4295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4296 {
4297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4298 "WDI API call before module is initialized - Fail request");
4299
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 }
4302
4303 /*------------------------------------------------------------------------
4304 Fill in Event data and post to the Main FSM
4305 ------------------------------------------------------------------------*/
4306 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004307 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004308 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004309 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 wdiEventData.pUserData = pUserData;
4311
4312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4313}/*WDI_WowlEnterReq*/
4314
4315/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004316 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004317 wants to exit the Wowl state. Upon the call of this API
4318 the WLAN DAL will pack and send a HAL Wowl exit request
4319 message to the lower RIVA sub-system if DAL is in state
4320 STARTED.
4321
4322 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004323 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004324
4325 WDI_WowlEnterReq must have been called.
4326
Jeff Johnsone7245742012-09-05 17:12:55 -07004327 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004328 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004329
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 wdiWowlExitReqCb: callback for passing back the response
4331 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004332
Jeff Johnson295189b2012-06-20 16:38:30 -07004333 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 callback
4335
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 @see WDI_WowlEnterReq
4337 @return Result of the function call
4338*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004339WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004340WDI_WowlExitReq
4341(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004342 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 WDI_WowlExitReqCb wdiWowlExitCb,
4344 void* pUserData
4345)
4346{
4347 WDI_EventInfoType wdiEventData;
4348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4349
4350 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 ------------------------------------------------------------------------*/
4353 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4354 {
4355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4356 "WDI API call before module is initialized - Fail request");
4357
Jeff Johnsone7245742012-09-05 17:12:55 -07004358 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 }
4360
4361 /*------------------------------------------------------------------------
4362 Fill in Event data and post to the Main FSM
4363 ------------------------------------------------------------------------*/
4364 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004365 wdiEventData.pEventData = pwdiWowlExitParams;
4366 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 wdiEventData.pUserData = pUserData;
4369
4370 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4371}/*WDI_WowlExitReq*/
4372
4373/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 the upper MAC wants to dynamically adjusts the listen
4376 interval based on the WLAN/MSM activity. Upon the call
4377 of this API the WLAN DAL will pack and send a HAL
4378 configure Apps Cpu Wakeup State request message to the
4379 lower RIVA sub-system.
4380
4381 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004382 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004383
Jeff Johnsone7245742012-09-05 17:12:55 -07004384
4385 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 Apps Cpu Wakeup State as specified by the
4387 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004388
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4390 back the response of the configure Apps Cpu Wakeup State
4391 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004392
Jeff Johnson295189b2012-06-20 16:38:30 -07004393 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004394 callback
4395
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 @return Result of the function call
4397*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004398WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004399WDI_ConfigureAppsCpuWakeupStateReq
4400(
4401 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4402 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4403 void* pUserData
4404)
4405{
4406 WDI_EventInfoType wdiEventData;
4407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4408
4409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004411 ------------------------------------------------------------------------*/
4412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4413 {
4414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4415 "WDI API call before module is initialized - Fail request");
4416
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004418 }
4419
4420 /*------------------------------------------------------------------------
4421 Fill in Event data and post to the Main FSM
4422 ------------------------------------------------------------------------*/
4423 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4425 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4426 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 wdiEventData.pUserData = pUserData;
4428
4429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4430}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4431/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004432 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004433 to to perform a flush operation on a given AC. Upon the
4434 call of this API the WLAN DAL will pack and send a HAL
4435 Flush AC request message to the lower RIVA sub-system if
4436 DAL is in state STARTED.
4437
4438 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004440
4441 WDI_AddBAReq must have been called.
4442
Jeff Johnsone7245742012-09-05 17:12:55 -07004443 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004444 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004445
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 wdiFlushAcRspCb: callback for passing back the response
4447 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004448
Jeff Johnson295189b2012-06-20 16:38:30 -07004449 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004450 callback
4451
Jeff Johnson295189b2012-06-20 16:38:30 -07004452 @see WDI_AddBAReq
4453 @return Result of the function call
4454*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004455WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004456WDI_FlushAcReq
4457(
4458 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4459 WDI_FlushAcRspCb wdiFlushAcRspCb,
4460 void* pUserData
4461)
4462{
4463 WDI_EventInfoType wdiEventData;
4464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4465
4466 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004467 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 ------------------------------------------------------------------------*/
4469 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4470 {
4471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4472 "WDI API call before module is initialized - Fail request");
4473
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 }
4476
4477 /*------------------------------------------------------------------------
4478 Fill in Event data and post to the Main FSM
4479 ------------------------------------------------------------------------*/
4480 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 wdiEventData.pEventData = pwdiFlushAcReqParams;
4482 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4483 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 wdiEventData.pUserData = pUserData;
4485
4486 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4487
4488}/*WDI_FlushAcReq*/
4489
4490/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004492 wants to notify the lower mac on a BT AMP event. This is
4493 to inform BTC-SLM that some BT AMP event occurred. Upon
4494 the call of this API the WLAN DAL will pack and send a
4495 HAL BT AMP event request message to the lower RIVA
4496 sub-system if DAL is in state STARTED.
4497
4498 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004500
Jeff Johnsone7245742012-09-05 17:12:55 -07004501
4502 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004504
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 wdiBtAmpEventRspCb: callback for passing back the
4506 response of the BT AMP event operation received from the
4507 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004508
Jeff Johnson295189b2012-06-20 16:38:30 -07004509 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 callback
4511
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 @return Result of the function call
4513*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004514WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004515WDI_BtAmpEventReq
4516(
4517 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4518 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4519 void* pUserData
4520)
4521{
4522 WDI_EventInfoType wdiEventData;
4523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4524
4525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 ------------------------------------------------------------------------*/
4528 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4529 {
4530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4531 "WDI API call before module is initialized - Fail request");
4532
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 }
4535
4536 /*------------------------------------------------------------------------
4537 Fill in Event data and post to the Main FSM
4538 ------------------------------------------------------------------------*/
4539 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004540 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4541 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4542 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 wdiEventData.pUserData = pUserData;
4544
4545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4546
4547}/*WDI_BtAmpEventReq*/
4548
Jeff Johnsone7245742012-09-05 17:12:55 -07004549#ifdef FEATURE_OEM_DATA_SUPPORT
4550/**
4551 @brief WDI_Start Oem Data Req will be called when the upper MAC
4552 wants to notify the lower mac on a oem data Req event.Upon
4553 the call of this API the WLAN DAL will pack and send a
4554 HAL OEM Data Req event request message to the lower RIVA
4555 sub-system if DAL is in state STARTED.
4556
4557 In state BUSY this request will be queued. Request won't
4558 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004559
4560
Jeff Johnsone7245742012-09-05 17:12:55 -07004561
4562 @param pwdiOemDataReqParams: the Oem Data Req as
4563 specified by the Device Interface
4564
4565 wdiStartOemDataRspCb: callback for passing back the
4566 response of the Oem Data Req received from the
4567 device
4568
4569 pUserData: user data will be passed back with the
4570 callback
4571
4572 @return Result of the function call
4573*/
4574WDI_Status
4575WDI_StartOemDataReq
4576(
4577 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4578 WDI_oemDataRspCb wdiOemDataRspCb,
4579 void* pUserData
4580)
4581{
4582 WDI_EventInfoType wdiEventData;
4583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4584
4585 /*------------------------------------------------------------------------
4586 Sanity Check
4587 ------------------------------------------------------------------------*/
4588 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4589 {
4590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4591 "WDI API call before module is initialized - Fail request");
4592
4593 return WDI_STATUS_E_NOT_ALLOWED;
4594 }
4595
4596 /*------------------------------------------------------------------------
4597 Fill in Event data and post to the Main FSM
4598 ------------------------------------------------------------------------*/
4599 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4600 wdiEventData.pEventData = pwdiOemDataReqParams;
4601 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4602 wdiEventData.pCBfnc = wdiOemDataRspCb;
4603 wdiEventData.pUserData = pUserData;
4604
4605 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4606
4607
4608}
4609
4610#endif
4611
4612
4613/*========================================================================
4614
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004616
Jeff Johnson295189b2012-06-20 16:38:30 -07004617==========================================================================*/
4618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 the WLAN HW to change the current channel of operation.
4621 Upon the call of this API the WLAN DAL will pack and
4622 send a HAL Start request message to the lower RIVA
4623 sub-system if DAL is in state STARTED.
4624
4625 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004627
4628 WDI_Start must have been called.
4629
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004632
Jeff Johnson295189b2012-06-20 16:38:30 -07004633 wdiSwitchChRspCb: callback for passing back the response
4634 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004635
Jeff Johnson295189b2012-06-20 16:38:30 -07004636 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 callback
4638
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 @see WDI_Start
4640 @return Result of the function call
4641*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004642WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004643WDI_SwitchChReq
4644(
4645 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4646 WDI_SwitchChRspCb wdiSwitchChRspCb,
4647 void* pUserData
4648)
4649{
4650 WDI_EventInfoType wdiEventData;
4651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4652
4653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004654 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 ------------------------------------------------------------------------*/
4656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4657 {
4658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4659 "WDI API call before module is initialized - Fail request");
4660
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 }
4663
4664 /*------------------------------------------------------------------------
4665 Fill in Event data and post to the Main FSM
4666 ------------------------------------------------------------------------*/
4667 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004668 wdiEventData.pEventData = pwdiSwitchChReqParams;
4669 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4670 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 wdiEventData.pUserData = pUserData;
4672
4673 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4674
4675}/*WDI_SwitchChReq*/
4676
4677
4678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 wishes to add or update a STA in HW. Upon the call of
4681 this API the WLAN DAL will pack and send a HAL Start
4682 message request message to the lower RIVA sub-system if
4683 DAL is in state STARTED.
4684
4685 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004687
4688 WDI_Start must have been called.
4689
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004691 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004692
Jeff Johnson295189b2012-06-20 16:38:30 -07004693 wdiConfigSTARspCb: callback for passing back the
4694 response of the config STA operation received from the
4695 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004696
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 callback
4699
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 @see WDI_Start
4701 @return Result of the function call
4702*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004703WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004704WDI_ConfigSTAReq
4705(
4706 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4707 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4708 void* pUserData
4709)
4710{
4711 WDI_EventInfoType wdiEventData;
4712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4713
4714 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 ------------------------------------------------------------------------*/
4717 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4718 {
4719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4720 "WDI API call before module is initialized - Fail request");
4721
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004723 }
4724
4725 /*------------------------------------------------------------------------
4726 Fill in Event data and post to the Main FSM
4727 ------------------------------------------------------------------------*/
4728 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004729 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4730 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4731 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 wdiEventData.pUserData = pUserData;
4733
4734 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4735
4736}/*WDI_ConfigSTAReq*/
4737
4738/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 wants to change the state of an ongoing link. Upon the
4741 call of this API the WLAN DAL will pack and send a HAL
4742 Start message request message to the lower RIVA
4743 sub-system if DAL is in state STARTED.
4744
4745 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004747
4748 WDI_JoinStartReq must have been called.
4749
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004752
Jeff Johnson295189b2012-06-20 16:38:30 -07004753 wdiSetLinkStateRspCb: callback for passing back the
4754 response of the set link state operation received from
4755 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004756
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004758 callback
4759
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 @see WDI_JoinStartReq
4761 @return Result of the function call
4762*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004763WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004764WDI_SetLinkStateReq
4765(
4766 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4767 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4768 void* pUserData
4769)
4770{
4771 WDI_EventInfoType wdiEventData;
4772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4773
4774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 ------------------------------------------------------------------------*/
4777 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4778 {
4779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4780 "WDI API call before module is initialized - Fail request");
4781
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 }
4784
4785 /*------------------------------------------------------------------------
4786 Fill in Event data and post to the Main FSM
4787 ------------------------------------------------------------------------*/
4788 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004789 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4790 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4791 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 wdiEventData.pUserData = pUserData;
4793
4794 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4795
4796}/*WDI_SetLinkStateReq*/
4797
4798
4799/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 to get statistics (MIB counters) from the device. Upon
4802 the call of this API the WLAN DAL will pack and send a
4803 HAL Start request message to the lower RIVA sub-system
4804 if DAL is in state STARTED.
4805
4806 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004808
4809 WDI_Start must have been called.
4810
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004813
Jeff Johnson295189b2012-06-20 16:38:30 -07004814 wdiGetStatsRspCb: callback for passing back the response
4815 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004816
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004818 callback
4819
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 @see WDI_Start
4821 @return Result of the function call
4822*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004823WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004824WDI_GetStatsReq
4825(
4826 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4827 WDI_GetStatsRspCb wdiGetStatsRspCb,
4828 void* pUserData
4829)
4830{
4831 WDI_EventInfoType wdiEventData;
4832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4833
4834 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 ------------------------------------------------------------------------*/
4837 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4838 {
4839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4840 "WDI API call before module is initialized - Fail request");
4841
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 }
4844
4845 /*------------------------------------------------------------------------
4846 Fill in Event data and post to the Main FSM
4847 ------------------------------------------------------------------------*/
4848 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 wdiEventData.pEventData = pwdiGetStatsReqParams;
4850 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4851 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 wdiEventData.pUserData = pUserData;
4853
4854 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4855
4856}/*WDI_GetStatsReq*/
4857
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004858#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4859/**
4860 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4861 to get roam rssi from the device. Upon
4862 the call of this API the WLAN DAL will pack and send a
4863 HAL Start request message to the lower RIVA sub-system
4864 if DAL is in state STARTED.
4865
4866 In state BUSY this request will be queued. Request won't
4867 be allowed in any other state.
4868
4869 WDI_Start must have been called.
4870
4871 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4872 specified by the Device Interface
4873
4874 wdiGetRoamRssiRspCb: callback for passing back the response
4875 of the get stats operation received from the device
4876
4877 pUserData: user data will be passed back with the
4878 callback
4879
4880 @see WDI_Start
4881 @return Result of the function call
4882*/
4883WDI_Status
4884WDI_GetRoamRssiReq
4885(
4886 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4887 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4888 void* pUserData
4889)
4890{
4891 WDI_EventInfoType wdiEventData;
4892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4893
4894 /*------------------------------------------------------------------------
4895 Sanity Check
4896 ------------------------------------------------------------------------*/
4897 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4898 {
4899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4900 "WDI API call before module is initialized - Fail request");
4901
4902 return WDI_STATUS_E_NOT_ALLOWED;
4903 }
4904 /*------------------------------------------------------------------------
4905 Fill in Event data and post to the Main FSM
4906 ------------------------------------------------------------------------*/
4907 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4908 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4909 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4910 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4911 wdiEventData.pUserData = pUserData;
4912
4913 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4914
4915}/*WDI_GetRoamRssiReq*/
4916#endif
4917
Jeff Johnson295189b2012-06-20 16:38:30 -07004918
4919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 it wishes to change the configuration of the WLAN
4922 Device. Upon the call of this API the WLAN DAL will pack
4923 and send a HAL Update CFG request message to the lower
4924 RIVA sub-system if DAL is in state STARTED.
4925
4926 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004928
4929 WDI_Start must have been called.
4930
Jeff Johnsone7245742012-09-05 17:12:55 -07004931 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004933
Jeff Johnson295189b2012-06-20 16:38:30 -07004934 wdiUpdateCfgsRspCb: callback for passing back the
4935 response of the update cfg operation received from the
4936 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004937
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004939 callback
4940
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 @see WDI_Start
4942 @return Result of the function call
4943*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004944WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004945WDI_UpdateCfgReq
4946(
4947 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4948 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4949 void* pUserData
4950)
4951{
4952 WDI_EventInfoType wdiEventData;
4953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4954
4955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 ------------------------------------------------------------------------*/
4958 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4959 {
4960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4961 "WDI API call before module is initialized - Fail request");
4962
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 }
4965
4966 /*------------------------------------------------------------------------
4967 Fill in Event data and post to the Main FSM
4968 ------------------------------------------------------------------------*/
4969 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4971 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4972 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004973 wdiEventData.pUserData = pUserData;
4974
4975 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4976
4977}/*WDI_UpdateCfgReq*/
4978
4979
4980
4981/**
4982 @brief WDI_AddBAReq will be called when the upper MAC has setup
4983 successfully a BA session and needs to notify the HW for
4984 the appropriate settings to take place. Upon the call of
4985 this API the WLAN DAL will pack and send a HAL Add BA
4986 request message to the lower RIVA sub-system if DAL is
4987 in state STARTED.
4988
4989 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004991
4992 WDI_PostAssocReq must have been called.
4993
4994 @param wdiAddBAReqParams: the add BA parameters as specified by
4995 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004996
Jeff Johnson295189b2012-06-20 16:38:30 -07004997 wdiAddBARspCb: callback for passing back the response of
4998 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004999
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005001 callback
5002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 @see WDI_PostAssocReq
5004 @return Result of the function call
5005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005007WDI_AddBAReq
5008(
5009 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5010 WDI_AddBARspCb wdiAddBARspCb,
5011 void* pUserData
5012)
5013{
5014 WDI_EventInfoType wdiEventData;
5015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5016
5017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 ------------------------------------------------------------------------*/
5020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5021 {
5022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5023 "WDI API call before module is initialized - Fail request");
5024
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 }
5027
5028 /*------------------------------------------------------------------------
5029 Fill in Event data and post to the Main FSM
5030 ------------------------------------------------------------------------*/
5031 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005032 wdiEventData.pEventData = pwdiAddBAReqParams;
5033 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5034 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 wdiEventData.pUserData = pUserData;
5036
5037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5038
5039}/*WDI_AddBAReq*/
5040
5041
5042/**
5043 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5044 successfully a BA session and needs to notify the HW for
5045 the appropriate settings to take place. Upon the call of
5046 this API the WLAN DAL will pack and send a HAL Add BA
5047 request message to the lower RIVA sub-system if DAL is
5048 in state STARTED.
5049
5050 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005051 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005052
5053 WDI_PostAssocReq must have been called.
5054
5055 @param wdiAddBAReqParams: the add BA parameters as specified by
5056 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005057
Jeff Johnson295189b2012-06-20 16:38:30 -07005058 wdiAddBARspCb: callback for passing back the response of
5059 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005060
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 callback
5063
Jeff Johnson295189b2012-06-20 16:38:30 -07005064 @see WDI_PostAssocReq
5065 @return Result of the function call
5066*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005068WDI_TriggerBAReq
5069(
5070 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5071 WDI_TriggerBARspCb wdiTriggerBARspCb,
5072 void* pUserData
5073)
5074{
5075 WDI_EventInfoType wdiEventData;
5076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5077
5078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 ------------------------------------------------------------------------*/
5081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5082 {
5083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5084 "WDI API call before module is initialized - Fail request");
5085
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 }
5088
5089 /*------------------------------------------------------------------------
5090 Fill in Event data and post to the Main FSM
5091 ------------------------------------------------------------------------*/
5092 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5094 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5095 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 wdiEventData.pUserData = pUserData;
5097
5098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5099
5100}/*WDI_AddBAReq*/
5101
5102/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005104 wishes to update any of the Beacon parameters used by HW.
5105 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5106 message to the lower RIVA sub-system if DAL is in state
5107 STARTED.
5108
5109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005111
5112 WDI_PostAssocReq must have been called.
5113
Jeff Johnsone7245742012-09-05 17:12:55 -07005114 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005116
Jeff Johnson295189b2012-06-20 16:38:30 -07005117 wdiUpdateBeaconParamsRspCb: callback for passing back the
5118 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005119
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 callback
5122
Jeff Johnson295189b2012-06-20 16:38:30 -07005123 @see WDI_PostAssocReq
5124 @return Result of the function call
5125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005127WDI_UpdateBeaconParamsReq
5128(
5129 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5130 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5131 void* pUserData
5132)
5133{
5134 WDI_EventInfoType wdiEventData;
5135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5136
5137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005139 ------------------------------------------------------------------------*/
5140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5141 {
5142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5143 "WDI API call before module is initialized - Fail request");
5144
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 }
5147
5148 /*------------------------------------------------------------------------
5149 Fill in Event data and post to the Main FSM
5150 ------------------------------------------------------------------------*/
5151 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5153 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5154 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 wdiEventData.pUserData = pUserData;
5156
5157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5158
5159}/*WDI_UpdateBeaconParamsReq*/
5160
5161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005162 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005163 wishes to update the Beacon template used by HW.
5164 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5165 message to the lower RIVA sub-system if DAL is in state
5166 STARTED.
5167
5168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005170
5171 WDI_PostAssocReq must have been called.
5172
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005175
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 wdiSendBeaconParamsRspCb: callback for passing back the
5177 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 callback
5181
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 @see WDI_PostAssocReq
5183 @return Result of the function call
5184*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005185WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005186WDI_SendBeaconParamsReq
5187(
5188 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5189 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5190 void* pUserData
5191)
5192{
5193 WDI_EventInfoType wdiEventData;
5194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5195
5196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005197 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 ------------------------------------------------------------------------*/
5199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5200 {
5201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5202 "WDI API call before module is initialized - Fail request");
5203
Jeff Johnsone7245742012-09-05 17:12:55 -07005204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 }
5206
5207 /*------------------------------------------------------------------------
5208 Fill in Event data and post to the Main FSM
5209 ------------------------------------------------------------------------*/
5210 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005211 wdiEventData.pEventData = pwdiSendBeaconParams;
5212 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5213 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005214 wdiEventData.pUserData = pUserData;
5215
5216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5217
5218}/*WDI_SendBeaconParamsReq*/
5219
5220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 upper MAC wants to update the probe response template to
5223 be transmitted as Soft AP
5224 Upon the call of this API the WLAN DAL will
5225 pack and send the probe rsp template message to the
5226 lower RIVA sub-system if DAL is in state STARTED.
5227
5228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005230
5231
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005233 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005234
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 wdiSendBeaconParamsRspCb: callback for passing back the
5236 response of the Send Beacon Params operation received
5237 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005238
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 callback
5241
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 @see WDI_AddBAReq
5243 @return Result of the function call
5244*/
5245
Jeff Johnsone7245742012-09-05 17:12:55 -07005246WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005247WDI_UpdateProbeRspTemplateReq
5248(
5249 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5250 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5251 void* pUserData
5252)
5253{
5254 WDI_EventInfoType wdiEventData;
5255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5256
5257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 ------------------------------------------------------------------------*/
5260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5261 {
5262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5263 "WDI API call before module is initialized - Fail request");
5264
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 }
5267
5268 /*------------------------------------------------------------------------
5269 Fill in Event data and post to the Main FSM
5270 ------------------------------------------------------------------------*/
5271 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005272 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5273 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5274 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 wdiEventData.pUserData = pUserData;
5276
5277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5278
5279}/*WDI_UpdateProbeRspTemplateReq*/
5280
5281/**
5282 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5283 to the NV memory.
5284
5285
5286 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5287 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005288
Jeff Johnson295189b2012-06-20 16:38:30 -07005289 wdiNvDownloadRspCb: callback for passing back the response of
5290 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005291
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 callback
5294
Jeff Johnson295189b2012-06-20 16:38:30 -07005295 @see WDI_PostAssocReq
5296 @return Result of the function call
5297*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005298WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005299WDI_NvDownloadReq
5300(
5301 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5302 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5303 void* pUserData
5304)
5305{
5306 WDI_EventInfoType wdiEventData;
5307
5308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 ------------------------------------------------------------------------*/
5311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5312 {
5313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5314 "WDI API call before module is initialized - Fail request");
5315
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 }
5318
5319 /*------------------------------------------------------------------------
5320 Fill in Event data and post to the Main FSM
5321 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005322 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5323 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5324 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5325 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 wdiEventData.pUserData = pUserData;
5327
5328 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5329
5330}/*WDI_NVDownloadReq*/
5331
Jeff Johnson295189b2012-06-20 16:38:30 -07005332/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005334 upper MAC wants to send Notice of Absence
5335 Upon the call of this API the WLAN DAL will
5336 pack and send the probe rsp template message to the
5337 lower RIVA sub-system if DAL is in state STARTED.
5338
5339 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005340 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005341
5342
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005345
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 wdiSendBeaconParamsRspCb: callback for passing back the
5347 response of the Send Beacon Params operation received
5348 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005349
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 callback
5352
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 @see WDI_AddBAReq
5354 @return Result of the function call
5355*/
5356WDI_Status
5357WDI_SetP2PGONOAReq
5358(
5359 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5360 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5361 void* pUserData
5362)
5363{
5364 WDI_EventInfoType wdiEventData;
5365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5366
5367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 ------------------------------------------------------------------------*/
5370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5371 {
5372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5373 "WDI API call before module is initialized - Fail request");
5374
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 }
5377
5378 /*------------------------------------------------------------------------
5379 Fill in Event data and post to the Main FSM
5380 ------------------------------------------------------------------------*/
5381 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005382 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5383 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5384 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 wdiEventData.pUserData = pUserData;
5386
5387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5388
5389}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005390
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305391#ifdef FEATURE_WLAN_TDLS
5392/**
5393 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5394 upper MAC wants to send TDLS Link Establish Request Parameters
5395 Upon the call of this API the WLAN DAL will
5396 pack and send the TDLS Link Establish Request message to the
5397 lower RIVA sub-system if DAL is in state STARTED.
5398
5399 In state BUSY this request will be queued. Request won't
5400 be allowed in any other state.
5401
5402
5403 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5404 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5405
5406 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5407 response of the TDLS Link Establish request received
5408 from the device
5409
5410 pUserData: user data will be passed back with the
5411 callback
5412
5413 @see
5414 @return Result of the function call
5415*/
5416WDI_Status
5417WDI_SetTDLSLinkEstablishReq
5418(
5419 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5420 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5421 void* pUserData
5422)
5423{
5424 WDI_EventInfoType wdiEventData;
5425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5426
5427 /*------------------------------------------------------------------------
5428 Sanity Check
5429 ------------------------------------------------------------------------*/
5430 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5431 {
5432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5433 "WDI API call before module is initialized - Fail request");
5434
5435 return WDI_STATUS_E_NOT_ALLOWED;
5436 }
5437
5438 /*------------------------------------------------------------------------
5439 Fill in Event data and post to the Main FSM
5440 ------------------------------------------------------------------------*/
5441 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5442 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5443 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5444 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5445 wdiEventData.pUserData = pUserData;
5446
5447 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5448
5449}/*WDI_SetTDLSLinkEstablishReq*/
5450#endif
5451
Jeff Johnson295189b2012-06-20 16:38:30 -07005452/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 UMAC wanted to add STA self while opening any new session
5455 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005456 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005457
5458
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005460 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005461
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 callback
5464
5465 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005466 @return Result of the function call
5467*/
5468WDI_Status
5469WDI_AddSTASelfReq
5470(
5471 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5472 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5473 void* pUserData
5474)
5475{
5476 WDI_EventInfoType wdiEventData;
5477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5478
5479 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005480 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 ------------------------------------------------------------------------*/
5482 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5483 {
5484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5485 "WDI API call before module is initialized - Fail request");
5486
Jeff Johnsone7245742012-09-05 17:12:55 -07005487 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005488 }
5489
5490 /*------------------------------------------------------------------------
5491 Fill in Event data and post to the Main FSM
5492 ------------------------------------------------------------------------*/
5493 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5495 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5496 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 wdiEventData.pUserData = pUserData;
5498
5499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5500
5501}/*WDI_AddSTASelfReq*/
5502
5503
Jeff Johnsone7245742012-09-05 17:12:55 -07005504#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005505/**
5506 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5507 the device of a successful add TSpec negotiation. HW
5508 needs to receive the TSpec Info from the UMAC in order
5509 to configure properly the QoS data traffic. Upon the
5510 call of this API the WLAN DAL will pack and send a HAL
5511 Add TS request message to the lower RIVA sub-system if
5512 DAL is in state STARTED.
5513
5514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005516
5517 WDI_PostAssocReq must have been called.
5518
5519 @param wdiAddTsReqParams: the add TS parameters as specified by
5520 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005521
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 wdiAddTsRspCb: callback for passing back the response of
5523 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005524
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005526 callback
5527
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 @see WDI_PostAssocReq
5529 @return Result of the function call
5530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005532WDI_AggrAddTSReq
5533(
5534 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5535 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5536 void* pUserData
5537)
5538{
5539 WDI_EventInfoType wdiEventData;
5540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5541
5542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005544 ------------------------------------------------------------------------*/
5545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5546 {
5547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5548 "WDI API call before module is initialized - Fail request");
5549
Jeff Johnsone7245742012-09-05 17:12:55 -07005550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005551 }
5552
5553 /*------------------------------------------------------------------------
5554 Fill in Event data and post to the Main FSM
5555 ------------------------------------------------------------------------*/
5556 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5558 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5559 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 wdiEventData.pUserData = pUserData;
5561
5562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5563
5564}/*WDI_AggrAddTSReq*/
5565
5566#endif /* WLAN_FEATURE_VOWIFI_11R */
5567
Jeff Johnson295189b2012-06-20 16:38:30 -07005568/**
5569 @brief WDI_FTMCommandReq
5570 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005571
5572 @param ftmCommandReq: FTM Command Body
5573 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005575
Jeff Johnson295189b2012-06-20 16:38:30 -07005576 @see
5577 @return Result of the function call
5578*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005579WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005580WDI_FTMCommandReq
5581(
5582 WDI_FTMCommandReqType *ftmCommandReq,
5583 WDI_FTMCommandRspCb ftmCommandRspCb,
5584 void *pUserData
5585)
5586{
5587 WDI_EventInfoType wdiEventData;
5588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5589
5590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005592 ------------------------------------------------------------------------*/
5593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5594 {
5595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5596 "WDI API call before module is initialized - Fail request");
5597
Jeff Johnsone7245742012-09-05 17:12:55 -07005598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 }
5600
5601 /*------------------------------------------------------------------------
5602 Fill in Event data and post to the Main FSM
5603 ------------------------------------------------------------------------*/
5604 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5605 wdiEventData.pEventData = (void *)ftmCommandReq;
5606 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5607 wdiEventData.pCBfnc = ftmCommandRspCb;
5608 wdiEventData.pUserData = pUserData;
5609
5610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5611}
Jeff Johnson295189b2012-06-20 16:38:30 -07005612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005613 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005614
5615 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005617
5618
5619 @param pwdiResumeReqParams: as specified by
5620 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005621
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 wdiResumeReqRspCb: callback for passing back the response of
5623 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 callback
5627
5628 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 @return Result of the function call
5630*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005631WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005632WDI_HostResumeReq
5633(
5634 WDI_ResumeParamsType* pwdiResumeReqParams,
5635 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5636 void* pUserData
5637)
5638{
5639 WDI_EventInfoType wdiEventData;
5640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5641
5642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005644 ------------------------------------------------------------------------*/
5645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5646 {
5647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5648 "WDI API call before module is initialized - Fail request");
5649
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 }
5652
5653 /*------------------------------------------------------------------------
5654 Fill in Event data and post to the Main FSM
5655 ------------------------------------------------------------------------*/
5656 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 wdiEventData.pEventData = pwdiResumeReqParams;
5658 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5659 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 wdiEventData.pUserData = pUserData;
5661
5662 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5663
5664}/*WDI_HostResumeReq*/
5665
5666/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005667 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005668
5669 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005671
5672
5673 @param pwdiDelStaSelfReqParams: as specified by
5674 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005675
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiDelStaSelfRspCb: callback for passing back the response of
5677 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005678
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 callback
5681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 @see WDI_PostAssocReq
5683 @return Result of the function call
5684*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005685WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005686WDI_DelSTASelfReq
5687(
5688 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5689 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5690 void* pUserData
5691)
5692{
5693 WDI_EventInfoType wdiEventData;
5694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5695
5696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 ------------------------------------------------------------------------*/
5699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5700 {
5701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5702 "WDI API call before module is initialized - Fail request");
5703
Jeff Johnsone7245742012-09-05 17:12:55 -07005704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 }
5706
5707 /*------------------------------------------------------------------------
5708 Fill in Event data and post to the Main FSM
5709 ------------------------------------------------------------------------*/
5710 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5712 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5713 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 wdiEventData.pUserData = pUserData;
5715
5716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5717
5718}/*WDI_AggrAddTSReq*/
5719
5720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005721 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5722 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 Upon the call of this API the WLAN DAL will pack
5724 and send a HAL Set Tx Per Tracking request message to the
5725 lower RIVA sub-system if DAL is in state STARTED.
5726
5727 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005729
Jeff Johnsone7245742012-09-05 17:12:55 -07005730 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005731 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005732
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 pwdiSetTxPerTrackingRspCb: callback for passing back the
5734 response of the set Tx PER Tracking configurations operation received
5735 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005736
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005738 callback
5739
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 @return Result of the function call
5741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005743WDI_SetTxPerTrackingReq
5744(
5745 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5746 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5747 void* pUserData
5748)
5749{
5750 WDI_EventInfoType wdiEventData;
5751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5752
5753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005755 ------------------------------------------------------------------------*/
5756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5757 {
5758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5759 "WDI API call before module is initialized - Fail request");
5760
Jeff Johnsone7245742012-09-05 17:12:55 -07005761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005762 }
5763
5764 /*------------------------------------------------------------------------
5765 Fill in Event data and post to the Main FSM
5766 ------------------------------------------------------------------------*/
5767 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005768 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005771 wdiEventData.pUserData = pUserData;
5772
5773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5774
5775}/*WDI_SetTxPerTrackingReq*/
5776
5777/**
5778 @brief WDI_SetTmLevelReq
5779 If HW Thermal condition changed, driver should react based on new
5780 HW thermal condition.
5781
5782 @param pwdiSetTmLevelReq: New thermal condition information
5783
5784 pwdiSetTmLevelRspCb: callback
5785
5786 usrData: user data will be passed back with the
5787 callback
5788
5789 @return Result of the function call
5790*/
5791WDI_Status
5792WDI_SetTmLevelReq
5793(
5794 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5795 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5796 void *usrData
5797)
5798{
5799 WDI_EventInfoType wdiEventData;
5800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5801
5802 /*------------------------------------------------------------------------
5803 Sanity Check
5804 ------------------------------------------------------------------------*/
5805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5806 {
5807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5808 "WDI API call before module is initialized - Fail request");
5809
5810 return WDI_STATUS_E_NOT_ALLOWED;
5811 }
5812
5813 /*------------------------------------------------------------------------
5814 Fill in Event data and post to the Main FSM
5815 ------------------------------------------------------------------------*/
5816 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5817 wdiEventData.pEventData = pwdiSetTmLevelReq;
5818 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5819 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5820 wdiEventData.pUserData = usrData;
5821
5822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5823}
5824
5825/**
5826 @brief WDI_HostSuspendInd
5827
5828 Suspend Indication from the upper layer will be sent
5829 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005830
Jeff Johnson295189b2012-06-20 16:38:30 -07005831 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005832
5833 @see
5834
Jeff Johnson295189b2012-06-20 16:38:30 -07005835 @return Status of the request
5836*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005837WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005838WDI_HostSuspendInd
5839(
5840 WDI_SuspendParamsType* pwdiSuspendIndParams
5841)
5842{
5843
5844 WDI_EventInfoType wdiEventData;
5845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5846
5847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005849 ------------------------------------------------------------------------*/
5850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5851 {
5852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5853 "WDI API call before module is initialized - Fail request");
5854
Jeff Johnsone7245742012-09-05 17:12:55 -07005855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005856 }
5857
5858 /*------------------------------------------------------------------------
5859 Fill in Event data and post to the Main FSM
5860 ------------------------------------------------------------------------*/
5861 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005862 wdiEventData.pEventData = pwdiSuspendIndParams;
5863 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5864 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 wdiEventData.pUserData = NULL;
5866
5867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5868
5869}/*WDI_HostSuspendInd*/
5870
5871/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005872 @brief WDI_TrafficStatsInd
5873 Traffic Stats from the upper layer will be sent
5874 down to HAL
5875
5876 @param WDI_TrafficStatsIndType
5877
5878 @see
5879
5880 @return Status of the request
5881*/
5882WDI_Status
5883WDI_TrafficStatsInd
5884(
5885 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5886)
5887{
5888
5889 WDI_EventInfoType wdiEventData;
5890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5891
5892 /*------------------------------------------------------------------------
5893 Sanity Check
5894 ------------------------------------------------------------------------*/
5895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5896 {
5897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5898 "WDI API call before module is initialized - Fail request");
5899
5900 return WDI_STATUS_E_NOT_ALLOWED;
5901 }
5902
5903 /*------------------------------------------------------------------------
5904 Fill in Event data and post to the Main FSM
5905 ------------------------------------------------------------------------*/
5906 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5907 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5908 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5909 wdiEventData.pCBfnc = NULL;
5910 wdiEventData.pUserData = NULL;
5911
5912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5913
5914}/*WDI_TrafficStatsInd*/
5915
Chet Lanctota96bb432013-03-18 10:26:30 -07005916#ifdef WLAN_FEATURE_11W
5917/**
5918 @brief WDI_ExcludeUnencryptedInd
5919 Register with HAL to receive/drop unencrypted frames
5920
5921 @param WDI_ExcludeUnencryptIndType
5922
5923 @see
5924
5925 @return Status of the request
5926*/
5927WDI_Status
5928WDI_ExcludeUnencryptedInd
5929(
5930 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5931)
5932{
5933
5934 WDI_EventInfoType wdiEventData;
5935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5936
5937 /*------------------------------------------------------------------------
5938 Sanity Check
5939 ------------------------------------------------------------------------*/
5940 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5941 {
5942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5943 "WDI API call before module is initialized - Fail request");
5944
5945 return WDI_STATUS_E_NOT_ALLOWED;
5946 }
5947
5948 /*------------------------------------------------------------------------
5949 Fill in Event data and post to the Main FSM
5950 ------------------------------------------------------------------------*/
5951 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5952 wdiEventData.pEventData = pWdiExcUnencParams;
5953 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5954 wdiEventData.pCBfnc = NULL;
5955 wdiEventData.pUserData = NULL;
5956
5957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5958
5959}/*WDI_TrafficStatsInd*/
5960#endif
5961
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005962/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 @brief WDI_HALDumpCmdReq
5964 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005965
5966 @param halDumpCmdReqParams: Hal Dump Command Body
5967 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005969
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 @see
5971 @return Result of the function call
5972*/
5973WDI_Status WDI_HALDumpCmdReq
5974(
5975 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5976 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5977 void *pUserData
5978)
5979{
5980 WDI_EventInfoType wdiEventData;
5981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5982
5983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 ------------------------------------------------------------------------*/
5986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5987 {
5988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5989 "WDI API call before module is initialized - Fail request");
5990
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 }
5993
5994 /*------------------------------------------------------------------------
5995 Fill in Event data and post to the Main FSM
5996 ------------------------------------------------------------------------*/
5997 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5998 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5999 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6000 wdiEventData.pCBfnc = halDumpCmdRspCb;
6001 wdiEventData.pUserData = pUserData;
6002
6003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6004}
6005
Jeff Johnsone7245742012-09-05 17:12:55 -07006006/*============================================================================
6007
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006009
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 ============================================================================*/
6011
6012/**
6013 @brief Main FSM Start function for all states except BUSY
6014
Jeff Johnsone7245742012-09-05 17:12:55 -07006015
6016 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 wdiEV: event posted to the main DAL FSM
6018 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006019 structure
6020
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 @see
6022 @return Result of the function call
6023*/
6024WDI_Status
6025WDI_PostMainEvent
6026(
Jeff Johnsone7245742012-09-05 17:12:55 -07006027 WDI_ControlBlockType* pWDICtx,
6028 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006029 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006030
Jeff Johnson295189b2012-06-20 16:38:30 -07006031)
6032{
Jeff Johnsone7245742012-09-05 17:12:55 -07006033 WDI_Status wdiStatus;
6034 WDI_MainFuncType pfnWDIMainEvHdlr;
6035 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6037
6038 /*-------------------------------------------------------------------------
6039 Sanity check
6040 -------------------------------------------------------------------------*/
6041 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6042 ( wdiEV >= WDI_MAX_EVENT ))
6043 {
6044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6045 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6046 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006048 }
6049
6050 /*Access to the global state must be locked */
6051 wpalMutexAcquire(&pWDICtx->wptMutex);
6052
6053 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006055
6056 wdiOldState = pWDICtx->uGlobalState;
6057
6058 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006059 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6060 response comes from CCPU for the request sent by host:
6061 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 -07006062 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 -07006063 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 CCPU:
6065 don't change the state */
6066 if ( WDI_RESPONSE_EVENT != wdiEV)
6067 {
6068 /*Transition to BUSY State - the request is now being processed by the FSM,
6069 if the request fails we shall transition back to the old state, if not
6070 the request will manage its own state transition*/
6071 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6072 }
6073 /* If the state function associated with the EV is NULL it means that this
6074 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006075 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 {
6077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006078 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006079 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006080 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006081 }
6082 else
6083 {
6084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006085 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006087 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006088 }
6089
6090 /* If a request handles itself well it will end up in a success or in a
6091 pending
6092 Success - means that the request was processed and the proper state
6093 transition already occurred or will occur when the resp is received
6094 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 Pending - means the request could not be processed at this moment in time
6097 because the FSM was already busy so no state transition or dequeueing
6098 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006099
Jeff Johnson295189b2012-06-20 16:38:30 -07006100 Success for synchronous case means that the transition may occur and
6101 processing of pending requests may continue - so it should go through
6102 and restores the state and continue processing queued requests*/
6103 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6104 ( WDI_STATUS_PENDING != wdiStatus ))
6105 {
6106 if ( WDI_RESPONSE_EVENT != wdiEV)
6107 {
6108 /*The request has failed or could not be processed - transition back to
6109 the old state - check to see if anything was queued and try to execute
6110 The dequeue logic should post a message to a thread and return - no
6111 actual processing can occur */
6112 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6113 }
6114 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 }
6117
6118 /* we have completed processing the event */
6119 wpalMutexRelease(&pWDICtx->wptMutex);
6120
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006122
6123}/*WDI_PostMainEvent*/
6124
6125
6126/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006127 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006128--------------------------------------------------------------------------*/
6129/**
6130 @brief Main FSM Start function for all states except BUSY
6131
Jeff Johnsone7245742012-09-05 17:12:55 -07006132
6133 @param pWDICtx: pointer to the WLAN DAL context
6134 pEventData: pointer to the event information structure
6135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 @see
6137 @return Result of the function call
6138*/
6139WDI_Status
6140WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006141(
Jeff Johnson295189b2012-06-20 16:38:30 -07006142 WDI_ControlBlockType* pWDICtx,
6143 WDI_EventInfoType* pEventData
6144)
6145{
6146
6147 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006149 ----------------------------------------------------------------------*/
6150 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6151 {
6152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006153 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 pWDICtx, pEventData);
6155 return WDI_STATUS_E_FAILURE;
6156 }
6157
6158 wpalMutexAcquire(&pWDICtx->wptMutex);
6159
6160 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006161 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 ----------------------------------------------------------------------*/
6163 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6164 {
6165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6166 "Control Transport not yet Open - queueing the request");
6167
6168 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006169 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006170
6171 wpalMutexRelease(&pWDICtx->wptMutex);
6172 return WDI_STATUS_PENDING;
6173 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006174
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 wpalMutexRelease(&pWDICtx->wptMutex);
6176
6177 /*Return Success*/
6178 return WDI_ProcessRequest( pWDICtx, pEventData );
6179
6180}/*WDI_MainStart*/
6181
6182/**
6183 @brief Main FSM Response function for state INIT
6184
Jeff Johnsone7245742012-09-05 17:12:55 -07006185
6186 @param pWDICtx: pointer to the WLAN DAL context
6187 pEventData: pointer to the event information structure
6188
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 @see
6190 @return Result of the function call
6191*/
6192WDI_Status
6193WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006194(
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 WDI_ControlBlockType* pWDICtx,
6196 WDI_EventInfoType* pEventData
6197)
6198{
6199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006202 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006203
6204 /*Return Success*/
6205 return WDI_STATUS_E_NOT_ALLOWED;
6206}/* WDI_MainRspInit */
6207
6208/**
6209 @brief Main FSM Close function for all states except BUSY
6210
Jeff Johnsone7245742012-09-05 17:12:55 -07006211
6212 @param pWDICtx: pointer to the WLAN DAL context
6213 pEventData: pointer to the event information structure
6214
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 @see
6216 @return Result of the function call
6217*/
6218WDI_Status
6219WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006220(
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 WDI_ControlBlockType* pWDICtx,
6222 WDI_EventInfoType* pEventData
6223)
6224{
6225
6226 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006228 ----------------------------------------------------------------------*/
6229 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6230 {
6231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006232 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 pWDICtx, pEventData);
6234 return WDI_STATUS_E_FAILURE;
6235 }
6236
6237 /*Return Success*/
6238 return WDI_ProcessRequest( pWDICtx, pEventData );
6239
6240}/*WDI_MainClose*/
6241/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006242 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006243--------------------------------------------------------------------------*/
6244/**
6245 @brief Main FSM Start function for state STARTED
6246
Jeff Johnsone7245742012-09-05 17:12:55 -07006247
6248 @param pWDICtx: pointer to the WLAN DAL context
6249 pEventData: pointer to the event information structure
6250
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 @see
6252 @return Result of the function call
6253*/
6254WDI_Status
6255WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006256(
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 WDI_ControlBlockType* pWDICtx,
6258 WDI_EventInfoType* pEventData
6259)
6260{
6261 WDI_StartRspCb wdiStartRspCb = NULL;
6262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6263
6264 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 ----------------------------------------------------------------------*/
6267 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6268 {
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 pWDICtx, pEventData);
6272 return WDI_STATUS_E_FAILURE;
6273 }
6274
6275 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006277 ----------------------------------------------------------------------*/
6278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006280
6281 wpalMutexAcquire(&pWDICtx->wptMutex);
6282
6283 /*Transition back to started because the post function transitioned us to
6284 busy*/
6285 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6286
6287 /*Check to see if any request is pending*/
6288 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006289
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 wpalMutexRelease(&pWDICtx->wptMutex);
6291
6292 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6294
Jeff Johnson295189b2012-06-20 16:38:30 -07006295 /*Notify UMAC*/
6296 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6297
6298 /*Return Success*/
6299 return WDI_STATUS_SUCCESS;
6300
6301}/*WDI_MainStartStarted*/
6302
6303/**
6304 @brief Main FSM Stop function for state STARTED
6305
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
6307 @param pWDICtx: pointer to the WLAN DAL context
6308 pEventData: pointer to the event information structure
6309
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 @see
6311 @return Result of the function call
6312*/
6313WDI_Status
6314WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006315(
Jeff Johnson295189b2012-06-20 16:38:30 -07006316 WDI_ControlBlockType* pWDICtx,
6317 WDI_EventInfoType* pEventData
6318)
6319{
6320 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 ----------------------------------------------------------------------*/
6323 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6324 {
6325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006326 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 pWDICtx, pEventData);
6328 return WDI_STATUS_E_FAILURE;
6329 }
6330
6331 /*State at this point is BUSY - because we enter this state before posting
6332 an event to the FSM in order to prevent potential race conditions*/
6333
6334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6335 "Processing stop request in FSM");
6336
6337 /*Return Success*/
6338 return WDI_ProcessRequest( pWDICtx, pEventData );
6339
6340}/*WDI_MainStopStarted*/
6341/**
6342 @brief Main FSM Request function for state started
6343
Jeff Johnsone7245742012-09-05 17:12:55 -07006344
6345 @param pWDICtx: pointer to the WLAN DAL context
6346 pEventData: pointer to the event information structure
6347
Jeff Johnson295189b2012-06-20 16:38:30 -07006348 @see
6349 @return Result of the function call
6350*/
6351WDI_Status
6352WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006353(
Jeff Johnson295189b2012-06-20 16:38:30 -07006354 WDI_ControlBlockType* pWDICtx,
6355 WDI_EventInfoType* pEventData
6356)
6357{
6358
6359 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 ----------------------------------------------------------------------*/
6362 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6363 {
6364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006365 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006366 pWDICtx, pEventData);
6367 return WDI_STATUS_E_FAILURE;
6368 }
6369
6370 /*State at this point is BUSY - because we enter this state before posting
6371 an event to the FSM in order to prevent potential race conditions*/
6372
6373 /*Return Success*/
6374 return WDI_ProcessRequest( pWDICtx, pEventData );
6375
6376}/*WDI_MainReqStarted*/
6377
6378/**
6379 @brief Main FSM Response function for all states except INIT
6380
Jeff Johnsone7245742012-09-05 17:12:55 -07006381
6382 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006383 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006384
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 @see
6386 @return Result of the function call
6387*/
6388WDI_Status
6389WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006390(
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 WDI_ControlBlockType* pWDICtx,
6392 WDI_EventInfoType* pEventData
6393)
6394{
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006396 wpt_boolean expectedResponse;
6397
6398 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 ----------------------------------------------------------------------*/
6401 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6402 {
6403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006404 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006405 pWDICtx, pEventData);
6406 return WDI_STATUS_E_FAILURE;
6407 }
6408
6409 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6410 {
6411 /* we received an expected response */
6412 expectedResponse = eWLAN_PAL_TRUE;
6413
6414 /*We expect that we will transition to started after this processing*/
6415 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6416
6417 /* we are no longer expecting a response */
6418 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6419 }
6420 else
6421 {
6422 /* we received an indication or unexpected response */
6423 expectedResponse = eWLAN_PAL_FALSE;
6424 /* for indications no need to update state from what it is right
6425 now, unless it explicitly does it in the indication handler (say
6426 for device failure ind) */
6427 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6428 }
6429
6430 /*Process the response and indication */
6431 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6432
6433 /*Lock the CB as we are about to do a state transition*/
6434 wpalMutexAcquire(&pWDICtx->wptMutex);
6435
6436 /*Transition to the expected state after the response processing
6437 - this should always be started state with the following exceptions:
6438 1. processing of a failed start response
6439 2. device failure detected while processing response
6440 3. stop response received*/
6441 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006442
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 /*Dequeue request that may have been queued while we were waiting for the
6444 response */
6445 if ( expectedResponse )
6446 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 }
6449
6450 wpalMutexRelease(&pWDICtx->wptMutex);
6451
6452 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006454
6455}/*WDI_MainRsp*/
6456
6457/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006458 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006459--------------------------------------------------------------------------*/
6460/**
6461 @brief Main FSM Stop function for state STOPPED
6462
Jeff Johnsone7245742012-09-05 17:12:55 -07006463
6464 @param pWDICtx: pointer to the WLAN DAL context
6465 pEventData: pointer to the event information structure
6466
Jeff Johnson295189b2012-06-20 16:38:30 -07006467 @see
6468 @return Result of the function call
6469*/
6470WDI_Status
6471WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006472(
Jeff Johnson295189b2012-06-20 16:38:30 -07006473 WDI_ControlBlockType* pWDICtx,
6474 WDI_EventInfoType* pEventData
6475)
6476{
6477 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006478 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006479 ----------------------------------------------------------------------*/
6480 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6481 {
6482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 pWDICtx, pEventData);
6485 return WDI_STATUS_E_FAILURE;
6486 }
6487
6488 /*We should normally not get a STOP request if we are already stopped
6489 since we should normally be stopped by the UMAC. However in some
6490 error situations we put ourselves in the stopped state without the
6491 UMAC knowing, so when we get a STOP request in this state we still
6492 process it since we need to clean up the underlying state */
6493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6494 "Processing stop request while stopped in FSM");
6495
6496 /*Return Success*/
6497 return WDI_ProcessRequest( pWDICtx, pEventData );
6498
6499}/*WDI_MainStopStopped*/
6500
6501/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006502 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006503--------------------------------------------------------------------------*/
6504/**
6505 @brief Main FSM Start function for state BUSY
6506
Jeff Johnsone7245742012-09-05 17:12:55 -07006507
6508 @param pWDICtx: pointer to the WLAN DAL context
6509 pEventData: pointer to the event information structure
6510
Jeff Johnson295189b2012-06-20 16:38:30 -07006511 @see
6512 @return Result of the function call
6513*/
6514WDI_Status
6515WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006516(
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 WDI_ControlBlockType* pWDICtx,
6518 WDI_EventInfoType* pEventData
6519)
6520{
6521 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006523 ----------------------------------------------------------------------*/
6524 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6525 {
6526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 pWDICtx, pEventData);
6529 return WDI_STATUS_E_FAILURE;
6530 }
6531
6532 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006533 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 ----------------------------------------------------------------------*/
6535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6536 "WDI Busy state - queue start request");
6537
6538 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006539 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006540
6541 /*Return Success*/
6542 return WDI_STATUS_PENDING;
6543}/*WDI_MainStartBusy*/
6544
6545/**
6546 @brief Main FSM Stop function for state BUSY
6547
Jeff Johnsone7245742012-09-05 17:12:55 -07006548
6549 @param pWDICtx: pointer to the WLAN DAL context
6550 pEventData: pointer to the event information structure
6551
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 @see
6553 @return Result of the function call
6554*/
6555WDI_Status
6556WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006557(
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 WDI_ControlBlockType* pWDICtx,
6559 WDI_EventInfoType* pEventData
6560)
6561{
6562 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006564 ----------------------------------------------------------------------*/
6565 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6566 {
6567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006568 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 pWDICtx, pEventData);
6570 return WDI_STATUS_E_FAILURE;
6571 }
6572
6573 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006575 ----------------------------------------------------------------------*/
6576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6577 "WDI Busy state - queue stop request");
6578
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006581
Jeff Johnson295189b2012-06-20 16:38:30 -07006582}/*WDI_MainStopBusy*/
6583
6584/**
6585 @brief Main FSM Request function for state BUSY
6586
Jeff Johnsone7245742012-09-05 17:12:55 -07006587
6588 @param pWDICtx: pointer to the WLAN DAL context
6589 pEventData: pointer to the event information structure
6590
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 @see
6592 @return Result of the function call
6593*/
6594WDI_Status
6595WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006596(
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 WDI_ControlBlockType* pWDICtx,
6598 WDI_EventInfoType* pEventData
6599)
6600{
6601 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006603 ----------------------------------------------------------------------*/
6604 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6605 {
6606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006607 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 pWDICtx, pEventData);
6609 return WDI_STATUS_E_FAILURE;
6610 }
6611
6612 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006613 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 ----------------------------------------------------------------------*/
6615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6616 "WDI Busy state - queue request %d because waiting for response %d",
6617 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6618
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006621
Jeff Johnson295189b2012-06-20 16:38:30 -07006622}/*WDI_MainReqBusy*/
6623/**
6624 @brief Main FSM Close function for state BUSY
6625
Jeff Johnsone7245742012-09-05 17:12:55 -07006626
6627 @param pWDICtx: pointer to the WLAN DAL context
6628 pEventData: pointer to the event information structure
6629
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 @see
6631 @return Result of the function call
6632*/
6633WDI_Status
6634WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006635(
Jeff Johnson295189b2012-06-20 16:38:30 -07006636 WDI_ControlBlockType* pWDICtx,
6637 WDI_EventInfoType* pEventData
6638)
6639{
6640 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006641 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006642 ----------------------------------------------------------------------*/
6643 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6644 {
6645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006646 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 pWDICtx, pEventData);
6648 return WDI_STATUS_E_FAILURE;
6649 }
6650
6651 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006652 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 ----------------------------------------------------------------------*/
6654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6655 "WDI Busy state - queue close request");
6656
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006659
Jeff Johnson295189b2012-06-20 16:38:30 -07006660}/*WDI_MainCloseBusy*/
6661
6662/**
6663 @brief Main FSM Shutdown function for INIT & STARTED states
6664
6665
6666 @param pWDICtx: pointer to the WLAN DAL context
6667 pEventData: pointer to the event information structure
6668
6669 @see
6670 @return Result of the function call
6671*/
6672WDI_Status
6673WDI_MainShutdown
6674(
6675 WDI_ControlBlockType* pWDICtx,
6676 WDI_EventInfoType* pEventData
6677)
6678{
6679 /*--------------------------------------------------------------------
6680 Sanity Check
6681 ----------------------------------------------------------------------*/
6682 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6683 {
6684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6685 "Invalid parameters on Main Start %x %x",
6686 pWDICtx, pEventData);
6687 return WDI_STATUS_E_FAILURE;
6688 }
6689
6690 /*State at this point is BUSY - because we enter this state before posting
6691 an event to the FSM in order to prevent potential race conditions*/
6692
6693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6694 "Processing shutdown request in FSM");
6695
6696 /*Return Success*/
6697 return WDI_ProcessRequest( pWDICtx, pEventData );
6698
6699}/*WDI_MainShutdown*/
6700
6701/**
6702 @brief Main FSM Shutdown function for BUSY state
6703
6704
6705 @param pWDICtx: pointer to the WLAN DAL context
6706 pEventData: pointer to the event information structure
6707
6708 @see
6709 @return Result of the function call
6710*/
6711WDI_Status
6712WDI_MainShutdownBusy
6713(
6714 WDI_ControlBlockType* pWDICtx,
6715 WDI_EventInfoType* pEventData
6716)
6717{
6718 /*--------------------------------------------------------------------
6719 Sanity Check
6720 ----------------------------------------------------------------------*/
6721 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6722 {
6723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6724 "Invalid parameters on Main Start %x %x",
6725 pWDICtx, pEventData);
6726 return WDI_STATUS_E_FAILURE;
6727 }
6728
6729 /* If you are waiting for a HAL response at this stage, you are not
6730 * going to get it. Riva is already shutdown/crashed.
6731 */
6732 wpalTimerStop(&gWDICb.wptResponseTimer);
6733
6734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6735 "Processing shutdown request in FSM: Busy state ");
6736
6737 return WDI_ProcessRequest( pWDICtx, pEventData );
6738
6739}/*WDI_MainShutdownBusy*/
6740
6741
Jeff Johnsone7245742012-09-05 17:12:55 -07006742/*=======================================================================
6743
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006745
Jeff Johnson295189b2012-06-20 16:38:30 -07006746*=======================================================================*/
6747
6748/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006749 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006750========================================================================*/
6751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006754
6755 @param pWDICtx: pointer to the WLAN DAL context
6756 pEventData: pointer to the event information structure
6757
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 @see
6759 @return Result of the function call
6760*/
6761WDI_Status
6762WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006763(
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 WDI_ControlBlockType* pWDICtx,
6765 WDI_EventInfoType* pEventData
6766)
6767{
6768 WDI_StartReqParamsType* pwdiStartParams = NULL;
6769 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 wpt_uint16 usDataOffset = 0;
6772 wpt_uint16 usSendSize = 0;
6773
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 tHalMacStartReqMsg halStartReq;
6775 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6777
6778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 -------------------------------------------------------------------------*/
6781 if (( NULL == pEventData ) ||
6782 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6783 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6784 {
6785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 }
6790
6791 /*-----------------------------------------------------------------------
6792 Get message buffer
6793 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006794 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 pwdiStartParams->usConfigBufferLen;
6796
Jeff Johnsone7245742012-09-05 17:12:55 -07006797 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006798 usLen,
6799 &pSendBuffer, &usDataOffset, &usSendSize))||
6800 ( usSendSize < (usDataOffset + usLen )))
6801 {
6802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6803 "Unable to get send buffer in start req %x %x %x",
6804 pEventData, pwdiStartParams, wdiStartRspCb);
6805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 }
6808
6809 /*-----------------------------------------------------------------------
6810 Fill in the message
6811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006812 halStartReq.startReqParams.driverType =
6813 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006814
Jeff Johnsone7245742012-09-05 17:12:55 -07006815 halStartReq.startReqParams.uConfigBufferLen =
6816 pwdiStartParams->usConfigBufferLen;
6817 wpalMemoryCopy( pSendBuffer+usDataOffset,
6818 &halStartReq.startReqParams,
6819 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006820
Jeff Johnsone7245742012-09-05 17:12:55 -07006821 usDataOffset += sizeof(halStartReq.startReqParams);
6822 wpalMemoryCopy( pSendBuffer+usDataOffset,
6823 pwdiStartParams->pConfigBuffer,
6824 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006825
6826 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006827 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006828
6829 /*Save Low Level Ind CB and associated user data - it will be used further
6830 on when an indication is coming from the lower MAC*/
6831 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006833
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006836 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006837 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006839 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6840
Jeff Johnsone7245742012-09-05 17:12:55 -07006841
Jeff Johnson295189b2012-06-20 16:38:30 -07006842}/*WDI_ProcessStartReq*/
6843
6844/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006845 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006847
6848 @param pWDICtx: pointer to the WLAN DAL context
6849 pEventData: pointer to the event information structure
6850
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 @see
6852 @return Result of the function call
6853*/
6854WDI_Status
6855WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006856(
Jeff Johnson295189b2012-06-20 16:38:30 -07006857 WDI_ControlBlockType* pWDICtx,
6858 WDI_EventInfoType* pEventData
6859)
6860{
6861 WDI_StopReqParamsType* pwdiStopParams = NULL;
6862 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 wpt_uint16 usDataOffset = 0;
6865 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006866 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006867 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6869
6870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 -------------------------------------------------------------------------*/
6873 if (( NULL == pEventData ) ||
6874 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6875 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6876 {
6877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006880 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 }
6882
6883 /*-----------------------------------------------------------------------
6884 Get message buffer
6885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 sizeof(halStopReq.stopReqParams),
6888 &pSendBuffer, &usDataOffset, &usSendSize))||
6889 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6890 {
6891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6892 "Unable to get send buffer in stop req %x %x %x",
6893 pEventData, pwdiStopParams, wdiStopRspCb);
6894 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006895 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 }
6897
6898 /*-----------------------------------------------------------------------
6899 Fill in the message
6900 -----------------------------------------------------------------------*/
6901 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6902 pwdiStopParams->wdiStopReason);
6903
Jeff Johnsone7245742012-09-05 17:12:55 -07006904 wpalMemoryCopy( pSendBuffer+usDataOffset,
6905 &halStopReq.stopReqParams,
6906 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006907
6908 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006909 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006910
6911 /*! TO DO: stop the data services */
6912 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6913 {
6914 /*Stop the STA Table !UT- check this logic again
6915 It is safer to do it here than on the response - because a stop is imminent*/
6916 WDI_STATableStop(pWDICtx);
6917
6918 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006919 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6920 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 {
6922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6923 "WDI Init failed to reset power state event");
6924
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006926 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006927 }
6928 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006929 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6930 if( eWLAN_PAL_STATUS_SUCCESS != status )
6931 {
6932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6933 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6934 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006935 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006936 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006938 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006939 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006940 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6941 WDI_SET_POWER_STATE_TIMEOUT);
6942 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 {
6944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6945 "WDI Init failed to wait on an event");
6946
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006948 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 }
6950 }
6951
6952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6957
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006958fail:
6959 // Release the message buffer so we don't leak
6960 wpalMemoryFree(pSendBuffer);
6961
6962failRequest:
6963 //WDA should have failure check to avoid the memory leak
6964 return WDI_STATUS_E_FAILURE;
6965
Jeff Johnson295189b2012-06-20 16:38:30 -07006966}/*WDI_ProcessStopReq*/
6967
6968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006971
6972 @param pWDICtx: pointer to the WLAN DAL context
6973 pEventData: pointer to the event information structure
6974
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 @see
6976 @return Result of the function call
6977*/
6978WDI_Status
6979WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006980(
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 WDI_ControlBlockType* pWDICtx,
6982 WDI_EventInfoType* pEventData
6983)
6984{
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6987
6988 /*Lock control block for cleanup*/
6989 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006990
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 /*Clear all pending request*/
6992 WDI_ClearPendingRequests(pWDICtx);
6993
6994 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006996
6997 /* Close Data transport*/
6998 /* FTM mode does not open Data Path */
6999 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7000 {
7001 WDTS_Close(pWDICtx);
7002 }
7003
7004 /*Close the STA Table !UT- check this logic again*/
7005 WDI_STATableClose(pWDICtx);
7006
7007 /*close the PAL */
7008 wptStatus = wpalClose(pWDICtx->pPALContext);
7009 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7010 {
7011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7012 "Failed to wpal Close %d", wptStatus);
7013 WDI_ASSERT(0);
7014 }
7015
7016 /*Transition back to init state*/
7017 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7018
7019 wpalMutexRelease(&pWDICtx->wptMutex);
7020
7021 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023
Jeff Johnsone7245742012-09-05 17:12:55 -07007024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007025}/*WDI_ProcessCloseReq*/
7026
7027
7028/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007030===========================================================================*/
7031
7032/**
7033 @brief Process Init Scan Request function (called when Main FSM
7034 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007035
7036 @param pWDICtx: pointer to the WLAN DAL context
7037 pEventData: pointer to the event information structure
7038
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 @see
7040 @return Result of the function call
7041*/
7042WDI_Status
7043WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007044(
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 WDI_ControlBlockType* pWDICtx,
7046 WDI_EventInfoType* pEventData
7047)
7048{
7049 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7050 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 wpt_uint16 usDataOffset = 0;
7053 wpt_uint16 usSendSize = 0;
7054 wpt_uint8 i = 0;
7055
7056 tHalInitScanReqMsg halInitScanReqMsg;
7057
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 * It shold be removed once host and riva changes are in sync*/
7060 tHalInitScanConReqMsg halInitScanConReqMsg;
7061
7062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7063
7064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 -------------------------------------------------------------------------*/
7067 if (( NULL == pEventData ) ||
7068 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7069 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7070 {
7071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 }
7076
7077#if 0
7078 wpalMutexAcquire(&pWDICtx->wptMutex);
7079 /*-----------------------------------------------------------------------
7080 Check to see if SCAN is already in progress - if so reject the req
7081 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 -----------------------------------------------------------------------*/
7084 if ( pWDICtx->bScanInProgress )
7085 {
7086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7087 "Scan is already in progress - subsequent scan is not allowed"
7088 " until the first scan completes");
7089
7090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 }
7093
Jeff Johnsone7245742012-09-05 17:12:55 -07007094 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7095 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007096
7097 wpalMutexRelease(&pWDICtx->wptMutex);
7098#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007099 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007101 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 * It shold be removed once host and riva changes are in sync*/
7103 /*-----------------------------------------------------------------------
7104 Get message buffer
7105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 sizeof(halInitScanConReqMsg.initScanParams),
7108 &pSendBuffer, &usDataOffset, &usSendSize))||
7109 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7110 {
7111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7112 "Unable to get send buffer in init scan req %x %x %x",
7113 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 }
7117
7118
7119 /*-----------------------------------------------------------------------
7120 Fill in the message
7121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007122 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7124
7125 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7126 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7127
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007130 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007131 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007132 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007133 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7134
7135 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7136 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7137
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7139 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007140
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7143
7144 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7145 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7148 }
7149
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 wpalMemoryCopy( pSendBuffer+usDataOffset,
7151 &halInitScanConReqMsg.initScanParams,
7152 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007153 }
7154 else
7155 {
7156 /*-----------------------------------------------------------------------
7157 Get message buffer
7158 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007160 sizeof(halInitScanReqMsg.initScanParams),
7161 &pSendBuffer, &usDataOffset, &usSendSize))||
7162 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7163 {
7164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7165 "Unable to get send buffer in init scan req %x %x %x",
7166 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 }
7170
7171
7172 /*-----------------------------------------------------------------------
7173 Fill in the message
7174 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7177
7178 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7179 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7180
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7187
7188 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7189 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7190
Jeff Johnsone7245742012-09-05 17:12:55 -07007191 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7193
7194 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7195 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7198 }
7199
Jeff Johnsone7245742012-09-05 17:12:55 -07007200 wpalMemoryCopy( pSendBuffer+usDataOffset,
7201 &halInitScanReqMsg.initScanParams,
7202 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 }
7204
7205 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007207
7208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007209 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7213
7214}/*WDI_ProcessInitScanReq*/
7215
7216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007219
7220 @param pWDICtx: pointer to the WLAN DAL context
7221 pEventData: pointer to the event information structure
7222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 @see
7224 @return Result of the function call
7225*/
7226WDI_Status
7227WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007228(
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 WDI_ControlBlockType* pWDICtx,
7230 WDI_EventInfoType* pEventData
7231)
7232{
7233 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7234 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 wpt_uint16 usDataOffset = 0;
7237 wpt_uint16 usSendSize = 0;
7238
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7241
7242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 -------------------------------------------------------------------------*/
7245 if (( NULL == pEventData ) ||
7246 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7247 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7248 {
7249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 }
7254
7255#if 0
7256 wpalMutexAcquire(&pWDICtx->wptMutex);
7257 /*-----------------------------------------------------------------------
7258 Check to see if SCAN is already in progress - start scan is only
7259 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7264 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7265 {
7266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7267 "Scan start not allowed in this state %d %d",
7268 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007269
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 }
7273
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007275
7276 wpalMutexRelease(&pWDICtx->wptMutex);
7277#endif
7278
7279 /*-----------------------------------------------------------------------
7280 Get message buffer
7281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007283 sizeof(halStartScanReqMsg.startScanParams),
7284 &pSendBuffer, &usDataOffset, &usSendSize))||
7285 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7286 {
7287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7288 "Unable to get send buffer in start scan req %x %x %x",
7289 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 }
7293
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 wpalMemoryCopy( pSendBuffer+usDataOffset,
7297 &halStartScanReqMsg.startScanParams,
7298 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007299
7300 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007302
7303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7308}/*WDI_ProcessStartScanReq*/
7309
7310
7311/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007314
7315 @param pWDICtx: pointer to the WLAN DAL context
7316 pEventData: pointer to the event information structure
7317
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 @see
7319 @return Result of the function call
7320*/
7321WDI_Status
7322WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007323(
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 WDI_ControlBlockType* pWDICtx,
7325 WDI_EventInfoType* pEventData
7326)
7327{
7328 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7329 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007330 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 wpt_uint16 usDataOffset = 0;
7332 wpt_uint16 usSendSize = 0;
7333
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7336
7337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 -------------------------------------------------------------------------*/
7340 if (( NULL == pEventData ) ||
7341 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7342 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7343 {
7344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 }
7349
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7351 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 * forwarded to HAL and result in hang*/
7353#if 0
7354 wpalMutexAcquire(&pWDICtx->wptMutex);
7355 /*-----------------------------------------------------------------------
7356 Check to see if SCAN is already in progress - end scan is only
7357 allowed when a scan is ongoing and the state of the scan procedure
7358 is started
7359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7362 {
7363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7364 "End start not allowed in this state %d %d",
7365 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007366
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 }
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007372
7373 wpalMutexRelease(&pWDICtx->wptMutex);
7374#endif
7375
7376 /*-----------------------------------------------------------------------
7377 Get message buffer
7378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007380 sizeof(halEndScanReqMsg.endScanParams),
7381 &pSendBuffer, &usDataOffset, &usSendSize))||
7382 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7383 {
7384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7385 "Unable to get send buffer in start scan req %x %x %x",
7386 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 }
7390
7391 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7392
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 wpalMemoryCopy( pSendBuffer+usDataOffset,
7394 &halEndScanReqMsg.endScanParams,
7395 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007396
7397 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007398 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007399
7400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7405}/*WDI_ProcessEndScanReq*/
7406
7407
7408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007411
7412 @param pWDICtx: pointer to the WLAN DAL context
7413 pEventData: pointer to the event information structure
7414
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 @see
7416 @return Result of the function call
7417*/
7418WDI_Status
7419WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007420(
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 WDI_ControlBlockType* pWDICtx,
7422 WDI_EventInfoType* pEventData
7423)
7424{
7425 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7426 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 wpt_uint16 usDataOffset = 0;
7429 wpt_uint16 usSendSize = 0;
7430 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007431 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007432 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7434
7435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 -------------------------------------------------------------------------*/
7438 if (( NULL == pEventData ) ||
7439 ( NULL == pEventData->pEventData) ||
7440 ( NULL == pEventData->pCBfnc))
7441 {
7442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 }
7447
7448 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7449 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7451 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 * forwarded to HAL and result in hang*/
7453#if 0
7454 wpalMutexAcquire(&pWDICtx->wptMutex);
7455 /*-----------------------------------------------------------------------
7456 Check to see if SCAN is already in progress
7457 Finish scan gets invoked any scan states. ie. abort scan
7458 It should be allowed in any states.
7459 -----------------------------------------------------------------------*/
7460 if ( !pWDICtx->bScanInProgress )
7461 {
7462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7463 "Finish start not allowed in this state %d",
7464 pWDICtx->bScanInProgress );
7465
7466 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
7469
7470 /*-----------------------------------------------------------------------
7471 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7475 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 wpalMutexRelease(&pWDICtx->wptMutex);
7477#endif
7478
7479 if ( pWDICtx->bInBmps )
7480 {
7481 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007482 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7483 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7484 {
7485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7486 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7487 WDI_ASSERT(0);
7488 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 }
7490
7491 /*-----------------------------------------------------------------------
7492 Get message buffer
7493 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 sizeof(halFinishScanReqMsg.finishScanParams),
7496 &pSendBuffer, &usDataOffset, &usSendSize))||
7497 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7498 {
7499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7500 "Unable to get send buffer in start scan req %x %x %x",
7501 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 }
7505
Jeff Johnsone7245742012-09-05 17:12:55 -07007506 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007507 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7508
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7511
Jeff Johnsone7245742012-09-05 17:12:55 -07007512 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7514
7515 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7516 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7517
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007519 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7524
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7527
7528 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7529 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7532 }
7533
7534 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7535 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7536
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 wpalMemoryCopy( pSendBuffer+usDataOffset,
7538 &halFinishScanReqMsg.finishScanParams,
7539 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007540
7541 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007542 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007543
7544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007545 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7549}/*WDI_ProcessFinishScanReq*/
7550
7551
7552/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007554==========================================================================*/
7555/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 @brief Process BSS Join for a given Session
7557
7558 @param pWDICtx: pointer to the WLAN DAL context
7559 pEventData: pointer to the event information structure
7560
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 @see
7562 @return Result of the function call
7563*/
7564WDI_Status
7565WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007566(
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 WDI_ControlBlockType* pWDICtx,
7568 WDI_JoinReqParamsType* pwdiJoinParams,
7569 WDI_JoinRspCb wdiJoinRspCb,
7570 void* pUserData
7571)
7572{
7573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 wpt_uint16 usDataOffset = 0;
7576 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007578
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7581
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007582 wpalMutexAcquire(&pWDICtx->wptMutex);
7583
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 /*------------------------------------------------------------------------
7585 Check to see if we have any session with this BSSID already stored, we
7586 should not
7587 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7589 pwdiJoinParams->wdiReqInfo.macBSSID,
7590 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007591
7592 if ( NULL != pBSSSes )
7593 {
7594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007595 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7596 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007597
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007598 /*reset the bAssociationInProgress otherwise the next
7599 *join request will be queued*/
7600 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7601 wpalMutexRelease(&pWDICtx->wptMutex);
7602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 }
7604
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007606 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007607 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 if ( NULL == pBSSSes )
7610 {
7611
7612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7613 "DAL has no free sessions - cannot run another join");
7614
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007615 /*reset the bAssociationInProgress otherwise the next
7616 *join request will be queued*/
7617 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 }
7621
7622 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7624 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 WDI_MAC_ADDR_LEN);
7626
7627 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007630
Jeff Johnson295189b2012-06-20 16:38:30 -07007631 wpalMutexRelease(&pWDICtx->wptMutex);
7632
7633 /*-----------------------------------------------------------------------
7634 Get message buffer
7635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007637 sizeof(halJoinReqMsg.joinReqParams),
7638 &pSendBuffer, &usDataOffset, &usSendSize))||
7639 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7640 {
7641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7642 "Unable to get send buffer in join req %x %x %x",
7643 pUserData, pwdiJoinParams, wdiJoinRspCb);
7644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 }
7647
7648 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007650
7651 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 pwdiJoinParams->wdiReqInfo.macSTASelf,
7653 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007654
Jeff Johnsone7245742012-09-05 17:12:55 -07007655 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7657
7658 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7659
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007660#ifdef WLAN_FEATURE_VOWIFI
7661 halJoinReqMsg.joinReqParams.maxTxPower =
7662 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7663#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7666#endif
7667
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7670 wdiSecondaryChannelOffset);
7671
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 wpalMemoryCopy( pSendBuffer+usDataOffset,
7673 &halJoinReqMsg.joinReqParams,
7674 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007675
7676 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007678
7679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7683 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007684
7685}/*WDI_ProcessBSSSessionJoinReq*/
7686
7687/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007690
7691 @param pWDICtx: pointer to the WLAN DAL context
7692 pEventData: pointer to the event information structure
7693
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 @see
7695 @return Result of the function call
7696*/
7697WDI_Status
7698WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007699(
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 WDI_ControlBlockType* pWDICtx,
7701 WDI_EventInfoType* pEventData
7702)
7703{
7704 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7705 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7706 WDI_JoinRspCb wdiJoinRspCb = NULL;
7707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7708
7709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 -------------------------------------------------------------------------*/
7712 if (( NULL == pEventData ) ||
7713 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7714 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7715 {
7716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007721
Jeff Johnson295189b2012-06-20 16:38:30 -07007722 /*-------------------------------------------------------------------------
7723 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007724 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 -------------------------------------------------------------------------*/
7726 wpalMutexAcquire(&pWDICtx->wptMutex);
7727
7728 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7729 {
7730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7731 "Association is currently in progress, queueing new join req");
7732
7733 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 pwdiJoinParams->wdiReqInfo.macBSSID);
7736
7737 wpalMutexRelease(&pWDICtx->wptMutex);
7738
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 }
7741
7742 /*Starting a new association */
7743 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7744 wpalMutexRelease(&pWDICtx->wptMutex);
7745
7746 /*Process the Join Request*/
7747 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7748 wdiJoinRspCb,pEventData->pUserData);
7749
7750}/*WDI_ProcessJoinReq*/
7751
7752
7753/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007756
7757 @param pWDICtx: pointer to the WLAN DAL context
7758 pEventData: pointer to the event information structure
7759
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 @see
7761 @return Result of the function call
7762*/
7763WDI_Status
7764WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007765(
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 WDI_ControlBlockType* pWDICtx,
7767 WDI_EventInfoType* pEventData
7768)
7769{
7770 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7771 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 wpt_uint16 uMsgSize = 0;
7775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 wpt_uint16 usDataOffset = 0;
7777 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007779
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7782
7783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 -------------------------------------------------------------------------*/
7786 if (( NULL == pEventData ) ||
7787 ( NULL == pEventData->pEventData ) ||
7788 ( NULL == pEventData->pCBfnc ))
7789 {
7790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 }
7795
7796 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7797 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7798 /*-------------------------------------------------------------------------
7799 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 -------------------------------------------------------------------------*/
7802 wpalMutexAcquire(&pWDICtx->wptMutex);
7803
7804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7808 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7809 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007810
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 {
7813#ifdef WLAN_FEATURE_VOWIFI_11R
7814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 if ( NULL == pBSSSes )
7819 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007820
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7822 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007823
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007827
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7830 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007832
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7836#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007838 * Request in case of IBSS*/
7839 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7840 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7841 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7842 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7843 {
7844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 if ( NULL == pBSSSes )
7849 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007850
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7852 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007853
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007857
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7860 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007862
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7866 }
7867 else
7868 {
7869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7871 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7872 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7873
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 /* for IBSS testing */
7875 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 }
7878#endif
7879 }
7880
7881 /*------------------------------------------------------------------------
7882 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 ------------------------------------------------------------------------*/
7885 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7886 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7888 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7889 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7890 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007891
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007893
7894 wpalMutexRelease(&pWDICtx->wptMutex);
7895
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 }
7898
7899 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7901 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007902 sizeof(pWDICtx->wdiCachedConfigBssReq));
7903
7904 wpalMutexRelease(&pWDICtx->wptMutex);
7905
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7907#ifdef WLAN_FEATURE_11AC
7908 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007909 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 else
7911#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007912 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007913
7914 /*-----------------------------------------------------------------------
7915 Get message buffer
7916 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007918 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7919 ( usSendSize < (usDataOffset + uMsgSize )))
7920 {
7921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7922 "Unable to get send buffer in config bss req %x %x %x",
7923 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 }
7927
7928 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007929#ifdef WLAN_FEATURE_11AC
7930 if (WDI_getFwWlanFeatCaps(DOT11AC))
7931 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7932 &pwdiConfigBSSParams->wdiReqInfo);
7933 else
7934#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 &pwdiConfigBSSParams->wdiReqInfo);
7937
7938 /* Need to fill in the STA Index to invalid, since at this point we have not
7939 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007941
7942 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7944
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007945#ifdef WLAN_FEATURE_11AC
7946 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7947 wpalMemoryCopy( pSendBuffer+usDataOffset,
7948 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7949 uMsgSize);
7950 }else
7951#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007952 {
7953 if ( uMsgSize <= sizeof(tConfigBssParams) )
7954 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007955 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007956 &halConfigBssReqMsg.uBssParams.configBssParams,
7957 uMsgSize);
7958 }
7959 else
7960 {
7961 return WDI_STATUS_E_FAILURE;
7962 }
7963 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007964
7965 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007967
7968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7972 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 WDI_CONFIG_BSS_RESP);
7974
7975}/*WDI_ProcessConfigBSSReq*/
7976
7977
7978/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007981
7982 @param pWDICtx: pointer to the WLAN DAL context
7983 pEventData: pointer to the event information structure
7984
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 @see
7986 @return Result of the function call
7987*/
7988WDI_Status
7989WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007990(
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 WDI_ControlBlockType* pWDICtx,
7992 WDI_EventInfoType* pEventData
7993)
7994{
7995 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7996 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 wpt_uint16 usDataOffset = 0;
8001 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008002 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008003
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8006
8007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 -------------------------------------------------------------------------*/
8010 if (( NULL == pEventData ) ||
8011 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8012 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8013 {
8014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 }
8019
8020 /*-------------------------------------------------------------------------
8021 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 -------------------------------------------------------------------------*/
8024 wpalMutexAcquire(&pWDICtx->wptMutex);
8025
8026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8030 pwdiDelBSSParams->ucBssIdx,
8031 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008032
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 {
8035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 "%s: BSS does not yet exist. ucBssIdx %d",
8037 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008038
8039 wpalMutexRelease(&pWDICtx->wptMutex);
8040
8041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008043
8044 /*------------------------------------------------------------------------
8045 Check if this BSS is being currently processed or queued,
8046 if queued - queue the new request as well
8047 ------------------------------------------------------------------------*/
8048 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8051 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8052 __func__, pwdiDelBSSParams->ucBssIdx);
8053
8054 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8055
8056 wpalMutexRelease(&pWDICtx->wptMutex);
8057
8058 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008060
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 /*-----------------------------------------------------------------------
8062 If we receive a Del BSS request for an association that is already in
8063 progress, it indicates that the assoc has failed => we no longer have
8064 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 -----------------------------------------------------------------------*/
8067 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8068 {
8069 /*We can switch to false here because even if a subsequent Join comes in
8070 it will only be processed when DAL transitions out of BUSY state which
8071 happens when the Del BSS request comes */
8072 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8073
8074 /*Former association is complete - prepare next pending assoc for
8075 processing */
8076 WDI_DequeueAssocRequest(pWDICtx);
8077 }
8078
8079 wpalMutexRelease(&pWDICtx->wptMutex);
8080 /*-----------------------------------------------------------------------
8081 Get message buffer
8082 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 sizeof(halBssReqMsg.deleteBssParams),
8085 &pSendBuffer, &usDataOffset, &usSendSize))||
8086 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8087 {
8088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8089 "Unable to get send buffer in start req %x %x %x",
8090 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 }
8094
8095 /*Fill in the message request structure*/
8096
8097 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008098 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008099
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 wpalMemoryCopy( pSendBuffer+usDataOffset,
8101 &halBssReqMsg.deleteBssParams,
8102 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008103
8104 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008106
Jeff Johnsone7245742012-09-05 17:12:55 -07008107
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8113
Jeff Johnsone7245742012-09-05 17:12:55 -07008114
Jeff Johnson295189b2012-06-20 16:38:30 -07008115}/*WDI_ProcessDelBSSReq*/
8116
8117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008120
8121 @param pWDICtx: pointer to the WLAN DAL context
8122 pEventData: pointer to the event information structure
8123
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 @see
8125 @return Result of the function call
8126*/
8127WDI_Status
8128WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008129(
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 WDI_ControlBlockType* pWDICtx,
8131 WDI_EventInfoType* pEventData
8132)
8133{
8134 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8135 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 wpt_uint16 usDataOffset = 0;
8140 wpt_uint16 usSendSize = 0;
8141 wpt_uint16 uMsgSize = 0;
8142 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008144
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8147
8148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 -------------------------------------------------------------------------*/
8151 if (( NULL == pEventData ) ||
8152 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8153 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8154 {
8155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 }
8160
8161 /*-------------------------------------------------------------------------
8162 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 -------------------------------------------------------------------------*/
8165 wpalMutexAcquire(&pWDICtx->wptMutex);
8166
8167 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8171 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8172 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008173
8174 if ( NULL == pBSSSes )
8175 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8177 "%s: Association sequence for this BSS does not yet exist - "
8178 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8179 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008180
8181 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 }
8184
8185 /*------------------------------------------------------------------------
8186 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 ------------------------------------------------------------------------*/
8189 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8190 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8192 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8193 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008194
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008196
8197 wpalMutexRelease(&pWDICtx->wptMutex);
8198
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 }
8201
8202 /*-----------------------------------------------------------------------
8203 If Post Assoc was not yet received - the current association must
8204 be in progress
8205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8208 {
8209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8210 "Association sequence for this BSS association no longer in "
8211 "progress - not allowed");
8212
8213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 }
8216
8217 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008218 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 -----------------------------------------------------------------------*/
8220 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8221 {
8222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8223 "Post Assoc not allowed before JOIN - failing request");
8224
8225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 }
8228
8229 wpalMutexRelease(&pWDICtx->wptMutex);
8230
8231 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8232 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8233 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8238 ( usSendSize < (usDataOffset + uMsgSize )))
8239 {
8240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8241 "Unable to get send buffer in start req %x %x %x",
8242 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 }
8246
8247 /*Copy the STA parameters */
8248 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8249 &pwdiPostAssocParams->wdiSTAParams );
8250
8251 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 WDI_STATableFindStaidByAddr(pWDICtx,
8254 pwdiPostAssocParams->wdiSTAParams.macSTA,
8255 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8256 {
8257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8258 "This station does not exist in the WDI Station Table %d");
8259 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008260 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 }
8263
8264 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 pBSSSes->ucBSSIdx;
8267
8268 /*Copy the BSS parameters */
8269 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8270 &pwdiPostAssocParams->wdiBSSParams);
8271
8272 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 WDI_STATableFindStaidByAddr(pWDICtx,
8275 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 {
8278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8279 "This station does not exist in the WDI Station Table %d");
8280 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008281 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 }
8284
8285 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 pBSSSes->ucBSSIdx;
8288
Jeff Johnsone7245742012-09-05 17:12:55 -07008289
8290 wpalMemoryCopy( pSendBuffer+usDataOffset,
8291 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8292 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008293
8294 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8295
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8297 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8298 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008299
Jeff Johnsone7245742012-09-05 17:12:55 -07008300
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303
Jeff Johnsone7245742012-09-05 17:12:55 -07008304
8305 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008308
8309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8314
Jeff Johnsone7245742012-09-05 17:12:55 -07008315
Jeff Johnson295189b2012-06-20 16:38:30 -07008316}/*WDI_ProcessPostAssocReq*/
8317
8318/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008321
8322 @param pWDICtx: pointer to the WLAN DAL context
8323 pEventData: pointer to the event information structure
8324
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 @see
8326 @return Result of the function call
8327*/
8328WDI_Status
8329WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008330(
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 WDI_ControlBlockType* pWDICtx,
8332 WDI_EventInfoType* pEventData
8333)
8334{
8335 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8336 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wpt_uint16 usDataOffset = 0;
8341 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8344
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8347
8348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 -------------------------------------------------------------------------*/
8351 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8352 ( NULL == pEventData->pCBfnc ))
8353 {
8354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 }
8359
8360 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8361 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8362 /*-------------------------------------------------------------------------
8363 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 -------------------------------------------------------------------------*/
8366 wpalMutexAcquire(&pWDICtx->wptMutex);
8367
8368 /*------------------------------------------------------------------------
8369 Find the BSS for which the request is made and identify WDI session
8370 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8372 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 &macBSSID))
8374 {
8375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8376 "This station does not exist in the WDI Station Table %d");
8377 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 }
8380
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8382 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8385 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8386 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008387
8388 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 }
8391
8392 /*------------------------------------------------------------------------
8393 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 ------------------------------------------------------------------------*/
8396 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8397 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8399 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8400 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008401
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008403 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 }
8406
8407 wpalMutexRelease(&pWDICtx->wptMutex);
8408 /*-----------------------------------------------------------------------
8409 Get message buffer
8410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 sizeof(halDelStaReqMsg.delStaParams),
8413 &pSendBuffer, &usDataOffset, &usSendSize))||
8414 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8415 {
8416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8417 "Unable to get send buffer in start req %x %x %x",
8418 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 }
8422
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8424 wpalMemoryCopy( pSendBuffer+usDataOffset,
8425 &halDelStaReqMsg.delStaParams,
8426 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008427
8428 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008430
8431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8436
8437}/*WDI_ProcessDelSTAReq*/
8438
8439
8440/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008442==========================================================================*/
8443/**
8444 @brief Process Set BSS Key Request function (called when Main FSM
8445 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008446
8447 @param pWDICtx: pointer to the WLAN DAL context
8448 pEventData: pointer to the event information structure
8449
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 @see
8451 @return Result of the function call
8452*/
8453WDI_Status
8454WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008455(
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 WDI_ControlBlockType* pWDICtx,
8457 WDI_EventInfoType* pEventData
8458)
8459{
8460 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8461 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 wpt_uint16 usDataOffset = 0;
8466 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8469 wpt_uint8 keyIndex = 0;
8470
8471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8472
8473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 -------------------------------------------------------------------------*/
8476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8477 ( NULL == pEventData->pCBfnc ))
8478 {
8479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008483 }
8484
8485 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8486 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8487 /*-------------------------------------------------------------------------
8488 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 -------------------------------------------------------------------------*/
8491 wpalMutexAcquire(&pWDICtx->wptMutex);
8492
8493 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008494 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8497 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8498 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008499
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 {
8502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8504 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008505
8506 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 }
8509
8510 /*------------------------------------------------------------------------
8511 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 ------------------------------------------------------------------------*/
8514 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8515 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8517 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8518 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008519
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 }
8524
8525
8526 wpalMutexRelease(&pWDICtx->wptMutex);
8527 /*-----------------------------------------------------------------------
8528 Get message buffer
8529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8532 &pSendBuffer, &usDataOffset, &usSendSize))||
8533 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8534 {
8535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8536 "Unable to get send buffer in set bss key req %x %x %x",
8537 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 }
8541
8542 /*-----------------------------------------------------------------------
8543 Copy the Key parameters into the HAL message
8544 -----------------------------------------------------------------------*/
8545
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8550
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8553
8554 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8555 keyIndex++)
8556 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8559 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8560 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8561 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8562 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8563 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8570 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 WDI_MAX_KEY_LENGTH);
8573 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008574
8575 wpalMemoryCopy( pSendBuffer+usDataOffset,
8576 &halSetBssKeyReqMsg.setBssKeyParams,
8577 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008578
8579 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008581
8582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8586 wdiSetBSSKeyRspCb, pEventData->pUserData,
8587 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008588
8589}/*WDI_ProcessSetBssKeyReq*/
8590
8591/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008594
8595 @param pWDICtx: pointer to the WLAN DAL context
8596 pEventData: pointer to the event information structure
8597
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 @see
8599 @return Result of the function call
8600*/
8601WDI_Status
8602WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008603(
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 WDI_ControlBlockType* pWDICtx,
8605 WDI_EventInfoType* pEventData
8606)
8607{
8608 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8609 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 wpt_uint16 usDataOffset = 0;
8614 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8618
8619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 -------------------------------------------------------------------------*/
8622 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8623 ( NULL == pEventData->pCBfnc ))
8624 {
8625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 }
8630
8631 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8632 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8633 /*-------------------------------------------------------------------------
8634 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008635 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 -------------------------------------------------------------------------*/
8637 wpalMutexAcquire(&pWDICtx->wptMutex);
8638
8639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8643 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8644 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008645
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 {
8648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8650 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008651
8652 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 }
8655
8656 /*------------------------------------------------------------------------
8657 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 ------------------------------------------------------------------------*/
8660 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8661 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8663 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8664 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008665
Jeff Johnsone7245742012-09-05 17:12:55 -07008666 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 }
8670
8671
8672 wpalMutexRelease(&pWDICtx->wptMutex);
8673
8674 /*-----------------------------------------------------------------------
8675 Get message buffer
8676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8679 &pSendBuffer, &usDataOffset, &usSendSize))||
8680 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8681 {
8682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8683 "Unable to get send buffer in set bss key req %x %x %x",
8684 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 }
8688 /*-----------------------------------------------------------------------
8689 Copy the Key parameters into the HAL message
8690 -----------------------------------------------------------------------*/
8691 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8692
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8695
8696 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8697
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8700
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 wpalMemoryCopy( pSendBuffer+usDataOffset,
8702 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8703 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008704
8705 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
8708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008714}/*WDI_ProcessRemoveBssKeyReq*/
8715
8716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008718 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008719
8720 @param pWDICtx: pointer to the WLAN DAL context
8721 pEventData: pointer to the event information structure
8722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 @see
8724 @return Result of the function call
8725*/
8726WDI_Status
8727WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008728(
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 WDI_ControlBlockType* pWDICtx,
8730 WDI_EventInfoType* pEventData
8731)
8732{
8733 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8734 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8735 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 wpt_uint16 usDataOffset = 0;
8738 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8743 wpt_uint8 keyIndex = 0;
8744
8745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8746
8747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 -------------------------------------------------------------------------*/
8750 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8751 ( NULL == pEventData->pCBfnc ))
8752 {
8753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 }
8758
8759 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8760 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8761 /*-------------------------------------------------------------------------
8762 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 -------------------------------------------------------------------------*/
8765 wpalMutexAcquire(&pWDICtx->wptMutex);
8766
8767 /*------------------------------------------------------------------------
8768 Find the BSS for which the request is made and identify WDI session
8769 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8771 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 &macBSSID))
8773 {
8774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8775 "This station does not exist in the WDI Station Table %d");
8776 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 }
8779
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8781 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8784 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8785 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008786
8787 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008789 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008790
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 /*------------------------------------------------------------------------
8792 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 ------------------------------------------------------------------------*/
8795 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8796 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8798 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8799 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008800
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 }
8805
8806
8807 wpalMutexRelease(&pWDICtx->wptMutex);
8808 /*-----------------------------------------------------------------------
8809 Get message buffer
8810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8813 &pSendBuffer, &usDataOffset, &usSendSize))||
8814 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8815 {
8816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8817 "Unable to get send buffer in set bss key req %x %x %x",
8818 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 }
8822 /*-----------------------------------------------------------------------
8823 Copy the STA Key parameters into the HAL message
8824 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8827
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8830
8831 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8832
8833 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8834
8835 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8836
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8838 keyIndex++)
8839 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8842 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8843 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8844 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8845 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8846 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8853 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 WDI_MAX_KEY_LENGTH);
8856 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008857
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 wpalMemoryCopy( pSendBuffer+usDataOffset,
8859 &halSetStaKeyReqMsg.setStaKeyParams,
8860 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008861
8862 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008864
8865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8869 wdiSetSTAKeyRspCb, pEventData->pUserData,
8870 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008871
8872}/*WDI_ProcessSetSTAKeyReq*/
8873
8874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008877
8878 @param pWDICtx: pointer to the WLAN DAL context
8879 pEventData: pointer to the event information structure
8880
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 @see
8882 @return Result of the function call
8883*/
8884WDI_Status
8885WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008886(
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 WDI_ControlBlockType* pWDICtx,
8888 WDI_EventInfoType* pEventData
8889)
8890{
8891 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8892 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8893 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 wpt_uint16 usDataOffset = 0;
8896 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 wpt_macAddr macBSSID;
8899 wpt_uint8 ucCurrentBSSSesIdx;
8900 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8902
8903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 -------------------------------------------------------------------------*/
8906 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8907 ( NULL == pEventData->pCBfnc ))
8908 {
8909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 }
8914
8915 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8916 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8917 /*-------------------------------------------------------------------------
8918 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 -------------------------------------------------------------------------*/
8921 wpalMutexAcquire(&pWDICtx->wptMutex);
8922
8923 /*------------------------------------------------------------------------
8924 Find the BSS for which the request is made and identify WDI session
8925 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8927 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 &macBSSID))
8929 {
8930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8931 "This station does not exist in the WDI Station Table %d");
8932 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 }
8935
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8937 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8940 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8941 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008942
8943 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008946
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 /*------------------------------------------------------------------------
8948 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 ------------------------------------------------------------------------*/
8951 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8952 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8954 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8955 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008956
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 }
8961
8962
8963
8964 wpalMutexRelease(&pWDICtx->wptMutex);
8965 /*-----------------------------------------------------------------------
8966 Get message buffer
8967 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8970 &pSendBuffer, &usDataOffset, &usSendSize))||
8971 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8972 {
8973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8974 "Unable to get send buffer in set bss key req %x %x %x",
8975 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 }
8979
8980 /*-----------------------------------------------------------------------
8981 Copy the Key parameters into the HAL message
8982 -----------------------------------------------------------------------*/
8983
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8986
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8989
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8992
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8995
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 wpalMemoryCopy( pSendBuffer+usDataOffset,
8997 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8998 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008999
9000 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002
9003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009009
9010}/*WDI_ProcessRemoveSTAKeyReq*/
9011
9012/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009015
9016 @param pWDICtx: pointer to the WLAN DAL context
9017 pEventData: pointer to the event information structure
9018
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 @see
9020 @return Result of the function call
9021*/
9022WDI_Status
9023WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009024(
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 WDI_ControlBlockType* pWDICtx,
9026 WDI_EventInfoType* pEventData
9027)
9028{
9029 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9030 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9031 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 wpt_uint16 usDataOffset = 0;
9034 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9039 wpt_uint8 keyIndex = 0;
9040
9041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9042
9043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 -------------------------------------------------------------------------*/
9046 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9047 ( NULL == pEventData->pCBfnc ))
9048 {
9049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 }
9054
9055 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9056 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9057 /*-------------------------------------------------------------------------
9058 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 -------------------------------------------------------------------------*/
9061 wpalMutexAcquire(&pWDICtx->wptMutex);
9062
9063 /*------------------------------------------------------------------------
9064 Find the BSS for which the request is made and identify WDI session
9065 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9067 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 &macBSSID))
9069 {
9070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9071 "This station does not exist in the WDI Station Table %d");
9072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 }
9075
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9077 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 {
9079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9081 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009082
9083 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009086
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 /*------------------------------------------------------------------------
9088 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 ------------------------------------------------------------------------*/
9091 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9092 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9094 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9095 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009096
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 }
9101
9102
9103 wpalMutexRelease(&pWDICtx->wptMutex);
9104 /*-----------------------------------------------------------------------
9105 Get message buffer
9106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009108 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9109 &pSendBuffer, &usDataOffset, &usSendSize))||
9110 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9111 {
9112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9113 "Unable to get send buffer in set bss key req %x %x %x",
9114 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 }
9118 /*-----------------------------------------------------------------------
9119 Copy the STA Key parameters into the HAL message
9120 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9123
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9126
9127 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9128
9129 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9130
9131 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9132
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9134 keyIndex++)
9135 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9138 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9139 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9140 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9141 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9142 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9149 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 WDI_MAX_KEY_LENGTH);
9152 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009153
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 wpalMemoryCopy( pSendBuffer+usDataOffset,
9155 &halSetStaKeyReqMsg.setStaKeyParams,
9156 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009157
9158 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009160
9161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9165 wdiSetSTAKeyRspCb, pEventData->pUserData,
9166 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009167
9168}/*WDI_ProcessSetSTABcastKeyReq*/
9169
9170/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009173
9174 @param pWDICtx: pointer to the WLAN DAL context
9175 pEventData: pointer to the event information structure
9176
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 @see
9178 @return Result of the function call
9179*/
9180WDI_Status
9181WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009182(
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 WDI_ControlBlockType* pWDICtx,
9184 WDI_EventInfoType* pEventData
9185)
9186{
9187 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9188 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9189 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 wpt_uint16 usDataOffset = 0;
9192 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 wpt_macAddr macBSSID;
9195 wpt_uint8 ucCurrentBSSSesIdx;
9196 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9198
9199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 -------------------------------------------------------------------------*/
9202 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9203 ( NULL == pEventData->pCBfnc ))
9204 {
9205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 }
9210
9211 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9212 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9213 /*-------------------------------------------------------------------------
9214 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 -------------------------------------------------------------------------*/
9217 wpalMutexAcquire(&pWDICtx->wptMutex);
9218
9219 /*------------------------------------------------------------------------
9220 Find the BSS for which the request is made and identify WDI session
9221 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9223 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 &macBSSID))
9225 {
9226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9227 "This station does not exist in the WDI Station Table %d");
9228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 }
9231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9233 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9236 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9237 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009238
9239 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009242
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 /*------------------------------------------------------------------------
9244 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 ------------------------------------------------------------------------*/
9247 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9248 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9250 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9251 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009252
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 }
9257
9258
9259
9260 wpalMutexRelease(&pWDICtx->wptMutex);
9261 /*-----------------------------------------------------------------------
9262 Get message buffer
9263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9266 &pSendBuffer, &usDataOffset, &usSendSize))||
9267 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9268 {
9269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9270 "Unable to get send buffer in set bss key req %x %x %x",
9271 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 }
9275
9276 /*-----------------------------------------------------------------------
9277 Copy the Key parameters into the HAL message
9278 -----------------------------------------------------------------------*/
9279
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9282
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9285
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9288
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9291
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 wpalMemoryCopy( pSendBuffer+usDataOffset,
9293 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9294 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009295
9296 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009298
9299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009305
9306}/*WDI_ProcessRemoveSTABcastKeyReq*/
9307
9308/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009310==========================================================================*/
9311/**
9312 @brief Process Add TSpec Request function (called when Main FSM
9313 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009314
9315 @param pWDICtx: pointer to the WLAN DAL context
9316 pEventData: pointer to the event information structure
9317
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 @see
9319 @return Result of the function call
9320*/
9321WDI_Status
9322WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009323(
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 WDI_ControlBlockType* pWDICtx,
9325 WDI_EventInfoType* pEventData
9326)
9327{
9328 WDI_AddTSReqParamsType* pwdiAddTSParams;
9329 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 wpt_uint16 usDataOffset = 0;
9334 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 wpt_macAddr macBSSID;
9337 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009338
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9340
9341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 -------------------------------------------------------------------------*/
9344 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9345 ( NULL == pEventData->pCBfnc ))
9346 {
9347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 }
9352
9353 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9354 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9355 /*-------------------------------------------------------------------------
9356 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 -------------------------------------------------------------------------*/
9359 wpalMutexAcquire(&pWDICtx->wptMutex);
9360
9361 /*------------------------------------------------------------------------
9362 Find the BSS for which the request is made and identify WDI session
9363 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9365 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 &macBSSID))
9367 {
9368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9369 "This station does not exist in the WDI Station Table %d");
9370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 }
9373
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9375 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9378 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9379 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009380
9381 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009384
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 /*------------------------------------------------------------------------
9386 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 ------------------------------------------------------------------------*/
9389 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9390 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9392 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9393 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009394
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 }
9399
9400 wpalMutexRelease(&pWDICtx->wptMutex);
9401 /*-----------------------------------------------------------------------
9402 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9406 sizeof(halAddTsParams),
9407 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 &usSendSize))||
9409 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9410 {
9411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9412 "Unable to get send buffer in set bss key req %x %x %x",
9413 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 }
9417
9418 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9419 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9420
9421 //TSPEC IE
9422 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9423 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9454
9455 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9470
9471 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9476
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 wpalMemoryCopy( pSendBuffer+usDataOffset,
9478 &halAddTsParams,
9479 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
9481 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009490}/*WDI_ProcessAddTSpecReq*/
9491
9492
9493/**
9494 @brief Process Del TSpec Request function (called when Main FSM
9495 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009496
9497 @param pWDICtx: pointer to the WLAN DAL context
9498 pEventData: pointer to the event information structure
9499
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 @see
9501 @return Result of the function call
9502*/
9503WDI_Status
9504WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009505(
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_ControlBlockType* pWDICtx,
9507 WDI_EventInfoType* pEventData
9508)
9509{
9510 WDI_DelTSReqParamsType* pwdiDelTSParams;
9511 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009515 wpt_uint16 usDataOffset = 0;
9516 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9519
9520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 -------------------------------------------------------------------------*/
9523 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9524 ( NULL == pEventData->pCBfnc ))
9525 {
9526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 }
9531
9532 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9533 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9534
9535 /*-------------------------------------------------------------------------
9536 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 -------------------------------------------------------------------------*/
9539 wpalMutexAcquire(&pWDICtx->wptMutex);
9540
9541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9545 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9546 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009547
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9551 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9552 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9553
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 }
9557
9558 /*------------------------------------------------------------------------
9559 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 ------------------------------------------------------------------------*/
9562 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9563 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9565 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9566 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009567
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 }
9572
9573
9574 wpalMutexRelease(&pWDICtx->wptMutex);
9575 /*-----------------------------------------------------------------------
9576 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9581 &pSendBuffer, &usDataOffset, &usSendSize))||
9582 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9583 {
9584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9585 "Unable to get send buffer in set bss key req %x %x %x",
9586 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 }
9590
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 wpalMemoryCopy( pSendBuffer+usDataOffset,
9592 &pwdiDelTSParams->wdiDelTSInfo,
9593 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009594
9595 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009597
9598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9602 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009603}/*WDI_ProcessDelTSpecReq*/
9604
9605/**
9606 @brief Process Update EDCA Params Request function (called when
9607 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009608
9609 @param pWDICtx: pointer to the WLAN DAL context
9610 pEventData: pointer to the event information structure
9611
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 @see
9613 @return Result of the function call
9614*/
9615WDI_Status
9616WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009617(
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 WDI_ControlBlockType* pWDICtx,
9619 WDI_EventInfoType* pEventData
9620)
9621{
9622 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9623 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 wpt_uint16 usDataOffset = 0;
9628 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9631
9632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 -------------------------------------------------------------------------*/
9635 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9636 ( NULL == pEventData->pCBfnc ))
9637 {
9638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 }
9643
9644 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9645 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9646 /*-------------------------------------------------------------------------
9647 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 -------------------------------------------------------------------------*/
9650 wpalMutexAcquire(&pWDICtx->wptMutex);
9651
9652 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9656 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9657 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009658
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 {
9661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9663 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009664
9665 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 }
9668
9669 /*------------------------------------------------------------------------
9670 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 ------------------------------------------------------------------------*/
9673 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9674 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9676 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9677 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009678
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 }
9683
9684
9685 wpalMutexRelease(&pWDICtx->wptMutex);
9686 /*-----------------------------------------------------------------------
9687 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9692 &pSendBuffer, &usDataOffset, &usSendSize))||
9693 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9694 {
9695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9696 "Unable to get send buffer in set bss key req %x %x %x",
9697 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 }
9701
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 wpalMemoryCopy( pSendBuffer+usDataOffset,
9703 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9704 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009705
9706 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009708
9709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9713 wdiUpdateEDCARspCb, pEventData->pUserData,
9714 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009715}/*WDI_ProcessUpdateEDCAParamsReq*/
9716
9717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009720
9721 @param pWDICtx: pointer to the WLAN DAL context
9722 pEventData: pointer to the event information structure
9723
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 @see
9725 @return Result of the function call
9726*/
9727WDI_Status
9728WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009729(
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 WDI_ControlBlockType* pWDICtx,
9731 WDI_EventInfoType* pEventData
9732)
9733{
9734 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9735 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 wpt_uint16 usDataOffset = 0;
9740 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 wpt_macAddr macBSSID;
9743
9744 tAddBASessionReqMsg halAddBASessionReq;
9745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9746
9747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 -------------------------------------------------------------------------*/
9750 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9751 ( NULL == pEventData->pCBfnc ))
9752 {
9753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 }
9758
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009760 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009762 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9763 /*-------------------------------------------------------------------------
9764 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 -------------------------------------------------------------------------*/
9767 wpalMutexAcquire(&pWDICtx->wptMutex);
9768
9769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9773 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 &macBSSID))
9775 {
9776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9777 "This station does not exist in the WDI Station Table %d");
9778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 }
9781
9782
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009784
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009786 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9788 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9789 __func__, MAC_ADDR_ARRAY(macBSSID));
9790
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 }
9794
9795 /*------------------------------------------------------------------------
9796 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 ------------------------------------------------------------------------*/
9799 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9800 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9802 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9803 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009804
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009808 }
9809
9810
9811 wpalMutexRelease(&pWDICtx->wptMutex);
9812 /*-----------------------------------------------------------------------
9813 Get message buffer
9814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9816 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 sizeof(halAddBASessionReq.addBASessionParams),
9818 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9821 {
9822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9823 "Unable to get send buffer in Add BA session req %x %x %x",
9824 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 }
9828
9829 halAddBASessionReq.addBASessionParams.staIdx =
9830 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9831 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9832 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9833 WDI_MAC_ADDR_LEN);
9834 halAddBASessionReq.addBASessionParams.baTID =
9835 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9836 halAddBASessionReq.addBASessionParams.baPolicy =
9837 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9838 halAddBASessionReq.addBASessionParams.baBufferSize =
9839 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9840 halAddBASessionReq.addBASessionParams.baTimeout =
9841 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9842 halAddBASessionReq.addBASessionParams.baSSN =
9843 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9844 halAddBASessionReq.addBASessionParams.baDirection =
9845 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9846
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 wpalMemoryCopy( pSendBuffer+usDataOffset,
9848 &halAddBASessionReq.addBASessionParams,
9849 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009850
9851 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009853
9854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9858 wdiAddBASessionRspCb, pEventData->pUserData,
9859 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009860}/*WDI_ProcessAddBASessionReq*/
9861
9862/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009865
9866 @param pWDICtx: pointer to the WLAN DAL context
9867 pEventData: pointer to the event information structure
9868
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 @see
9870 @return Result of the function call
9871*/
9872WDI_Status
9873WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009874(
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 WDI_ControlBlockType* pWDICtx,
9876 WDI_EventInfoType* pEventData
9877)
9878{
9879 WDI_DelBAReqParamsType* pwdiDelBAParams;
9880 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 wpt_uint16 usDataOffset = 0;
9885 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 wpt_macAddr macBSSID;
9888 tDelBAParams halDelBAparam;
9889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9890
9891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 -------------------------------------------------------------------------*/
9894 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9895 ( NULL == pEventData->pCBfnc ))
9896 {
9897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 }
9902
9903 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9904 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9905 /*-------------------------------------------------------------------------
9906 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 -------------------------------------------------------------------------*/
9909 wpalMutexAcquire(&pWDICtx->wptMutex);
9910
9911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9915 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 &macBSSID))
9917 {
9918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9919 "This station does not exist in the WDI Station Table %d");
9920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 }
9923
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009925
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9929 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9930 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009931
9932 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 }
9935
9936 /*------------------------------------------------------------------------
9937 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 ------------------------------------------------------------------------*/
9940 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9941 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9943 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9944 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009945
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 }
9950
9951 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 sizeof(halDelBAparam),
9954 &pSendBuffer, &usDataOffset, &usSendSize))||
9955 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9956 {
9957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9958 "Unable to get send buffer for DEL BA req %x %x %x",
9959 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 }
9963
9964 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9965 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9966 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9967
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 wpalMemoryCopy( pSendBuffer+usDataOffset,
9969 &halDelBAparam,
9970 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009971
9972 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974
9975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9979 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009980}/*WDI_ProcessDelBAReq*/
9981
9982#ifdef FEATURE_WLAN_CCX
9983
9984WDI_Status
9985WDI_ProcessTSMStatsReq
9986(
9987 WDI_ControlBlockType* pWDICtx,
9988 WDI_EventInfoType* pEventData
9989)
9990{
9991 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9992 WDI_TsmRspCb wdiTSMRspCb;
9993 wpt_uint8 ucCurrentBSSSesIdx = 0;
9994 WDI_BSSSessionType* pBSSSes = NULL;
9995 wpt_uint8* pSendBuffer = NULL;
9996 wpt_uint16 usDataOffset = 0;
9997 wpt_uint16 usSendSize = 0;
9998 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9999 tTsmStatsParams halTsmStatsReqParams = {0};
10000
10001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10002
10003 /*-------------------------------------------------------------------------
10004 Sanity check
10005 -------------------------------------------------------------------------*/
10006 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10007 ( NULL == pEventData->pCBfnc ))
10008 {
10009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 WDI_ASSERT(0);
10012 return WDI_STATUS_E_FAILURE;
10013 }
10014
10015 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10016 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10017 /*-------------------------------------------------------------------------
10018 Check to see if we are in the middle of an association, if so queue, if
10019 not it means it is free to process request
10020 -------------------------------------------------------------------------*/
10021 wpalMutexAcquire(&pWDICtx->wptMutex);
10022
10023 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10024 if ( NULL == pBSSSes )
10025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10027 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10028 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
10030 wpalMutexRelease(&pWDICtx->wptMutex);
10031 return WDI_STATUS_E_NOT_ALLOWED;
10032 }
10033
10034 /*------------------------------------------------------------------------
10035 Check if this BSS is being currently processed or queued,
10036 if queued - queue the new request as well
10037 ------------------------------------------------------------------------*/
10038 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10039 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10042 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
10044 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10045 wpalMutexRelease(&pWDICtx->wptMutex);
10046 return wdiStatus;
10047 }
10048
10049 wpalMutexRelease(&pWDICtx->wptMutex);
10050 /*-----------------------------------------------------------------------
10051 Get message buffer
10052 ! TO DO : proper conversion into the HAL Message Request Format
10053 -----------------------------------------------------------------------*/
10054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10055 sizeof(halTsmStatsReqParams),
10056 &pSendBuffer, &usDataOffset, &usSendSize))||
10057 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10058 {
10059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10060 "Unable to get send buffer in set bss key req %x %x %x",
10061 pEventData, pwdiTSMParams, wdiTSMRspCb);
10062 WDI_ASSERT(0);
10063 return WDI_STATUS_E_FAILURE;
10064 }
10065
10066 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10067 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10068 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10069 WDI_MAC_ADDR_LEN);
10070 wpalMemoryCopy( pSendBuffer+usDataOffset,
10071 &halTsmStatsReqParams,
10072 sizeof(halTsmStatsReqParams));
10073
10074 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10075 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10076
10077 /*-------------------------------------------------------------------------
10078 Send TSM Stats Request to HAL
10079 -------------------------------------------------------------------------*/
10080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10081 wdiTSMRspCb, pEventData->pUserData,
10082 WDI_TSM_STATS_RESP);
10083}/*WDI_ProcessTSMStatsReq*/
10084
10085#endif
10086
10087
10088/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010091
10092 @param pWDICtx: pointer to the WLAN DAL context
10093 pEventData: pointer to the event information structure
10094
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 @see
10096 @return Result of the function call
10097*/
10098WDI_Status
10099WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010100(
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 WDI_ControlBlockType* pWDICtx,
10102 WDI_EventInfoType* pEventData
10103)
10104{
10105 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10106 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 wpt_uint16 usDataOffset = 0;
10109 wpt_uint16 usSendSize = 0;
10110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10111
10112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 -------------------------------------------------------------------------*/
10115 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10116 ( NULL == pEventData->pCBfnc ))
10117 {
10118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 }
10123
10124 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10125 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10126 /*-----------------------------------------------------------------------
10127 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10132 &pSendBuffer, &usDataOffset, &usSendSize))||
10133 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10134 {
10135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10136 "Unable to get send buffer in set bss key req %x %x %x",
10137 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 }
10141
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 wpalMemoryCopy( pSendBuffer+usDataOffset,
10143 &pwdiFlushAcParams->wdiFlushAcInfo,
10144 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010145
10146 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010147 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010148
10149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10153 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010154}/*WDI_ProcessFlushAcReq*/
10155
10156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010159
10160 @param pWDICtx: pointer to the WLAN DAL context
10161 pEventData: pointer to the event information structure
10162
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 @see
10164 @return Result of the function call
10165*/
10166WDI_Status
10167WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010168(
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 WDI_ControlBlockType* pWDICtx,
10170 WDI_EventInfoType* pEventData
10171)
10172{
10173 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10174 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 wpt_uint16 usDataOffset = 0;
10177 wpt_uint16 usSendSize = 0;
10178
10179 tBtAmpEventMsg haltBtAmpEventMsg;
10180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10181
10182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 -------------------------------------------------------------------------*/
10185 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10186 ( NULL == pEventData->pCBfnc ))
10187 {
10188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 }
10193
10194 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10195 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10196 /*-----------------------------------------------------------------------
10197 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10202 &pSendBuffer, &usDataOffset, &usSendSize))||
10203 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10204 {
10205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10206 "Unable to get send buffer in BT AMP event req %x %x %x",
10207 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 }
10211
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 wpalMemoryCopy( pSendBuffer+usDataOffset,
10215 &haltBtAmpEventMsg.btAmpEventParams,
10216 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010217
10218 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220
10221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10225 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010226}/*WDI_ProcessBtAmpEventReq*/
10227
10228/**
10229 @brief Process Add STA self Request function (called when Main FSM
10230 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010231
10232 @param pWDICtx: pointer to the WLAN DAL context
10233 pEventData: pointer to the event information structure
10234
Jeff Johnson295189b2012-06-20 16:38:30 -070010235 @see
10236 @return Result of the function call
10237*/
10238WDI_Status
10239WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010240(
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 WDI_ControlBlockType* pWDICtx,
10242 WDI_EventInfoType* pEventData
10243)
10244{
10245 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10246 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 wpt_uint16 usDataOffset = 0;
10249 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010250 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10252
10253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 -------------------------------------------------------------------------*/
10256 if (( NULL == pEventData ) ||
10257 ( NULL == pEventData->pEventData) ||
10258 ( NULL == pEventData->pCBfnc))
10259 {
10260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 }
10265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10270 /*-----------------------------------------------------------------------
10271 Get message buffer
10272 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10274 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010275 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010277 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 {
10279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10280 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10281 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 }
10285
10286 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10289
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010291 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10292 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10293 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10294 {
10295 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10296 }
10297 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10298 VOS_P2P_CLIENT_MODE) ||
10299 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10300 VOS_P2P_DEVICE))
10301 {
10302 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10303 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010305 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010306
10307 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010309
10310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10314 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10315 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010316}/*WDI_ProcessAddSTASelfReq*/
10317
10318
10319
10320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010323
10324 @param pWDICtx: pointer to the WLAN DAL context
10325 pEventData: pointer to the event information structure
10326
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 @see
10328 @return Result of the function call
10329*/
10330WDI_Status
10331WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010332(
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 WDI_ControlBlockType* pWDICtx,
10334 WDI_EventInfoType* pEventData
10335)
10336{
10337 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10338 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 wpt_uint16 usDataOffset = 0;
10341 wpt_uint16 usSendSize = 0;
10342 tDelStaSelfParams halSetDelSelfSTAParams;
10343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10344
10345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 -------------------------------------------------------------------------*/
10348 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10349 ( NULL == pEventData->pCBfnc ))
10350 {
10351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 }
10356
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10359 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10360
10361 /*-----------------------------------------------------------------------
10362 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10367 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10370 {
10371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10372 "Unable to get send buffer in Del Sta Self req %x %x %x",
10373 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 }
10377
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10380
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10382 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010383
10384 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386
10387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10391 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 WDI_DEL_STA_SELF_RESP);
10393
10394}
10395
Jeff Johnsone7245742012-09-05 17:12:55 -070010396#ifdef FEATURE_OEM_DATA_SUPPORT
10397/**
10398 @brief Process Start Oem Data Request function (called when Main
10399 FSM allows it)
10400
10401 @param pWDICtx: pointer to the WLAN DAL context
10402 pEventData: pointer to the event information structure
10403
10404 @see
10405 @return Result of the function call
10406*/
10407WDI_Status
10408WDI_ProcessStartOemDataReq
10409(
10410 WDI_ControlBlockType* pWDICtx,
10411 WDI_EventInfoType* pEventData
10412)
10413{
10414 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10415 WDI_oemDataRspCb wdiOemDataRspCb;
10416 wpt_uint8* pSendBuffer = NULL;
10417 wpt_uint16 usDataOffset = 0;
10418 wpt_uint16 usSendSize = 0;
10419 wpt_uint16 reqLen;
10420 tStartOemDataReqParams* halStartOemDataReqParams;
10421
10422 /*-------------------------------------------------------------------------
10423 Sanity check
10424 -------------------------------------------------------------------------*/
10425 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10426 ( NULL == pEventData->pCBfnc ))
10427 {
10428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010429 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 WDI_ASSERT(0);
10431 return WDI_STATUS_E_FAILURE;
10432 }
10433
10434 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10435 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10436
10437 /*-----------------------------------------------------------------------
10438 Get message buffer
10439 -----------------------------------------------------------------------*/
10440
10441 reqLen = sizeof(tStartOemDataReqParams);
10442
10443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10444 WDI_START_OEM_DATA_REQ, reqLen,
10445 &pSendBuffer, &usDataOffset, &usSendSize))||
10446 (usSendSize < (usDataOffset + reqLen)))
10447 {
10448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10449 "Unable to get send buffer in Start Oem Data req %x %x %x",
10450 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10451 WDI_ASSERT(0);
10452 return WDI_STATUS_E_FAILURE;
10453 }
10454
10455 //copying WDI OEM DATA REQ PARAMS to shared memory
10456 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10457
10458 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10459 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10460
10461 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10462 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10463
10464 /*-------------------------------------------------------------------------
10465 Send Start Request to HAL
10466 -------------------------------------------------------------------------*/
10467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10468 wdiOemDataRspCb, pEventData->pUserData,
10469 WDI_START_OEM_DATA_RESP);
10470}/*WDI_ProcessStartOemDataReq*/
10471#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010472
10473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010476
10477 @param pWDICtx: pointer to the WLAN DAL context
10478 pEventData: pointer to the event information structure
10479
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 @see
10481 @return Result of the function call
10482*/
10483WDI_Status
10484WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010485(
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 WDI_ControlBlockType* pWDICtx,
10487 WDI_EventInfoType* pEventData
10488)
10489{
10490 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10491 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 wpt_uint16 usDataOffset = 0;
10494 wpt_uint16 usSendSize = 0;
10495 tHalWlanHostResumeReqParam halResumeReqParams;
10496
10497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10498
10499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 -------------------------------------------------------------------------*/
10502 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10503 ( NULL == pEventData->pCBfnc ))
10504 {
10505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010506 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 }
10510
10511 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10512 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10513
10514 /*-----------------------------------------------------------------------
10515 Get message buffer
10516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10519 &pSendBuffer, &usDataOffset, &usSendSize))||
10520 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10521 {
10522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 }
10528
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010531
10532 wpalMemoryCopy( pSendBuffer+usDataOffset,
10533 &halResumeReqParams,
10534 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
10536 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538
10539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10543 wdiHostResumeRspCb, pEventData->pUserData,
10544 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010545}/*WDI_ProcessHostResumeReq*/
10546
10547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010550
10551 @param pWDICtx: pointer to the WLAN DAL context
10552 pEventData: pointer to the event information structure
10553
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 @see
10555 @return Result of the function call
10556*/
10557WDI_Status
10558WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010559(
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 WDI_ControlBlockType* pWDICtx,
10561 WDI_EventInfoType* pEventData
10562)
10563{
10564 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10565 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 wpt_uint16 usDataOffset = 0;
10568 wpt_uint16 usSendSize = 0;
10569 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10571
10572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 -------------------------------------------------------------------------*/
10575 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10576 ( NULL == pEventData->pCBfnc ))
10577 {
10578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010579 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 }
10583
10584 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10585 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010586
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 /*-----------------------------------------------------------------------
10588 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 sizeof(halTxPerTrackingReqParam),
10593 &pSendBuffer, &usDataOffset, &usSendSize))||
10594 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10595 {
10596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10597 "Unable to get send buffer in set tx per tracking req %x %x %x",
10598 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010602
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10604 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10605 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10606 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010607
10608 wpalMemoryCopy( pSendBuffer+usDataOffset,
10609 &halTxPerTrackingReqParam,
10610 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614
10615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10619 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010620}/*WDI_ProcessSetTxPerTrackingReq*/
10621
10622/*=========================================================================
10623 Indications
10624=========================================================================*/
10625
10626/**
10627 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010628
10629 @param pWDICtx: pointer to the WLAN DAL context
10630 pEventData: pointer to the event information structure
10631
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 @see
10633 @return Result of the function call
10634*/
10635WDI_Status
10636WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010637(
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 WDI_ControlBlockType* pWDICtx,
10639 WDI_EventInfoType* pEventData
10640)
10641{
10642 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 wpt_uint16 usDataOffset = 0;
10645 wpt_uint16 usSendSize = 0;
10646 WDI_Status wdiStatus;
10647 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10649
10650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -------------------------------------------------------------------------*/
10653 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10654 {
10655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010656 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 }
10660
10661 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10662
10663 /*-----------------------------------------------------------------------
10664 Get message buffer
10665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10667 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 sizeof(halWlanSuspendIndparams),
10669 &pSendBuffer, &usDataOffset, &usSendSize))||
10670 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10671 {
10672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10673 "Unable to get send buffer in Suspend Ind ");
10674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 }
10677
10678 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10679 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10680
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010682 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010683
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10685 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010686
10687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 -------------------------------------------------------------------------*/
10690 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010692
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10695}/*WDI_ProcessHostSuspendInd*/
10696
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010697
10698
10699/**
10700 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10701
10702 @param pWDICtx: pointer to the WLAN DAL context
10703 pEventData: pointer to the event information structure
10704
10705 @see
10706 @return Result of the function call
10707*/
10708WDI_Status
10709WDI_ProcessTrafficStatsInd
10710(
10711 WDI_ControlBlockType* pWDICtx,
10712 WDI_EventInfoType* pEventData
10713)
10714{
10715 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10716 wpt_uint8* pSendBuffer = NULL;
10717 wpt_uint16 usDataOffset = 0;
10718 wpt_uint16 usSendSize = 0;
10719 WDI_Status wdiStatus;
10720 tStatsClassBIndParams* pStatsClassBIndParams;
10721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10722
10723 /*-------------------------------------------------------------------------
10724 Sanity check
10725 -------------------------------------------------------------------------*/
10726 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10727 {
10728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10729 "%s: Invalid parameters in Traffic Stats ind",__func__);
10730 WDI_ASSERT(0);
10731 return WDI_STATUS_E_FAILURE;
10732 }
10733
10734 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10735
10736 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10737 {
10738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10739 "%s: Invalid parameters in Traffic Stats ind",__func__);
10740 WDI_ASSERT(0);
10741 return WDI_STATUS_E_FAILURE;
10742 }
10743
10744 /*-----------------------------------------------------------------------
10745 Get message buffer
10746 -----------------------------------------------------------------------*/
10747 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10748 WDI_TRAFFIC_STATS_IND,
10749 sizeof(tStatsClassBIndParams),
10750 &pSendBuffer, &usDataOffset, &usSendSize))||
10751 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10752 {
10753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10754 "Unable to get send buffer in Traffic Stats Ind ");
10755 WDI_ASSERT(0);
10756 return WDI_STATUS_E_FAILURE;
10757 }
10758
10759 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10760
10761 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10762
10763 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10764 pTrafficStatsIndParams->pTrafficStats,
10765 pTrafficStatsIndParams->length);
10766
10767 /*-------------------------------------------------------------------------
10768 Send Suspend Request to HAL
10769 -------------------------------------------------------------------------*/
10770 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10771 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10772
10773 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10774 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10775}/*WDI_ProcessTrafficStatsInd*/
10776
Chet Lanctota96bb432013-03-18 10:26:30 -070010777#ifdef WLAN_FEATURE_11W
10778/**
10779 @brief Process Exclude Unencrypted Indications function (called
10780 when Main FSM allows it)
10781
10782 @param pWDICtx: pointer to the WLAN DAL context
10783 pEventData: pointer to the event information structure
10784
10785 @see
10786 @return Result of the function call
10787*/
10788WDI_Status
10789WDI_ProcessExcludeUnencryptInd
10790(
10791 WDI_ControlBlockType* pWDICtx,
10792 WDI_EventInfoType* pEventData
10793)
10794{
10795 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10796 wpt_uint8* pSendBuffer = NULL;
10797 wpt_uint16 usDataOffset = 0;
10798 wpt_uint16 usSendSize = 0;
10799 WDI_Status wdiStatus;
10800 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10802
10803 /*-------------------------------------------------------------------------
10804 Sanity check
10805 -------------------------------------------------------------------------*/
10806 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10807 {
10808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10809 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10810 WDI_ASSERT(0);
10811 return WDI_STATUS_E_FAILURE;
10812 }
10813
10814 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10815
10816 /*-----------------------------------------------------------------------
10817 Get message buffer
10818 -----------------------------------------------------------------------*/
10819 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10820 WDI_EXCLUDE_UNENCRYPTED_IND,
10821 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10822 &pSendBuffer, &usDataOffset, &usSendSize))||
10823 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10824 {
10825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10826 "Unable to get send buffer in Exclude Unencrypted Ind ");
10827 WDI_ASSERT(0);
10828 return WDI_STATUS_E_FAILURE;
10829 }
10830
10831 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10832
10833 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10834
10835 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10836 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10837
10838 /*-------------------------------------------------------------------------
10839 Send Suspend Request to HAL
10840 -------------------------------------------------------------------------*/
10841 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10842 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10843
10844 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10845 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10846}/*WDI_ProcessExcludeUnencryptInd*/
10847#endif
10848
Jeff Johnson295189b2012-06-20 16:38:30 -070010849/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010851==========================================================================*/
10852/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010855
10856 @param pWDICtx: pointer to the WLAN DAL context
10857 pEventData: pointer to the event information structure
10858
Jeff Johnson295189b2012-06-20 16:38:30 -070010859 @see
10860 @return Result of the function call
10861*/
10862WDI_Status
10863WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010864(
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 WDI_ControlBlockType* pWDICtx,
10866 WDI_EventInfoType* pEventData
10867)
10868{
10869 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10870 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 wpt_uint16 usDataOffset = 0;
10873 wpt_uint16 usSendSize = 0;
10874 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10876
10877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 -------------------------------------------------------------------------*/
10880 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10881 ( NULL == pEventData->pCBfnc ))
10882 {
10883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 }
10888
10889 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10890 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10891 /*-----------------------------------------------------------------------
10892 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 sizeof(halSwitchChannelReq.switchChannelParams),
10897 &pSendBuffer, &usDataOffset, &usSendSize))||
10898 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10899 {
10900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10901 "Unable to get send buffer in channel switch req %x %x %x",
10902 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 }
10906
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010909#ifndef WLAN_FEATURE_VOWIFI
10910 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10912#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10915
10916#ifdef WLAN_FEATURE_VOWIFI
10917 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10920 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10921 WDI_MAC_ADDR_LEN);
10922 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10923 pwdiSwitchChParams->wdiChInfo.macBSSId,
10924 WDI_MAC_ADDR_LEN);
10925#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 wpalMemoryCopy( pSendBuffer+usDataOffset,
10927 &halSwitchChannelReq.switchChannelParams,
10928 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010929
10930 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
10933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10937 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010938}/*WDI_ProcessChannelSwitchReq*/
10939
10940/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010943
10944 @param pWDICtx: pointer to the WLAN DAL context
10945 pEventData: pointer to the event information structure
10946
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 @see
10948 @return Result of the function call
10949*/
10950WDI_Status
10951WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010952(
Jeff Johnson295189b2012-06-20 16:38:30 -070010953 WDI_ControlBlockType* pWDICtx,
10954 WDI_EventInfoType* pEventData
10955)
10956{
10957 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10958 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 wpt_uint16 usDataOffset = 0;
10963 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010965
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 tConfigStaReqMsg halConfigStaReqMsg;
10967 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10969
10970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 -------------------------------------------------------------------------*/
10973 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10974 ( NULL == pEventData->pCBfnc ))
10975 {
10976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 }
10981
10982 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10983 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10984 /*-------------------------------------------------------------------------
10985 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 -------------------------------------------------------------------------*/
10988 wpalMutexAcquire(&pWDICtx->wptMutex);
10989
10990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10994 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10995 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010996
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11000 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11001 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011002
11003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011005 }
11006
11007 /*------------------------------------------------------------------------
11008 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011009 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 ------------------------------------------------------------------------*/
11011 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11012 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11014 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11015 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011016
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011019 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 }
11021
11022 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011023
11024 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11025#ifdef WLAN_FEATURE_11AC
11026 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011027 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011028 else
11029#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011030 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011031
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 /*-----------------------------------------------------------------------
11033 Get message buffer
11034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11036 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 {
11040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11041 "Unable to get send buffer in config sta req %x %x %x",
11042 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 }
11046
11047 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 &pwdiConfigSTAParams->wdiReqInfo);
11050
11051 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11052 {
11053 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 WDI_STATableFindStaidByAddr(pWDICtx,
11056 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 {
11059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11060 "This station does not exist in the WDI Station Table %d");
11061 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011062 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 }
11065 }
11066 else
11067 {
11068 /* Need to fill in the STA Index to invalid, since at this point we have not
11069 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011070 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 }
11072
11073 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011075
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 wpalMemoryCopy( pSendBuffer+usDataOffset,
11077 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011078 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011079
11080 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011082
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11084 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 sizeof(pWDICtx->wdiCachedConfigStaReq));
11086
11087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11091 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011092}/*WDI_ProcessConfigStaReq*/
11093
11094
11095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011098
11099 @param pWDICtx: pointer to the WLAN DAL context
11100 pEventData: pointer to the event information structure
11101
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 @see
11103 @return Result of the function call
11104*/
11105WDI_Status
11106WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011107(
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 WDI_ControlBlockType* pWDICtx,
11109 WDI_EventInfoType* pEventData
11110)
11111{
11112 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11113 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011114 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 wpt_uint16 usDataOffset = 0;
11118 wpt_uint16 usSendSize = 0;
11119 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11122
11123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 -------------------------------------------------------------------------*/
11126 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11127 ( NULL == pEventData->pCBfnc ))
11128 {
11129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 }
11134
11135 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11136 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11137 /*-------------------------------------------------------------------------
11138 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 -------------------------------------------------------------------------*/
11141 wpalMutexAcquire(&pWDICtx->wptMutex);
11142
11143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11147 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11148 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011149
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11154 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 }
11156 else
11157 {
11158 /*------------------------------------------------------------------------
11159 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 ------------------------------------------------------------------------*/
11162 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11163 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11165 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11166 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11167
11168 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 }
11172 }
11173 /* If the link is set to enter IDLE - the Session allocated for this BSS
11174 will be deleted on the Set Link State response coming from HAL
11175 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11178
11179 wpalMutexRelease(&pWDICtx->wptMutex);
11180 /*-----------------------------------------------------------------------
11181 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011184
11185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 sizeof(halLinkStateReqMsg),
11187 &pSendBuffer, &usDataOffset, &usSendSize))||
11188 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11189 {
11190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11191 "Unable to get send buffer in set bss key req %x %x %x",
11192 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 }
11196
11197 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11198 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11199
11200 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11201 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11202
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11205
Jeff Johnsone7245742012-09-05 17:12:55 -070011206 wpalMemoryCopy( pSendBuffer+usDataOffset,
11207 &halLinkStateReqMsg,
11208 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011209
11210 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011212
11213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11217 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011218}/*WDI_ProcessSetLinkStateReq*/
11219
11220
11221/**
11222 @brief Process Get Stats Request function (called when Main FSM
11223 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011224
11225 @param pWDICtx: pointer to the WLAN DAL context
11226 pEventData: pointer to the event information structure
11227
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 @see
11229 @return Result of the function call
11230*/
11231WDI_Status
11232WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011233(
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 WDI_ControlBlockType* pWDICtx,
11235 WDI_EventInfoType* pEventData
11236)
11237{
11238 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11239 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011241 wpt_uint16 usDataOffset = 0;
11242 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 WDI_BSSSessionType* pBSSSes = NULL;
11245 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 tHalStatsReqMsg halStatsReqMsg;
11248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11249
11250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 -------------------------------------------------------------------------*/
11253 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11254 ( NULL == pEventData->pCBfnc ) )
11255 {
11256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 }
11261
11262 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11263 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11264
11265 /*-------------------------------------------------------------------------
11266 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 -------------------------------------------------------------------------*/
11269 wpalMutexAcquire(&pWDICtx->wptMutex);
11270
11271 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11275 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 &macBSSID))
11277 {
11278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11279 "This station does not exist in the WDI Station Table %d");
11280 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 }
11283
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11285 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11288 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11289 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011290
11291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 }
11294
11295 /*------------------------------------------------------------------------
11296 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 ------------------------------------------------------------------------*/
11299 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11300 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11302 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11303 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011304
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 }
11309
11310
11311 wpalMutexRelease(&pWDICtx->wptMutex);
11312
11313 /*-----------------------------------------------------------------------
11314 Get message buffer
11315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 sizeof(halStatsReqMsg.statsReqParams),
11318 &pSendBuffer, &usDataOffset, &usSendSize))||
11319 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11320 {
11321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11322 "Unable to get send buffer in set bss key req %x %x %x",
11323 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 }
11327
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 wpalMemoryCopy( pSendBuffer+usDataOffset,
11333 &halStatsReqMsg.statsReqParams,
11334 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011335
11336 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011338
11339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11343 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011344}/*WDI_ProcessGetStatsReq*/
11345
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011346#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11347/**
11348 @brief Process Get Roam Rssi Request function (called when Main FSM
11349 allows it)
11350
11351 @param pWDICtx: pointer to the WLAN DAL context
11352 pEventData: pointer to the event information structure
11353
11354 @see
11355 @return Result of the function call
11356*/
11357WDI_Status
11358WDI_ProcessGetRoamRssiReq
11359(
11360 WDI_ControlBlockType* pWDICtx,
11361 WDI_EventInfoType* pEventData
11362)
11363{
11364 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11365 WDI_GetStatsRspCb wdiGetStatsRspCb;
11366 wpt_uint8* pSendBuffer = NULL;
11367 wpt_uint16 usDataOffset = 0;
11368 wpt_uint16 usSendSize = 0;
11369 wpt_uint8 ucCurrentBSSSesIdx = 0;
11370 WDI_BSSSessionType* pBSSSes = NULL;
11371 wpt_macAddr macBSSID;
11372 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11373 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11375 /*-------------------------------------------------------------------------
11376 Sanity check
11377 -------------------------------------------------------------------------*/
11378 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11379 ( NULL == pEventData->pCBfnc ) )
11380 {
11381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11382 "%s: Invalid parameters", __func__);
11383 WDI_ASSERT(0);
11384 return WDI_STATUS_E_FAILURE;
11385 }
11386
11387 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11388 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11389
11390 /*-------------------------------------------------------------------------
11391 Check to see if we are in the middle of an association, if so queue, if
11392 not it means it is free to process request
11393 -------------------------------------------------------------------------*/
11394 wpalMutexAcquire(&pWDICtx->wptMutex);
11395
11396 /*------------------------------------------------------------------------
11397 Find the BSS for which the request is made
11398 ------------------------------------------------------------------------*/
11399 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11400 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11401 &macBSSID))
11402 {
11403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11404 "This station does not exist in the WDI Station Table %d");
11405 wpalMutexRelease(&pWDICtx->wptMutex);
11406 return WDI_STATUS_E_FAILURE;
11407 }
11408
11409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11410 if ( NULL == pBSSSes )
11411 {
11412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11413 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11414 __func__, MAC_ADDR_ARRAY(macBSSID));
11415
11416 wpalMutexRelease(&pWDICtx->wptMutex);
11417 return WDI_STATUS_E_NOT_ALLOWED;
11418 }
11419
11420 /*------------------------------------------------------------------------
11421 Check if this BSS is being currently processed or queued,
11422 if queued - queue the new request as well
11423 ------------------------------------------------------------------------*/
11424 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11425 {
11426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11427 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11428 __func__, MAC_ADDR_ARRAY(macBSSID));
11429
11430 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11431 wpalMutexRelease(&pWDICtx->wptMutex);
11432 return wdiStatus;
11433 }
11434
11435 wpalMutexRelease(&pWDICtx->wptMutex);
11436
11437 /*-----------------------------------------------------------------------
11438 Get message buffer
11439 -----------------------------------------------------------------------*/
11440 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11441 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11442 &pSendBuffer, &usDataOffset, &usSendSize))||
11443 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11444 {
11445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11446 "Unable to get send buffer in set bss key req %x %x %x",
11447 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11448 WDI_ASSERT(0);
11449 return WDI_STATUS_E_FAILURE;
11450 }
11451
11452 halRssiRoamReqMsg.roamRssiReqParams.staId =
11453 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11454 wpalMemoryCopy( pSendBuffer+usDataOffset,
11455 &halRssiRoamReqMsg.roamRssiReqParams,
11456 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11457
11458 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11459 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11460
11461 /*-------------------------------------------------------------------------
11462 Send Get STA Request to HAL
11463 -------------------------------------------------------------------------*/
11464 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11465 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11466}/*WDI_ProcessGetRoamRssiReq*/
11467#endif
11468
Jeff Johnson295189b2012-06-20 16:38:30 -070011469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011472
11473 @param pWDICtx: pointer to the WLAN DAL context
11474 pEventData: pointer to the event information structure
11475
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 @see
11477 @return Result of the function call
11478*/
11479WDI_Status
11480WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011481(
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 WDI_ControlBlockType* pWDICtx,
11483 WDI_EventInfoType* pEventData
11484)
11485{
11486 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11487 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11488
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 wpt_uint16 usDataOffset = 0;
11491 wpt_uint16 usSendSize = 0;
11492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11493
11494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 -------------------------------------------------------------------------*/
11497 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11498 ( NULL == pEventData->pCBfnc))
11499 {
11500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 }
11505
11506 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11507 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11508
11509 /*-----------------------------------------------------------------------
11510 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 -----------------------------------------------------------------------*/
11513
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11516 &pSendBuffer, &usDataOffset, &usSendSize))||
11517 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11518 {
11519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11520 "Unable to get send buffer in set bss key req %x %x %x",
11521 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 }
11525
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 wpalMemoryCopy( pSendBuffer+usDataOffset,
11527 &pwdiUpdateCfgParams->uConfigBufferLen,
11528 sizeof(wpt_uint32));
11529 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11530 pwdiUpdateCfgParams->pConfigBuffer,
11531 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011532
11533 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011535
11536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 -------------------------------------------------------------------------*/
11539
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11541 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011542
11543}/*WDI_ProcessUpdateCfgReq*/
11544
11545
11546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011549
11550 @param pWDICtx: pointer to the WLAN DAL context
11551 pEventData: pointer to the event information structure
11552
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 @see
11554 @return Result of the function call
11555*/
11556WDI_Status
11557WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011558(
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 WDI_ControlBlockType* pWDICtx,
11560 WDI_EventInfoType* pEventData
11561)
11562{
11563 WDI_AddBAReqParamsType* pwdiAddBAParams;
11564 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 wpt_uint16 usDataOffset = 0;
11569 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 wpt_macAddr macBSSID;
11572
11573 tAddBAReqMsg halAddBAReq;
11574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11575
11576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 -------------------------------------------------------------------------*/
11579 if (( NULL == pEventData ) ||
11580 ( NULL == pEventData->pEventData) ||
11581 ( NULL == pEventData->pCBfnc ))
11582 {
11583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 }
11588
11589 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11590 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11591
11592 /*-------------------------------------------------------------------------
11593 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 -------------------------------------------------------------------------*/
11596 wpalMutexAcquire(&pWDICtx->wptMutex);
11597
11598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011601 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11602 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 &macBSSID))
11604 {
11605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11606 "This station does not exist in the WDI Station Table %d");
11607 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 }
11610
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11612 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11615 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11616 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011617
11618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 }
11621
11622 /*------------------------------------------------------------------------
11623 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 ------------------------------------------------------------------------*/
11626 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11627 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11629 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11630 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011631
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 }
11636
11637
11638 wpalMutexRelease(&pWDICtx->wptMutex);
11639 /*-----------------------------------------------------------------------
11640 Get message buffer
11641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 sizeof(halAddBAReq.addBAParams),
11644 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011645 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11647 {
11648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11649 "Unable to get send buffer in Add BA req %x %x %x",
11650 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 }
11654
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11657 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11658#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11661#endif
11662
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 wpalMemoryCopy( pSendBuffer+usDataOffset,
11664 &halAddBAReq.addBAParams,
11665 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011666
11667 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011669
11670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11674 wdiAddBARspCb, pEventData->pUserData,
11675 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011676}/*WDI_ProcessAddBAReq*/
11677
11678
11679
11680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011683
11684 @param pWDICtx: pointer to the WLAN DAL context
11685 pEventData: pointer to the event information structure
11686
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 @see
11688 @return Result of the function call
11689*/
11690WDI_Status
11691WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011692(
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 WDI_ControlBlockType* pWDICtx,
11694 WDI_EventInfoType* pEventData
11695)
11696{
11697 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11698 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 wpt_uint16 usDataOffset = 0;
11703 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 wpt_uint16 index;
11706 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011707
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 tTriggerBAReqMsg halTriggerBAReq;
11709 tTriggerBaReqCandidate* halTriggerBACandidate;
11710 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11712
11713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011715 -------------------------------------------------------------------------*/
11716 if (( NULL == pEventData ) ||
11717 ( NULL == pEventData->pEventData ) ||
11718 ( NULL == pEventData->pCBfnc ))
11719 {
11720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 }
11725
11726 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11727 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11728 /*-------------------------------------------------------------------------
11729 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 -------------------------------------------------------------------------*/
11732 wpalMutexAcquire(&pWDICtx->wptMutex);
11733
11734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11738 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 &macBSSID))
11740 {
11741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11742 "This station does not exist in the WDI Station Table %d");
11743 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 }
11746
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11748 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11751 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11752 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011753
11754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 }
11757
11758 /*------------------------------------------------------------------------
11759 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 ------------------------------------------------------------------------*/
11762 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11763 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11765 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11766 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011767
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 }
11772
11773
11774 wpalMutexRelease(&pWDICtx->wptMutex);
11775 /*-----------------------------------------------------------------------
11776 Get message buffer
11777 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11779 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11783 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11788 {
11789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11790 "Unable to get send buffer in Trigger BA req %x %x %x",
11791 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 }
11795
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11800
Jeff Johnsone7245742012-09-05 17:12:55 -070011801 wpalMemoryCopy( pSendBuffer+usDataOffset,
11802 &halTriggerBAReq.triggerBAParams,
11803 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011804
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11807 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11808 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011809
11810 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 index++)
11812 {
11813 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11814 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11815 halTriggerBACandidate++;
11816 wdiTriggerBACandidate++;
11817 }
11818
11819 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011821
11822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11826 wdiTriggerBARspCb, pEventData->pUserData,
11827 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011828}/*WDI_ProcessTriggerBAReq*/
11829
11830
11831
11832/**
11833 @brief Process Update Beacon Params Request function (called when Main FSM
11834 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011835
11836 @param pWDICtx: pointer to the WLAN DAL context
11837 pEventData: pointer to the event information structure
11838
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 @see
11840 @return Result of the function call
11841*/
11842WDI_Status
11843WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011844(
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 WDI_ControlBlockType* pWDICtx,
11846 WDI_EventInfoType* pEventData
11847)
11848{
11849 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11850 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 wpt_uint16 usDataOffset = 0;
11853 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11856
11857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 -------------------------------------------------------------------------*/
11860 if (( NULL == pEventData ) ||
11861 ( NULL == pEventData->pEventData) ||
11862 ( NULL == pEventData->pCBfnc))
11863 {
11864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 }
11869
11870 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11871 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11872 /*-----------------------------------------------------------------------
11873 Get message buffer
11874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 sizeof(halUpdateBeaconParams),
11877 &pSendBuffer, &usDataOffset, &usSendSize))||
11878 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11879 {
11880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11881 "Unable to get send buffer in set bss key req %x %x %x",
11882 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 }
11886
11887 /*BSS Index of the BSS*/
11888 halUpdateBeaconParams.bssIdx =
11889 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11890 /*shortPreamble mode. HAL should update all the STA rates when it
11891 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11894 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11897 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011899 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11900
11901 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011902 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011906 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11914 halUpdateBeaconParams.fRIFSMode =
11915 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11918
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11920 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011921
11922 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011924
11925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11929 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011930}/*WDI_ProcessUpdateBeaconParamsReq*/
11931
11932
11933
11934/**
11935 @brief Process Send Beacon template Request function (called when Main FSM
11936 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011937
11938 @param pWDICtx: pointer to the WLAN DAL context
11939 pEventData: pointer to the event information structure
11940
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 @see
11942 @return Result of the function call
11943*/
11944WDI_Status
11945WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011946(
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 WDI_ControlBlockType* pWDICtx,
11948 WDI_EventInfoType* pEventData
11949)
11950{
11951 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11952 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 wpt_uint16 usDataOffset = 0;
11955 wpt_uint16 usSendSize = 0;
11956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11957
11958 tSendBeaconReqMsg halSendBeaconReq;
11959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 -------------------------------------------------------------------------*/
11962 if (( NULL == pEventData ) ||
11963 ( NULL == pEventData->pEventData ) ||
11964 ( NULL == pEventData->pCBfnc ))
11965 {
11966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 }
11971
11972 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11973 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11974 /*-----------------------------------------------------------------------
11975 Get message buffer
11976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 sizeof(halSendBeaconReq.sendBeaconParam),
11979 &pSendBuffer, &usDataOffset, &usSendSize))||
11980 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11981 {
11982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11983 "Unable to get send buffer in send beacon req %x %x %x",
11984 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 }
11988
11989 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11990 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11991 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011992 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11994 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11995 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11996 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011999 /* usP2PIeOffset should be atleast greater than timIeOffset */
12000 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12001 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12002 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12003 {
12004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12005 "Invalid usP2PIeOffset %hu",
12006 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12007 WDI_ASSERT(0);
12008 return WDI_STATUS_E_FAILURE;
12009 }
12010
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012013
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 wpalMemoryCopy( pSendBuffer+usDataOffset,
12015 &halSendBeaconReq.sendBeaconParam,
12016 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012017
12018 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012019 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012020
12021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12025 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012026}/*WDI_ProcessSendBeaconParamsReq*/
12027
12028/**
12029 @brief Process Update Beacon Params Request function (called when Main FSM
12030 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012031
12032 @param pWDICtx: pointer to the WLAN DAL context
12033 pEventData: pointer to the event information structure
12034
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 @see
12036 @return Result of the function call
12037*/
12038WDI_Status
12039WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012040(
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 WDI_ControlBlockType* pWDICtx,
12042 WDI_EventInfoType* pEventData
12043)
12044{
12045 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12046 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 wpt_uint16 usDataOffset = 0;
12049 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012050 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12052
12053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 -------------------------------------------------------------------------*/
12056 if (( NULL == pEventData ) ||
12057 ( NULL == pEventData->pEventData) ||
12058 ( NULL == pEventData->pCBfnc))
12059 {
12060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 }
12065
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12070 /*-----------------------------------------------------------------------
12071 Get message buffer
12072 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012074 sizeof(halUpdateProbeRspTmplParams),
12075 &pSendBuffer, &usDataOffset, &usSendSize))||
12076 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12077 {
12078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12079 "Unable to get send buffer in set bss key req %x %x %x",
12080 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 }
12084
12085 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 WDI_MAC_ADDR_LEN);
12088
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12091
12092 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12093 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012095
12096
12097 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12098 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12099 WDI_PROBE_REQ_BITMAP_IE_LEN);
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 wpalMemoryCopy( pSendBuffer+usDataOffset,
12102 &halUpdateProbeRspTmplParams,
12103 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012104
12105 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012107
12108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12112 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12113 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012114}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12115
12116/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012118 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012119
12120 @param pWDICtx: pointer to the WLAN DAL context
12121 pEventData: pointer to the event information structure
12122
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 @see
12124 @return Result of the function call
12125*/
12126WDI_Status
12127WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012128(
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 WDI_ControlBlockType* pWDICtx,
12130 WDI_EventInfoType* pEventData
12131)
12132{
12133
12134 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12135 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12136
12137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 -------------------------------------------------------------------------*/
12140 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12145 {
12146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 }
12151
12152 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12155
12156 /*cache the wdi nv request message here if the the first fragment
12157 * To issue the request to HAL for the next fragment */
12158 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12159 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12161 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12163
12164 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12165 pWDICtx->pRspCBUserData = pEventData->pUserData;
12166 }
12167
12168 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12169}
12170
12171/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012172 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012174
12175 @param pWDICtx: pointer to the WLAN DAL context
12176 pEventData: pointer to the event information structure
12177
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 @see
12179 @return Result of the function call
12180*/
12181WDI_Status WDI_ProcessSetMaxTxPowerReq
12182(
12183 WDI_ControlBlockType* pWDICtx,
12184 WDI_EventInfoType* pEventData
12185)
12186{
12187 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12188 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 wpt_uint16 usDataOffset = 0;
12191 wpt_uint16 usSendSize = 0;
12192 tSetMaxTxPwrReq halSetMaxTxPower;
12193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12194
12195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 -------------------------------------------------------------------------*/
12198 if (( NULL == pEventData ) ||
12199 ( NULL == pEventData->pEventData ) ||
12200 ( NULL == pEventData->pCBfnc ))
12201 {
12202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12211
12212 /*-----------------------------------------------------------------------
12213 Get message buffer
12214 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012215if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12217 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012219)))
12220 {
12221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12222 "Unable to get Set Max Tx Power req %x %x %x",
12223 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 }
12227
12228 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12229 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12230 WDI_MAC_ADDR_LEN);
12231
12232 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12233 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12234 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012236 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012237
12238 wpalMemoryCopy( pSendBuffer+usDataOffset,
12239 &halSetMaxTxPower.setMaxTxPwrParams,
12240 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012241
12242 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012244
12245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12249 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12250 WDI_SET_MAX_TX_POWER_RESP);
12251
Jeff Johnson295189b2012-06-20 16:38:30 -070012252}
12253
schangd82195a2013-03-13 18:41:24 -070012254/**
12255 @brief Process Set Tx Power Request function (called when Main
12256 FSM allows it)
12257
12258 @param pWDICtx: pointer to the WLAN DAL context
12259 pEventData: pointer to the event information structure
12260
12261 @see
12262 @return Result of the function call
12263*/
12264WDI_Status WDI_ProcessSetTxPowerReq
12265(
12266 WDI_ControlBlockType* pWDICtx,
12267 WDI_EventInfoType* pEventData
12268)
12269{
12270 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12271 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12272 wpt_uint8* pSendBuffer = NULL;
12273 wpt_uint16 usDataOffset = 0;
12274 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012275 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12277
12278 /*-------------------------------------------------------------------------
12279 Sanity check
12280 -------------------------------------------------------------------------*/
12281 if (( NULL == pEventData ) ||
12282 ( NULL == pEventData->pEventData ) ||
12283 ( NULL == pEventData->pCBfnc ))
12284 {
12285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12286 "%s: Invalid parameters", __func__);
12287 WDI_ASSERT(0);
12288 return WDI_STATUS_E_FAILURE;
12289 }
12290
12291 pwdiSetTxPowerParams =
12292 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12293 wdiSetTxPowerRspCb =
12294 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12295
12296 /*-----------------------------------------------------------------------
12297 Get message buffer
12298 -----------------------------------------------------------------------*/
12299 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12300 sizeof(tSetTxPwrReqParams),
12301 &pSendBuffer, &usDataOffset, &usSendSize))||
12302 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12303 )))
12304 {
12305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12306 "Unable to get Set Max Tx Power req %x %x %x",
12307 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12308 WDI_ASSERT(0);
12309 return WDI_STATUS_E_FAILURE;
12310 }
12311
Leo Changa37e2a92013-03-25 17:39:58 -070012312 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12313 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12314 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012315
12316 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12317 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12318
12319 /*-------------------------------------------------------------------------
12320 Send Set Tx Power Request to HAL
12321 -------------------------------------------------------------------------*/
12322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12323 wdiSetTxPowerRspCb, pEventData->pUserData,
12324 WDI_SET_TX_POWER_RESP);
12325}
Jeff Johnson295189b2012-06-20 16:38:30 -070012326
12327/**
12328 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12329 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012330
12331 @param pWDICtx: pointer to the WLAN DAL context
12332 pEventData: pointer to the event information structure
12333
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 @see
12335 @return Result of the function call
12336*/
12337WDI_Status
12338WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012339(
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 WDI_ControlBlockType* pWDICtx,
12341 WDI_EventInfoType* pEventData
12342)
12343{
12344 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12345 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 wpt_uint16 usDataOffset = 0;
12348 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12351
12352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 -------------------------------------------------------------------------*/
12355 if (( NULL == pEventData ) ||
12356 ( NULL == pEventData->pEventData) ||
12357 ( NULL == pEventData->pCBfnc))
12358 {
12359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 }
12364
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12369 /*-----------------------------------------------------------------------
12370 Get message buffer
12371 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012372 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12373 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 sizeof(halSetP2PGONOAParams),
12375 &pSendBuffer, &usDataOffset, &usSendSize))||
12376 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12377 {
12378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12379 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12380 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 }
12384
Jeff Johnsone7245742012-09-05 17:12:55 -070012385 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012386 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12389 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012393 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012394 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012396 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12398
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 wpalMemoryCopy( pSendBuffer+usDataOffset,
12400 &halSetP2PGONOAParams,
12401 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012402
12403 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405
12406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12410 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12411 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012412}/*WDI_ProcessP2PGONOAReq*/
12413
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012414#ifdef FEATURE_WLAN_TDLS
12415
12416/**
12417 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12418 allows it)
12419
12420 @param pWDICtx: pointer to the WLAN DAL context
12421 pEventData: pointer to the event information structure
12422
12423 @see
12424 @return Result of the function call
12425*/
12426WDI_Status
12427WDI_ProcessTdlsLinkEstablishReq
12428(
12429 WDI_ControlBlockType* pWDICtx,
12430 WDI_EventInfoType* pEventData
12431)
12432{
12433 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12434 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12435 wpt_uint8* pSendBuffer = NULL;
12436 wpt_uint16 usDataOffset = 0;
12437 wpt_uint16 usSendSize = 0;
12438
12439 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12441
12442 /*-------------------------------------------------------------------------
12443 Sanity check
12444 -------------------------------------------------------------------------*/
12445 if (( NULL == pEventData ) ||
12446 ( NULL == pEventData->pEventData) ||
12447 ( NULL == pEventData->pCBfnc))
12448 {
12449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12450 "%s: Invalid parameters", __func__);
12451 WDI_ASSERT(0);
12452 return WDI_STATUS_E_FAILURE;
12453 }
12454 pwdiTDLSLinkEstablishReqParams =
12455 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12456 wdiTDLSLinkEstablishReqRspCb =
12457 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12458
12459
12460 /*-----------------------------------------------------------------------
12461 Get message buffer
12462 -----------------------------------------------------------------------*/
12463 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12464 WDI_TDLS_LINK_ESTABLISH_REQ,
12465 sizeof(halSetTDLSLinkEstablishParams),
12466 &pSendBuffer, &usDataOffset, &usSendSize))||
12467 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12468 {
12469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12470 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12471 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12472 WDI_ASSERT(0);
12473 return WDI_STATUS_E_FAILURE;
12474 }
12475
12476 halSetTDLSLinkEstablishParams.staIdx =
12477 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12478 halSetTDLSLinkEstablishParams.bIsResponder =
12479 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12480 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12481 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12482 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12483 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12484 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12485 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12486 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12487 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12488 halSetTDLSLinkEstablishParams.aAck = 0;
12489 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12490 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12491 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12492
12493 wpalMemoryCopy( pSendBuffer+usDataOffset,
12494 &halSetTDLSLinkEstablishParams,
12495 sizeof(halSetTDLSLinkEstablishParams));
12496
12497 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12498 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12499
12500 /*-------------------------------------------------------------------------
12501 Send Update Probe Resp Template Request to HAL
12502 -------------------------------------------------------------------------*/
12503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12504 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12505 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12506 return 0;
12507}/*WDI_ProcessTdlsLinkEstablishReq*/
12508
12509
12510#endif
12511
Jeff Johnson295189b2012-06-20 16:38:30 -070012512
12513
12514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 @param None
12518
12519 @see
12520 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012521*/
12522void
12523WDI_SetPowerStateCb
12524(
12525 wpt_status status,
12526 unsigned int dxePhyAddr,
12527 void *pContext
12528)
12529{
12530 wpt_status wptStatus;
12531 WDI_ControlBlockType *pCB = NULL;
12532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12533 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12534 {
12535 //it shouldn't happen, put an error msg
12536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 /*
12538 * Trigger the event to bring the Enter BMPS req function to come
12539 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012540*/
12541 if( NULL != pContext )
12542 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 }
12545 else
12546 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 pCB = &gWDICb;
12549 }
12550 pCB->dxePhyAddr = dxePhyAddr;
12551 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12552 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12553 {
12554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12555 "Failed to set an event");
12556
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 }
12559 return;
12560}
12561
12562
12563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012566
12567 @param pWDICtx: pointer to the WLAN DAL context
12568 pEventData: pointer to the event information structure
12569
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 @see
12571 @return Result of the function call
12572*/
12573WDI_Status
12574WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012575(
Jeff Johnson295189b2012-06-20 16:38:30 -070012576 WDI_ControlBlockType* pWDICtx,
12577 WDI_EventInfoType* pEventData
12578)
12579{
Jeff Johnson43971f52012-07-17 12:26:56 -070012580 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 wpt_uint16 usDataOffset = 0;
12584 wpt_uint16 usSendSize = 0;
12585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12586
12587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 -------------------------------------------------------------------------*/
12590 if (( NULL == pEventData ) ||
12591 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12592 {
12593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012596 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 }
12598
12599 /*-----------------------------------------------------------------------
12600 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 0,
12605 &pSendBuffer, &usDataOffset, &usSendSize))||
12606 ( usSendSize < (usDataOffset )))
12607 {
12608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12609 "Unable to get send buffer in Enter IMPS req %x %x",
12610 pEventData, wdiEnterImpsRspCb);
12611 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012612 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 }
12614
12615 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012616 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12617 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 {
12619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12620 "WDI Init failed to reset an event");
12621
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012623 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 }
12625
12626 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012627 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12628 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12630 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12631 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012632 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012633 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012634
12635 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012638 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12639 WDI_SET_POWER_STATE_TIMEOUT);
12640 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 {
12642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12643 "WDI Init failed to wait on an event");
12644
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012646 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 }
12648
12649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012652 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12653 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012654
12655fail:
12656 // Release the message buffer so we don't leak
12657 wpalMemoryFree(pSendBuffer);
12658
12659failRequest:
12660 //WDA should have failure check to avoid the memory leak
12661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012662}/*WDI_ProcessEnterImpsReq*/
12663
12664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012667
12668 @param pWDICtx: pointer to the WLAN DAL context
12669 pEventData: pointer to the event information structure
12670
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 @see
12672 @return Result of the function call
12673*/
12674WDI_Status
12675WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012676(
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 WDI_ControlBlockType* pWDICtx,
12678 WDI_EventInfoType* pEventData
12679)
12680{
12681 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 wpt_uint16 usDataOffset = 0;
12684 wpt_uint16 usSendSize = 0;
12685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12686
12687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012689 -------------------------------------------------------------------------*/
12690 if (( NULL == pEventData ) ||
12691 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12692 {
12693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 }
12698
12699 /*-----------------------------------------------------------------------
12700 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 0,
12705 &pSendBuffer, &usDataOffset, &usSendSize))||
12706 ( usSendSize < (usDataOffset )))
12707 {
12708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12709 "Unable to get send buffer in Exit IMPS req %x %x",
12710 pEventData, wdiExitImpsRspCb);
12711 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 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12719 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012720}/*WDI_ProcessExitImpsReq*/
12721
12722/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012725
12726 @param pWDICtx: pointer to the WLAN DAL context
12727 pEventData: pointer to the event information structure
12728
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 @see
12730 @return Result of the function call
12731*/
12732WDI_Status
12733WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012734(
Jeff Johnson295189b2012-06-20 16:38:30 -070012735 WDI_ControlBlockType* pWDICtx,
12736 WDI_EventInfoType* pEventData
12737)
12738{
12739 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12740 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012741 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012742 wpt_uint16 usDataOffset = 0;
12743 wpt_uint16 usSendSize = 0;
12744 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012745 wpt_status wptStatus;
12746
Jeff Johnson295189b2012-06-20 16:38:30 -070012747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12748
12749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 -------------------------------------------------------------------------*/
12752 if (( NULL == pEventData ) ||
12753 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12754 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12755 {
12756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012759 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 }
12761
12762 /*-----------------------------------------------------------------------
12763 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 sizeof(enterBmpsReq),
12768 &pSendBuffer, &usDataOffset, &usSendSize))||
12769 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12770 {
12771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12772 "Unable to get send buffer in Enter BMPS req %x %x %x",
12773 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12774 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012775 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 }
12777
12778 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012779 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12780 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 {
12782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12783 "WDI Init failed to reset an event");
12784
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012786 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 }
12788
12789 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012790 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12791 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12792 {
12793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12794 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12795 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012796 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012797 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012798
12799/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012802 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12803 WDI_SET_POWER_STATE_TIMEOUT);
12804 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 {
12806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12807 "WDI Init failed to wait on an event");
12808
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012810 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 }
12812
12813 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12814
12815 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12816 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12817 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12818 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12819
12820 // For CCX and 11R Roaming
12821 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12822 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12823 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12824
12825 wpalMemoryCopy( pSendBuffer+usDataOffset,
12826 &enterBmpsReq,
12827 sizeof(enterBmpsReq));
12828
12829 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12836 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012837
12838fail:
12839 // Release the message buffer so we don't leak
12840 wpalMemoryFree(pSendBuffer);
12841
12842failRequest:
12843 //WDA should have failure check to avoid the memory leak
12844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012845}/*WDI_ProcessEnterBmpsReq*/
12846
12847/**
12848 @brief Process Exit BMPS Request function (called when Main FSM
12849 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012850
12851 @param pWDICtx: pointer to the WLAN DAL context
12852 pEventData: pointer to the event information structure
12853
Jeff Johnson295189b2012-06-20 16:38:30 -070012854 @see
12855 @return Result of the function call
12856*/
12857WDI_Status
12858WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012859(
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 WDI_ControlBlockType* pWDICtx,
12861 WDI_EventInfoType* pEventData
12862)
12863{
12864 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12865 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 wpt_uint16 usDataOffset = 0;
12868 wpt_uint16 usSendSize = 0;
12869 tHalExitBmpsReqParams exitBmpsReq;
12870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12871
12872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 -------------------------------------------------------------------------*/
12875 if (( NULL == pEventData ) ||
12876 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12877 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12878 {
12879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 }
12884
12885 /*-----------------------------------------------------------------------
12886 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 sizeof(exitBmpsReq),
12891 &pSendBuffer, &usDataOffset, &usSendSize))||
12892 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12893 {
12894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12895 "Unable to get send buffer in Exit BMPS req %x %x %x",
12896 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12897 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 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12901
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12903
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 wpalMemoryCopy( pSendBuffer+usDataOffset,
12905 &exitBmpsReq,
12906 sizeof(exitBmpsReq));
12907
12908 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012910
12911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12915 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012916}/*WDI_ProcessExitBmpsReq*/
12917
12918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012921
12922 @param pWDICtx: pointer to the WLAN DAL context
12923 pEventData: pointer to the event information structure
12924
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 @see
12926 @return Result of the function call
12927*/
12928WDI_Status
12929WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012930(
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 WDI_ControlBlockType* pWDICtx,
12932 WDI_EventInfoType* pEventData
12933)
12934{
12935 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12936 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 wpt_uint16 usDataOffset = 0;
12939 wpt_uint16 usSendSize = 0;
12940 tUapsdReqParams enterUapsdReq;
12941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12942
12943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 -------------------------------------------------------------------------*/
12946 if (( NULL == pEventData ) ||
12947 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12948 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12949 {
12950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 }
12955
12956 /*-----------------------------------------------------------------------
12957 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 sizeof(enterUapsdReq),
12962 &pSendBuffer, &usDataOffset, &usSendSize))||
12963 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12964 {
12965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12966 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12967 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12968 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 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12973 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12974 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12975 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12976 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12977 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12978 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12979 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012980 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012981
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 wpalMemoryCopy( pSendBuffer+usDataOffset,
12983 &enterUapsdReq,
12984 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012985
12986 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012988
12989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12993 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012994}/*WDI_ProcessEnterUapsdReq*/
12995
12996/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012997 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012999
13000 @param pWDICtx: pointer to the WLAN DAL context
13001 pEventData: pointer to the event information structure
13002
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 @see
13004 @return Result of the function call
13005*/
13006WDI_Status
13007WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013008(
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 WDI_ControlBlockType* pWDICtx,
13010 WDI_EventInfoType* pEventData
13011)
13012{
13013 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 wpt_uint16 usDataOffset = 0;
13016 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013017 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13018 wpt_uint8 bssIdx = 0;
13019
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13021
13022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 -------------------------------------------------------------------------*/
13025 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013026 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13028 {
13029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 }
13034
13035 /*-----------------------------------------------------------------------
13036 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013040 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013042 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 {
13044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13045 "Unable to get send buffer in Exit UAPSD req %x %x",
13046 pEventData, wdiExitUapsdRspCb);
13047 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
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013051 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13052
13053 wpalMemoryCopy( pSendBuffer+usDataOffset,
13054 &bssIdx,
13055 sizeof(wpt_uint8));
13056
13057 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13058 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13059
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13064 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013065}/*WDI_ProcessExitUapsdReq*/
13066
13067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013070
13071 @param pWDICtx: pointer to the WLAN DAL context
13072 pEventData: pointer to the event information structure
13073
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 @see
13075 @return Result of the function call
13076*/
13077WDI_Status
13078WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013079(
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 WDI_ControlBlockType* pWDICtx,
13081 WDI_EventInfoType* pEventData
13082)
13083{
13084 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13085 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 wpt_uint16 usDataOffset = 0;
13088 wpt_uint16 usSendSize = 0;
13089 tUapsdInfo uapsdAcParamsReq;
13090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13091
13092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 -------------------------------------------------------------------------*/
13095 if (( NULL == pEventData ) ||
13096 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13097 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13098 {
13099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 }
13104
13105 /*-----------------------------------------------------------------------
13106 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 sizeof(uapsdAcParamsReq),
13111 &pSendBuffer, &usDataOffset, &usSendSize))||
13112 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13113 {
13114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13115 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13116 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13117 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 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13122 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13123 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13124 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13125 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13126 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13127
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 wpalMemoryCopy( pSendBuffer+usDataOffset,
13129 &uapsdAcParamsReq,
13130 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013131
13132 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013134
13135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13139 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013140}/*WDI_ProcessSetUapsdAcParamsReq*/
13141
13142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013145
13146 @param pWDICtx: pointer to the WLAN DAL context
13147 pEventData: pointer to the event information structure
13148
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 @see
13150 @return Result of the function call
13151*/
13152WDI_Status
13153WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013154(
Jeff Johnson295189b2012-06-20 16:38:30 -070013155 WDI_ControlBlockType* pWDICtx,
13156 WDI_EventInfoType* pEventData
13157)
13158{
13159 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13160 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 wpt_uint16 usDataOffset = 0;
13163 wpt_uint16 usSendSize = 0;
13164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13165
13166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 -------------------------------------------------------------------------*/
13169 if (( NULL == pEventData ) ||
13170 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13171 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13172 {
13173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 }
13178
13179 /*-----------------------------------------------------------------------
13180 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13185 &pSendBuffer, &usDataOffset, &usSendSize))||
13186 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13187 {
13188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13189 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13190 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13191 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
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 wpalMemoryCopy( pSendBuffer+usDataOffset,
13196 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13197 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013198
13199 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013201
13202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13206 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013207}/*WDI_ProcessUpdateUapsdParamsReq*/
13208
13209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013212
13213 @param pWDICtx: pointer to the WLAN DAL context
13214 pEventData: pointer to the event information structure
13215
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 @see
13217 @return Result of the function call
13218*/
13219WDI_Status
13220WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013221(
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 WDI_ControlBlockType* pWDICtx,
13223 WDI_EventInfoType* pEventData
13224)
13225{
13226 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13227 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 wpt_uint16 usDataOffset = 0;
13230 wpt_uint16 usSendSize = 0;
13231 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13232
13233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13234
13235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013237 -------------------------------------------------------------------------*/
13238 if (( NULL == pEventData ) ||
13239 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13240 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13241 {
13242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 }
13247
13248 /*-----------------------------------------------------------------------
13249 Get message buffer
13250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 sizeof(halRxpFilterParams),
13253 &pSendBuffer, &usDataOffset, &usSendSize))||
13254 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13255 {
13256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13257 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13258 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 }
13262
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13267
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 wpalMemoryCopy( pSendBuffer+usDataOffset,
13269 &halRxpFilterParams,
13270 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013271
13272 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013274
13275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13279 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013280}/*WDI_ProcessConfigureRxpFilterReq*/
13281
13282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013285
13286 @param pWDICtx: pointer to the WLAN DAL context
13287 pEventData: pointer to the event information structure
13288
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 @see
13290 @return Result of the function call
13291*/
13292WDI_Status
13293WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013294(
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 WDI_ControlBlockType* pWDICtx,
13296 WDI_EventInfoType* pEventData
13297)
13298{
13299 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13300 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 wpt_uint16 usDataOffset = 0;
13303 wpt_uint16 usSendSize = 0;
13304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13305
13306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 -------------------------------------------------------------------------*/
13309 if (( NULL == pEventData ) ||
13310 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13311 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13312 {
13313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 }
13318
13319 /*-----------------------------------------------------------------------
13320 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13325 &pSendBuffer, &usDataOffset, &usSendSize))||
13326 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13327 {
13328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13329 "Unable to get send buffer in Set beacon filter req %x %x %x",
13330 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13331 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
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 wpalMemoryCopy( pSendBuffer+usDataOffset,
13336 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13337 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13338 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13339 &pwdiBeaconFilterParams->aFilters[0],
13340 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013341
13342 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013344
13345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013346 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13349 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013350}/*WDI_ProcessSetBeaconFilterReq*/
13351
13352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013355
13356 @param pWDICtx: pointer to the WLAN DAL context
13357 pEventData: pointer to the event information structure
13358
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 @see
13360 @return Result of the function call
13361*/
13362WDI_Status
13363WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013364(
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 WDI_ControlBlockType* pWDICtx,
13366 WDI_EventInfoType* pEventData
13367)
13368{
13369 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13370 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 wpt_uint16 usDataOffset = 0;
13373 wpt_uint16 usSendSize = 0;
13374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13375
13376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 -------------------------------------------------------------------------*/
13379 if (( NULL == pEventData ) ||
13380 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13381 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13382 {
13383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 }
13388
13389 /*-----------------------------------------------------------------------
13390 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13395 &pSendBuffer, &usDataOffset, &usSendSize))||
13396 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13397 {
13398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13399 "Unable to get send buffer in remove beacon filter req %x %x %x",
13400 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13401 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
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 wpalMemoryCopy( pSendBuffer+usDataOffset,
13406 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13407 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013408
13409 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013411
13412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013413 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13416 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013417}
13418
13419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013422
13423 @param pWDICtx: pointer to the WLAN DAL context
13424 pEventData: pointer to the event information structure
13425
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 @see
13427 @return Result of the function call
13428*/
13429WDI_Status
13430WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013431(
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 WDI_ControlBlockType* pWDICtx,
13433 WDI_EventInfoType* pEventData
13434)
13435{
13436 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13437 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 wpt_uint16 usDataOffset = 0;
13440 wpt_uint16 usSendSize = 0;
13441 tHalRSSIThresholds rssiThresholdsReq;
13442 WDI_Status ret_status = 0;
13443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13444
13445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 -------------------------------------------------------------------------*/
13448 if (( NULL == pEventData ) ||
13449 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13450 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13451 {
13452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 }
13457
13458 /*-----------------------------------------------------------------------
13459 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 sizeof(rssiThresholdsReq),
13464 &pSendBuffer, &usDataOffset, &usSendSize))||
13465 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13466 {
13467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13468 "Unable to get send buffer in remove beacon filter req %x %x %x",
13469 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13470 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
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13494
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 wpalMemoryCopy( pSendBuffer+usDataOffset,
13496 &rssiThresholdsReq,
13497 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013498
13499 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501
13502 /*-------------------------------------------------------------------------
13503 Send Set threshold req to HAL
13504 -------------------------------------------------------------------------*/
13505 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13506 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13507 {
13508 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13509 // req. Then as a result of processing the threshold cross ind, we trigger
13510 // a Set threshold req, then we need to indicate to WDI that it needs to
13511 // go to busy state as a result of the indication as we sent a req in the
13512 // same WDI context.
13513 // Hence expected state transition is to busy.
13514 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13515 }
13516
13517 return ret_status;
13518}
13519
13520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013523
13524 @param pWDICtx: pointer to the WLAN DAL context
13525 pEventData: pointer to the event information structure
13526
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 @see
13528 @return Result of the function call
13529*/
13530WDI_Status
13531WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013532(
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 WDI_ControlBlockType* pWDICtx,
13534 WDI_EventInfoType* pEventData
13535)
13536{
13537 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13538 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 wpt_uint16 usDataOffset = 0;
13541 wpt_uint16 usSendSize = 0;
13542 tHalHostOffloadReq hostOffloadParams;
13543 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013544 wpt_uint8 ucCurrentBSSSesIdx = 0;
13545 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013546
13547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13548
13549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 -------------------------------------------------------------------------*/
13552 if (( NULL == pEventData ) ||
13553 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13554 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13555 {
13556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013559 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 }
13561
13562 /*-----------------------------------------------------------------------
13563 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013567 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13568 &pSendBuffer, &usDataOffset, &usSendSize))||
13569 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13570 {
13571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13572 "Unable to get send buffer in host offload req %x %x %x",
13573 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13574 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013575 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 }
13577
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013578 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13579 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13580 &pBSSSes);
13581 if ( NULL == pBSSSes )
13582 {
13583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013584 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13585 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013586 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013587 }
13588
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13590 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013591
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13593 {
13594 // ARP Offload
13595 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13596 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13597 4);
13598 }
13599 else
13600 {
13601 // NS Offload
13602 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13603 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13604 16);
13605
13606#ifdef WLAN_NS_OFFLOAD
13607 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13608 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13609 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13610 16);
13611 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13612 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13613 16);
13614 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13615 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13616 16);
13617 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13618 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13619 16);
13620 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13621 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13622 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013623 nsOffloadParams.srcIPv6AddrValid =
13624 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13625
13626 nsOffloadParams.targetIPv6Addr1Valid =
13627 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13628
13629 nsOffloadParams.targetIPv6Addr2Valid =
13630 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13631
13632 nsOffloadParams.slotIndex =
13633 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013634
Jeff Johnson295189b2012-06-20 16:38:30 -070013635#endif // WLAN_NS_OFFLOAD
13636 }
13637
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013638 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13639
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 // copy hostOffloadParams into pSendBuffer
13641 wpalMemoryCopy( pSendBuffer+usDataOffset,
13642 &hostOffloadParams,
13643 sizeof(hostOffloadParams));
13644
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013645 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013646 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013647 // copy nsOffloadParams into pSendBuffer
13648 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 &nsOffloadParams,
13650 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013651 }
13652 else
13653 {
13654#ifdef WLAN_NS_OFFLOAD
13655 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13656 {
13657 // copy nsOffloadParams into pSendBuffer
13658 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13659 &nsOffloadParams,
13660 sizeof(nsOffloadParams));
13661 }
13662#endif
13663 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013664
13665 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013667
13668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013669 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13672 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013673
13674fail:
13675 // Release the message buffer so we don't leak
13676 wpalMemoryFree(pSendBuffer);
13677
13678failRequest:
13679 //WDA should have failure check to avoid the memory leak
13680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013681}/*WDI_ProcessHostOffloadReq*/
13682
13683/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013686
13687 @param pWDICtx: pointer to the WLAN DAL context
13688 pEventData: pointer to the event information structure
13689
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 @see
13691 @return Result of the function call
13692*/
13693WDI_Status
13694WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013695(
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 WDI_ControlBlockType* pWDICtx,
13697 WDI_EventInfoType* pEventData
13698)
13699{
13700 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13701 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 wpt_uint16 usDataOffset = 0;
13704 wpt_uint16 usSendSize = 0;
13705 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013706 wpt_uint8 ucCurrentBSSSesIdx = 0;
13707 WDI_BSSSessionType* pBSSSes = NULL;
13708
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13710
13711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 -------------------------------------------------------------------------*/
13714 if (( NULL == pEventData ) ||
13715 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13716 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13717 {
13718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13719 "Invalid parameters in Keep Alive req");
13720 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013721 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 }
13723
13724 /*-----------------------------------------------------------------------
13725 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 sizeof(keepAliveReq),
13730 &pSendBuffer, &usDataOffset, &usSendSize))||
13731 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13732 {
13733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13734 "Unable to get send buffer in keep alive req %x %x %x",
13735 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13736 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013737 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 }
13739
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013740 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13741 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13742 &pBSSSes);
13743 if ( NULL == pBSSSes )
13744 {
13745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013746 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013747 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013748 }
13749
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13751 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13752
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013753 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013754
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13756 {
13757 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13758 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13759 HAL_IPV4_ADDR_LEN);
13760 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13761 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013762 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013763 wpalMemoryCopy(keepAliveReq.destMacAddr,
13764 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13765 HAL_MAC_ADDR_LEN);
13766 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013767
13768 wpalMemoryCopy( pSendBuffer+usDataOffset,
13769 &keepAliveReq,
13770 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013771
13772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13773 "Process keep alive req %d",sizeof(keepAliveReq));
13774
13775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13776 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13777
13778 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013780
13781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13782 "Sending keep alive req to HAL");
13783
13784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13788 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013789
13790fail:
13791 // Release the message buffer so we don't leak
13792 wpalMemoryFree(pSendBuffer);
13793
13794failRequest:
13795 //WDA should have failure check to avoid the memory leak
13796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797}/*WDI_ProcessKeepAliveReq*/
13798
13799
13800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013803
13804 @param pWDICtx: pointer to the WLAN DAL context
13805 pEventData: pointer to the event information structure
13806
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 @see
13808 @return Result of the function call
13809*/
13810WDI_Status
13811WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013812(
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 WDI_ControlBlockType* pWDICtx,
13814 WDI_EventInfoType* pEventData
13815)
13816{
13817 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13818 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 wpt_uint16 usDataOffset = 0;
13821 wpt_uint16 usSendSize = 0;
13822 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013823 wpt_uint8 ucCurrentBSSSesIdx = 0;
13824 WDI_BSSSessionType* pBSSSes = NULL;
13825
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13827
13828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 -------------------------------------------------------------------------*/
13831 if (( NULL == pEventData ) ||
13832 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13833 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13834 {
13835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013838 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 }
13840
13841 /*-----------------------------------------------------------------------
13842 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 sizeof(wowlAddBcPtrnReq),
13847 &pSendBuffer, &usDataOffset, &usSendSize))||
13848 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13849 {
13850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13851 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13852 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13853 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013854 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 }
13856
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13858 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13859 &pBSSSes);
13860 if ( NULL == pBSSSes )
13861 {
13862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013863 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013864 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013865 }
13866
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013871 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013873 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13875
13876 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13877 {
13878 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13879 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13880 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13881 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13882 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13883 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13884 }
13885 else
13886 {
13887 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13888 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13889 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13890 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13891 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13892 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13893
13894 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13895 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13896 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13897 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13898 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13899 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13900 }
13901
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013902 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13903
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 wpalMemoryCopy( pSendBuffer+usDataOffset,
13905 &wowlAddBcPtrnReq,
13906 sizeof(wowlAddBcPtrnReq));
13907
13908 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013910
13911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13915 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013916fail:
13917 // Release the message buffer so we don't leak
13918 wpalMemoryFree(pSendBuffer);
13919
13920failRequest:
13921 //WDA should have failure check to avoid the memory leak
13922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013923}/*WDI_ProcessWowlAddBcPtrnReq*/
13924
13925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013928
13929 @param pWDICtx: pointer to the WLAN DAL context
13930 pEventData: pointer to the event information structure
13931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 @see
13933 @return Result of the function call
13934*/
13935WDI_Status
13936WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013937(
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 WDI_ControlBlockType* pWDICtx,
13939 WDI_EventInfoType* pEventData
13940)
13941{
13942 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13943 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 wpt_uint16 usDataOffset = 0;
13946 wpt_uint16 usSendSize = 0;
13947 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013948 wpt_uint8 ucCurrentBSSSesIdx = 0;
13949 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13951
13952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 -------------------------------------------------------------------------*/
13955 if (( NULL == pEventData ) ||
13956 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13957 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013962 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 }
13964
13965 /*-----------------------------------------------------------------------
13966 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 sizeof(wowlDelBcPtrnReq),
13971 &pSendBuffer, &usDataOffset, &usSendSize))||
13972 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13975 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13976 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13977 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013978 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 }
13980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013981 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13982 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13983 &pBSSSes);
13984 if ( NULL == pBSSSes )
13985 {
13986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013987 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013988 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013989 }
13990
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013993
13994 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13995
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 wpalMemoryCopy( pSendBuffer+usDataOffset,
13997 &wowlDelBcPtrnReq,
13998 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013999
14000 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014002
14003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14007 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014008
14009fail:
14010 // Release the message buffer so we don't leak
14011 wpalMemoryFree(pSendBuffer);
14012
14013failRequest:
14014 //WDA should have failure check to avoid the memory leak
14015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014016}/*WDI_ProcessWowlDelBcPtrnReq*/
14017
14018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014019 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014021
14022 @param pWDICtx: pointer to the WLAN DAL context
14023 pEventData: pointer to the event information structure
14024
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 @see
14026 @return Result of the function call
14027*/
14028WDI_Status
14029WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014030(
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 WDI_ControlBlockType* pWDICtx,
14032 WDI_EventInfoType* pEventData
14033)
14034{
14035 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14036 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 wpt_uint16 usDataOffset = 0;
14039 wpt_uint16 usSendSize = 0;
14040 tHalWowlEnterParams wowlEnterReq;
14041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14042
14043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 -------------------------------------------------------------------------*/
14046 if (( NULL == pEventData ) ||
14047 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14048 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14049 {
14050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 }
14055
14056 /*-----------------------------------------------------------------------
14057 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 sizeof(wowlEnterReq),
14062 &pSendBuffer, &usDataOffset, &usSendSize))||
14063 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14064 {
14065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14066 "Unable to get send buffer in Wowl enter req %x %x %x",
14067 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14068 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
Kumar Anand21a26022013-07-22 14:35:34 -070014072 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14073
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14090
14091#ifdef WLAN_WAKEUP_EVENTS
14092 wowlEnterReq.ucWoWEAPIDRequestEnable =
14093 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14094
14095 wowlEnterReq.ucWoWEAPOL4WayEnable =
14096 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14097
14098 wowlEnterReq.ucWowNetScanOffloadMatch =
14099 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14100
14101 wowlEnterReq.ucWowGTKRekeyError =
14102 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14103
14104 wowlEnterReq.ucWoWBSSConnLoss =
14105 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14106#endif // WLAN_WAKEUP_EVENTS
14107
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014108 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14109
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14111 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14112 sizeof(tSirMacAddr));
14113
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 wpalMemoryCopy( pSendBuffer+usDataOffset,
14115 &wowlEnterReq,
14116 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014117
14118 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014120
14121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14125 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014126}/*WDI_ProcessWowlEnterReq*/
14127
14128/**
14129 @brief Process Wowl exit Request function (called when Main FSM
14130 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014131
14132 @param pWDICtx: pointer to the WLAN DAL context
14133 pEventData: pointer to the event information structure
14134
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 @see
14136 @return Result of the function call
14137*/
14138WDI_Status
14139WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014140(
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 WDI_ControlBlockType* pWDICtx,
14142 WDI_EventInfoType* pEventData
14143)
14144{
14145 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014146 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 wpt_uint16 usDataOffset = 0;
14149 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014150 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14152
14153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 -------------------------------------------------------------------------*/
14156 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014157 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14159 {
14160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 }
14165
14166 /*-----------------------------------------------------------------------
14167 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014171 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014173 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 {
14175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14176 "Unable to get send buffer in Wowl Exit req %x %x",
14177 pEventData, wdiWowlExitCb);
14178 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
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014182 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14183
14184 wpalMemoryCopy( pSendBuffer+usDataOffset,
14185 &wowlExitparams,
14186 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14191 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014192}/*WDI_ProcessWowlExitReq*/
14193
14194/**
14195 @brief Process Configure Apps Cpu Wakeup State Request function
14196 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014197
14198 @param pWDICtx: pointer to the WLAN DAL context
14199 pEventData: pointer to the event information structure
14200
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 @see
14202 @return Result of the function call
14203*/
14204WDI_Status
14205WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014206(
Jeff Johnson295189b2012-06-20 16:38:30 -070014207 WDI_ControlBlockType* pWDICtx,
14208 WDI_EventInfoType* pEventData
14209)
14210{
14211 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14212 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 wpt_uint16 usDataOffset = 0;
14215 wpt_uint16 usSendSize = 0;
14216 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14218
14219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 -------------------------------------------------------------------------*/
14222 if (( NULL == pEventData ) ||
14223 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14224 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14225 {
14226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 }
14231
14232 /*-----------------------------------------------------------------------
14233 Get message buffer
14234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 sizeof(halCfgAppsCpuWakeupStateReqParams),
14237 &pSendBuffer, &usDataOffset, &usSendSize))||
14238 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14239 {
14240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14241 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14242 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 }
14246
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14249
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 wpalMemoryCopy( pSendBuffer+usDataOffset,
14251 &halCfgAppsCpuWakeupStateReqParams,
14252 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014253
14254 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014256
14257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14261 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14262 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014263}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14264
14265#ifdef WLAN_FEATURE_VOWIFI_11R
14266/**
14267 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14268 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014269
14270 @param pWDICtx: pointer to the WLAN DAL context
14271 pEventData: pointer to the event information structure
14272
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 @see
14274 @return Result of the function call
14275*/
14276WDI_Status
14277WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014278(
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 WDI_ControlBlockType* pWDICtx,
14280 WDI_EventInfoType* pEventData
14281)
14282{
14283 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14284 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 wpt_uint16 usDataOffset = 0;
14289 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 wpt_macAddr macBSSID;
14292 tAggrAddTsReq halAggrAddTsReq;
14293 int i;
14294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14295
14296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 -------------------------------------------------------------------------*/
14299 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14300 ( NULL == pEventData->pCBfnc ))
14301 {
14302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 }
14307 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14308 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14309 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14310 /*-------------------------------------------------------------------------
14311 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 -------------------------------------------------------------------------*/
14314 wpalMutexAcquire(&pWDICtx->wptMutex);
14315
14316 /*------------------------------------------------------------------------
14317 Find the BSS for which the request is made and identify WDI session
14318 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14320 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 &macBSSID))
14322 {
14323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14324 "This station does not exist in the WDI Station Table %d");
14325 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 }
14328
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14330 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14333 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14334 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
14336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014339
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 /*------------------------------------------------------------------------
14341 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 ------------------------------------------------------------------------*/
14344 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14345 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14347 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14348 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014349
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014352 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014353 }
14354
14355 wpalMutexRelease(&pWDICtx->wptMutex);
14356 /*-----------------------------------------------------------------------
14357 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 sizeof(tAggrAddTsParams),
14362 &pSendBuffer, &usDataOffset, &usSendSize))||
14363 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14364 {
14365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14366 "Unable to get send buffer in set bss key req %x %x %x",
14367 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 }
14371
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14376
14377 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14378 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14385 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14388 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14391 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14394 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14397 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014398 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14400 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14403 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14406 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411
14412
14413 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14443 }
14444
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 wpalMemoryCopy( pSendBuffer+usDataOffset,
14446 &halAggrAddTsReq,
14447 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014448
14449 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014451
14452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014458}/*WDI_ProcessAggrAddTSpecReq*/
14459#endif /* WLAN_FEATURE_VOWIFI_11R */
14460
14461/**
14462 @brief Process Shutdown Request function (called when Main FSM
14463 allows it)
14464
14465 @param pWDICtx: pointer to the WLAN DAL context
14466 pEventData: pointer to the event information structure
14467
14468 @see
14469 @return Result of the function call
14470*/
14471WDI_Status
14472WDI_ProcessShutdownReq
14473(
14474 WDI_ControlBlockType* pWDICtx,
14475 WDI_EventInfoType* pEventData
14476 )
14477{
14478 wpt_status wptStatus;
14479
14480
14481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14482
14483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 -------------------------------------------------------------------------*/
14486 if ( NULL == pEventData )
14487 {
14488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 WDI_ASSERT(0);
14491 return WDI_STATUS_E_FAILURE;
14492 }
14493
14494 wpalMutexAcquire(&pWDICtx->wptMutex);
14495
14496
14497 gWDIInitialized = eWLAN_PAL_FALSE;
14498 /*! TO DO: stop the data services */
14499 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14500 {
14501 /*Stop the STA Table !UT- check this logic again
14502 It is safer to do it here than on the response - because a stop is imminent*/
14503 WDI_STATableStop(pWDICtx);
14504
14505 /* Stop Transport Driver, DXE */
14506 WDTS_Stop(pWDICtx);
14507 }
14508
14509 /*Clear all pending request*/
14510 WDI_ClearPendingRequests(pWDICtx);
14511 /* Close Data transport*/
14512 /* FTM mode does not open Data Path */
14513 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14514 {
14515 WDTS_Close(pWDICtx);
14516 }
14517 /*Close the STA Table !UT- check this logic again*/
14518 WDI_STATableClose(pWDICtx);
14519 /*close the PAL */
14520 wptStatus = wpalClose(pWDICtx->pPALContext);
14521 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14522 {
14523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14524 "Failed to wpal Close %d", wptStatus);
14525 WDI_ASSERT(0);
14526 }
14527
14528 /*Transition back to init state*/
14529 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14530
14531 wpalMutexRelease(&pWDICtx->wptMutex);
14532
14533 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535
14536
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014538}/*WDI_ProcessShutdownReq*/
14539
14540/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014542========================================================================*/
14543
14544/**
14545 @brief Process Start Response function (called when a response
14546 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014547
14548 @param pWDICtx: pointer to the WLAN DAL context
14549 pEventData: pointer to the event information structure
14550
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 @see
14552 @return Result of the function call
14553*/
14554WDI_Status
14555WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014556(
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 WDI_ControlBlockType* pWDICtx,
14558 WDI_EventInfoType* pEventData
14559)
14560{
14561 WDI_StartRspParamsType wdiRspParams;
14562 WDI_StartRspCb wdiStartRspCb = NULL;
14563
14564 tHalMacStartRspParams* startRspParams;
14565
14566#ifndef HAL_SELF_STA_PER_BSS
14567 WDI_AddStaParams wdiAddSTAParam = {0};
14568#endif
14569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14570
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 -------------------------------------------------------------------------*/
14575 if (( NULL == pEventData ) ||
14576 ( NULL == pEventData->pEventData) ||
14577 ( NULL == wdiStartRspCb ))
14578 {
14579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 }
14584
14585 /*-------------------------------------------------------------------------
14586 Extract response and send it to UMAC
14587 -------------------------------------------------------------------------*/
14588 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14589 {
14590 // not enough data was received
14591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14592 "Invalid response length in Start Resp Expect %x Rcvd %x",
14593 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 }
14597
14598 /*-------------------------------------------------------------------------
14599 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 -------------------------------------------------------------------------*/
14602 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14603
14604 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14605 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14606 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14607 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14608 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14609 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14610 wdiRspParams.wlanReportedVersion.major =
14611 startRspParams->wcnssWlanVersion.major;
14612 wdiRspParams.wlanReportedVersion.minor =
14613 startRspParams->wcnssWlanVersion.minor;
14614 wdiRspParams.wlanReportedVersion.version =
14615 startRspParams->wcnssWlanVersion.version;
14616 wdiRspParams.wlanReportedVersion.revision =
14617 startRspParams->wcnssWlanVersion.revision;
14618 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14619 startRspParams->wcnssCrmVersionString,
14620 sizeof(wdiRspParams.wcnssSoftwareVersion));
14621 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14622 startRspParams->wcnssWlanVersionString,
14623 sizeof(wdiRspParams.wcnssHardwareVersion));
14624 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14625
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014626 /*Save the HAL Version*/
14627 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14628
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 wpalMutexAcquire(&pWDICtx->wptMutex);
14630 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14631 {
14632 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14633
14634 /*Cache the start response for further use*/
14635 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 sizeof(pWDICtx->wdiCachedStartRspParams));
14638
14639 }
14640 else
14641 {
14642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14643 "Failed to start device with status %s(%d)",
14644 WDI_getHALStatusMsgString(startRspParams->status),
14645 startRspParams->status);
14646
14647 /*Set the expected state transition to stopped - because the start has
14648 failed*/
14649 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14650
14651 wpalMutexRelease(&pWDICtx->wptMutex);
14652
14653 /*Notify UMAC*/
14654 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014655
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14657
14658 /*Although the response is an error - it was processed by our function
14659 so as far as the caller is concerned this is a succesful reponse processing*/
14660 return WDI_STATUS_SUCCESS;
14661 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014662
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 wpalMutexRelease(&pWDICtx->wptMutex);
14664
14665 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14666 {
14667 /* FTM mode does not need to execute below */
14668 /* Notify UMAC */
14669 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14670 return WDI_STATUS_SUCCESS;
14671 }
14672
14673 /* START the Data transport */
14674 WDTS_startTransport(pWDICtx);
14675
14676 /*Start the STA Table !- check this logic again*/
14677 WDI_STATableStart(pWDICtx);
14678
14679#ifndef HAL_SELF_STA_PER_BSS
14680 /* Store the Self STA Index */
14681 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14682
14683 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14684 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14685 WDI_MAC_ADDR_LEN);
14686
14687 /* At this point add the self-STA */
14688
14689 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14690 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14691 /*! TO DO: wdiAddSTAParam.dpuSig */
14692 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14693 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14694 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14695
14696 //all DPU indices are the same for self STA
14697 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14698 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014699 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14701 WDI_MAC_ADDR_LEN);
14702 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14703 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14704
14705 /* Note: Since we don't get an explicit config STA request for self STA, we
14706 add the self STA upon receiving the Start response message. But the
14707 self STA entry in the table is deleted when WDI gets an explicit delete STA
14708 request */
14709 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14710#endif
14711
14712 /*Notify UMAC*/
14713 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14714
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014716}/*WDI_ProcessStartRsp*/
14717
14718
14719/**
14720 @brief Process Stop Response function (called when a response
14721 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014722
14723 @param pWDICtx: pointer to the WLAN DAL context
14724 pEventData: pointer to the event information structure
14725
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 @see
14727 @return Result of the function call
14728*/
14729WDI_Status
14730WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014731(
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 WDI_ControlBlockType* pWDICtx,
14733 WDI_EventInfoType* pEventData
14734)
14735{
14736 WDI_Status wdiStatus;
14737 WDI_StopRspCb wdiStopRspCb = NULL;
14738
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14741
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 -------------------------------------------------------------------------*/
14746 if (( NULL == pEventData ) ||
14747 ( NULL == pEventData->pEventData) ||
14748 ( NULL == wdiStopRspCb ))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 }
14755
14756 /*-------------------------------------------------------------------------
14757 Extract response and send it to UMAC
14758 -------------------------------------------------------------------------*/
14759 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14760 {
14761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14762 "Invalid response length in Stop Resp %x %x",
14763 pEventData->uEventDataSize);
14764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 }
14767
14768 /*-------------------------------------------------------------------------
14769 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14773 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 sizeof(halMacStopRspMsg.stopRspParams));
14775
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014777
14778 wpalMutexAcquire(&pWDICtx->wptMutex);
14779
14780 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 --------------------------------------------------------------------------*/
14783 if ( WDI_STATUS_SUCCESS != wdiStatus )
14784 {
14785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14786 "Failed to stop the device with status %s (%d)",
14787 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14788 halMacStopRspMsg.stopRspParams.status);
14789
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14791
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014795
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14797
14798 /*Transition now as WDI may get preempted imediately after it sends
14799 up the Stop Response and it will not get to process the state transition
14800 from Main Rsp function*/
14801 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14802 wpalMutexRelease(&pWDICtx->wptMutex);
14803
14804 /*! TO DO: - STOP the Data transport */
14805
14806 /*Notify UMAC*/
14807 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14808
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810}/*WDI_ProcessStopRsp*/
14811
14812/**
14813 @brief Process Close Rsp function (called when a response
14814 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014815
14816 @param pWDICtx: pointer to the WLAN DAL context
14817 pEventData: pointer to the event information structure
14818
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 @see
14820 @return Result of the function call
14821*/
14822WDI_Status
14823WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014824(
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 WDI_ControlBlockType* pWDICtx,
14826 WDI_EventInfoType* pEventData
14827)
14828{
14829 /*There is no close response comming from HAL - function just kept for
14830 simmetry */
14831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014833}/*WDI_ProcessCloseRsp*/
14834
14835
14836/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014838============================================================================*/
14839
14840/**
14841 @brief Process Init Scan Rsp function (called when a response
14842 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014843
14844 @param pWDICtx: pointer to the WLAN DAL context
14845 pEventData: pointer to the event information structure
14846
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 @see
14848 @return Result of the function call
14849*/
14850WDI_Status
14851WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014852(
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 WDI_ControlBlockType* pWDICtx,
14854 WDI_EventInfoType* pEventData
14855)
14856{
14857 WDI_Status wdiStatus;
14858 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014859 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014860 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14862
14863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 -------------------------------------------------------------------------*/
14866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14867 ( NULL == pEventData->pEventData))
14868 {
14869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 }
14874
14875 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14876 if( NULL == wdiInitScanRspCb)
14877 {
14878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014879 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 }
14883
14884 /*-------------------------------------------------------------------------
14885 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14889 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 sizeof(halInitScanRspMsg.initScanRspParams));
14891
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014893
14894 if ( pWDICtx->bInBmps )
14895 {
14896 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014897 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14898 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14900 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14901 WDI_ASSERT(0);
14902 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 }
14904
14905 /*Notify UMAC*/
14906 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14907
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014909}/*WDI_ProcessInitScanRsp*/
14910
14911
14912/**
14913 @brief Process Start Scan Rsp function (called when a response
14914 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014915
14916 @param pWDICtx: pointer to the WLAN DAL context
14917 pEventData: pointer to the event information structure
14918
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 @see
14920 @return Result of the function call
14921*/
14922WDI_Status
14923WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014924(
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 WDI_ControlBlockType* pWDICtx,
14926 WDI_EventInfoType* pEventData
14927)
14928{
14929 WDI_StartScanRspParamsType wdiStartScanParams;
14930 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014931
14932 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14934
14935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 -------------------------------------------------------------------------*/
14938 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14939 ( NULL == pEventData->pEventData))
14940 {
14941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 }
14946
14947 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14948 if( NULL == wdiStartScanRspCb)
14949 {
14950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014951 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 }
14955
14956 /*-------------------------------------------------------------------------
14957 Extract response and send it to UMAC
14958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14960 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 sizeof(halStartScanRspMsg.startScanRspParams));
14962
14963 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14964 halStartScanRspMsg.startScanRspParams.status);
14965#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 halStartScanRspMsg.startScanRspParams.startTSF,
14970 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014971#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014972
14973 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14974 {
14975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14976 "Start scan failed with status %s (%d)",
14977 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14978 halStartScanRspMsg.startScanRspParams.status);
14979 /* send the status to UMAC, don't return from here*/
14980 }
14981
14982 /*Notify UMAC*/
14983 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14984
Jeff Johnsone7245742012-09-05 17:12:55 -070014985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014986
14987}/*WDI_ProcessStartScanRsp*/
14988
14989
14990/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014993
14994 @param pWDICtx: pointer to the WLAN DAL context
14995 pEventData: pointer to the event information structure
14996
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 @see
14998 @return Result of the function call
14999*/
15000WDI_Status
15001WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015002(
Jeff Johnson295189b2012-06-20 16:38:30 -070015003 WDI_ControlBlockType* pWDICtx,
15004 WDI_EventInfoType* pEventData
15005)
15006{
15007 WDI_Status wdiStatus;
15008 tHalEndScanRspMsg halEndScanRspMsg;
15009 WDI_EndScanRspCb wdiEndScanRspCb;
15010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15011
15012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 -------------------------------------------------------------------------*/
15015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15016 ( NULL == pEventData->pEventData))
15017 {
15018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 }
15023
15024 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15025
15026 /*-------------------------------------------------------------------------
15027 Extract response and send it to UMAC
15028 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015029 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15030 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 sizeof(halEndScanRspMsg.endScanRspParams));
15032
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015034
15035 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15036 {
15037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15038 "End Scan failed with status %s (%d )",
15039 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15040 halEndScanRspMsg.endScanRspParams.status);
15041 /* send the status to UMAC, don't return from here*/
15042 }
15043
15044 /*Notify UMAC*/
15045 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15046
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015048}/*WDI_ProcessEndScanRsp*/
15049
15050
15051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015054
15055 @param pWDICtx: pointer to the WLAN DAL context
15056 pEventData: pointer to the event information structure
15057
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 @see
15059 @return Result of the function call
15060*/
15061WDI_Status
15062WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015063(
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 WDI_ControlBlockType* pWDICtx,
15065 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015066)
Jeff Johnson295189b2012-06-20 16:38:30 -070015067{
15068 WDI_Status wdiStatus;
15069 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015070
15071 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15073
15074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 -------------------------------------------------------------------------*/
15077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15078 ( NULL == pEventData->pEventData))
15079 {
15080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 }
15085
15086 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15087
15088 /*-------------------------------------------------------------------------
15089 Extract response and send it to UMAC
15090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15092 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15094
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015096
15097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015098 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 halFinishScanRspMsg.finishScanRspParams.status);
15100
15101 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15102 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15103 {
15104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15105 "Finish Scan failed with status %s (%d)",
15106 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15107 halFinishScanRspMsg.finishScanRspParams.status);
15108 /* send the status to UMAC, don't return from here*/
15109 }
15110
15111 /*Notify UMAC*/
15112 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15113
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115}/*WDI_ProcessFinishScanRsp*/
15116
15117/**
15118 @brief Process Join Response function (called when a response
15119 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015120
15121 @param pWDICtx: pointer to the WLAN DAL context
15122 pEventData: pointer to the event information structure
15123
Jeff Johnson295189b2012-06-20 16:38:30 -070015124 @see
15125 @return Result of the function call
15126*/
15127WDI_Status
15128WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015129(
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 WDI_ControlBlockType* pWDICtx,
15131 WDI_EventInfoType* pEventData
15132)
15133{
15134 WDI_Status wdiStatus;
15135 WDI_JoinRspCb wdiJoinRspCb;
15136 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015137
15138 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15140
15141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 -------------------------------------------------------------------------*/
15144 if (( NULL == pWDICtx ) ||
15145 ( NULL == pWDICtx->pfncRspCB ) ||
15146 ( NULL == pEventData ) ||
15147 ( NULL == pEventData->pEventData))
15148 {
15149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 }
15154
15155 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15156
15157 /*-------------------------------------------------------------------------
15158 Extract response and send it to UMAC
15159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 sizeof(halJoinRspMsg.joinRspParams));
15163
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015165
15166 wpalMutexAcquire(&pWDICtx->wptMutex);
15167
15168 /*-----------------------------------------------------------------------
15169 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15174 {
15175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15177 "association no longer in progress %d - mysterious HAL response",
15178 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015179
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 }
15184
15185 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15186
15187 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 -----------------------------------------------------------------------*/
15190 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15191 {
15192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15193 "Join only allowed in Joining state - failure state is %d "
15194 "strange HAL response", pBSSSes->wdiAssocState);
15195
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15197
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 }
15201
15202
15203 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015204 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 -----------------------------------------------------------------------*/
15206 if ( WDI_STATUS_SUCCESS != wdiStatus )
15207 {
15208 /*Association was failed by HAL - remove session*/
15209 WDI_DeleteSession(pWDICtx, pBSSSes);
15210
15211 /*Association no longer in progress */
15212 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15213
15214 /*Association no longer in progress - prepare pending assoc for processing*/
15215 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015216
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 }
15218 else
15219 {
15220 /*Transition to state Joining - this may be redundant as we are supposed
15221 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 }
15224
15225 wpalMutexRelease(&pWDICtx->wptMutex);
15226
15227 /*Notify UMAC*/
15228 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15229
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015231}/*WDI_ProcessJoinRsp*/
15232
15233
15234/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015237
15238 @param pWDICtx: pointer to the WLAN DAL context
15239 pEventData: pointer to the event information structure
15240
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 @see
15242 @return Result of the function call
15243*/
15244WDI_Status
15245WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015246(
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 WDI_ControlBlockType* pWDICtx,
15248 WDI_EventInfoType* pEventData
15249)
15250{
15251 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15252 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 WDI_BSSSessionType* pBSSSes = NULL;
15255
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15258 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015259
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15261
15262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 -------------------------------------------------------------------------*/
15265 if (( NULL == pEventData ) ||
15266 ( NULL == pEventData->pEventData))
15267 {
15268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 }
15273
15274 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15275
15276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15280 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 sizeof(halConfigBssRspMsg.configBssRspParams));
15282
15283 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15284 halConfigBssRspMsg.configBssRspParams.status);
15285 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15286 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15289 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015290
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015292
15293 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295
15296 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015298
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015300
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15304 #endif
15305 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15306 halConfigBssRspMsg.configBssRspParams.staMac,
15307 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015308
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 wpalMutexAcquire(&pWDICtx->wptMutex);
15310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15314 wdiConfigBSSParams.macBSSID,
15315 &pBSSSes);
15316
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 /*-----------------------------------------------------------------------
15318 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 -----------------------------------------------------------------------*/
15321 if ( NULL == pBSSSes )
15322 {
15323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15324 "Association sequence for this BSS does not yet exist "
15325 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015326
15327 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15328
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015332
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 /*Save data for this BSS*/
15334 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15335 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15346 pBSSSes->bcastStaIdx =
15347 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015348
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015350
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 /*-------------------------------------------------------------------------
15352 Add Peer STA
15353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15356 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 wdiAddSTAParam.ucHTCapable =
15362 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15363 wdiAddSTAParam.ucStaType =
15364 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15365
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15368 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015370
15371 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15372 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15373 WDI_MAC_ADDR_LEN);
15374
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015376 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015383 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015388
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15390 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015391
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15393 /*-------------------------------------------------------------------------
15394 Add Broadcast STA only in AP mode
15395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015397 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 {
15399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15400 "Add BCAST STA to table for index: %d",
15401 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015402
15403 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015405
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15407 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15408 }
15409 wpalMutexRelease(&pWDICtx->wptMutex);
15410 }
15411 else
15412 {
15413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15414 "Config BSS RSP failed with status : %s(%d)",
15415 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 halConfigBssRspMsg.configBssRspParams.status);
15418
Jeff Johnsone7245742012-09-05 17:12:55 -070015419
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 /*Association was failed by HAL - remove session*/
15421 WDI_DeleteSession(pWDICtx, pBSSSes);
15422
15423 /*Association no longer in progress */
15424 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15425
15426 /*Association no longer in progress - prepare pending assoc for processing*/
15427 WDI_DequeueAssocRequest(pWDICtx);
15428
15429 }
15430
15431 /*Notify UMAC*/
15432 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15433
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015435}/*WDI_ProcessConfigBSSRsp*/
15436
15437
15438/**
15439 @brief Process Del BSS Response function (called when a response
15440 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015441
15442 @param pWDICtx: pointer to the WLAN DAL context
15443 pEventData: pointer to the event information structure
15444
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 @see
15446 @return Result of the function call
15447*/
15448WDI_Status
15449WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015450(
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 WDI_ControlBlockType* pWDICtx,
15452 WDI_EventInfoType* pEventData
15453)
15454{
15455 WDI_DelBSSRspParamsType wdiDelBSSParams;
15456 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 WDI_BSSSessionType* pBSSSes = NULL;
15459
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15462
15463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015465 -------------------------------------------------------------------------*/
15466 if (( NULL == pEventData ) ||
15467 ( NULL == pEventData->pEventData))
15468 {
15469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 }
15474
15475 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15476
15477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015478 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15481 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 sizeof(halDelBssRspMsg.deleteBssRspParams));
15483
15484
15485 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015487
15488 wpalMutexAcquire(&pWDICtx->wptMutex);
15489
15490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15494 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15495 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015496
15497 /*-----------------------------------------------------------------------
15498 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 -----------------------------------------------------------------------*/
15501 if ( NULL == pBSSSes )
15502 {
15503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15504 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015505 "association no longer in progress - mysterious HAL response");
15506
15507 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15508
15509 wpalMutexRelease(&pWDICtx->wptMutex);
15510 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015512
15513 /*Extract BSSID for the response to UMAC*/
15514 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15515 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15516
15517 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15518
15519 /*-----------------------------------------------------------------------
15520 The current session will be deleted
15521 -----------------------------------------------------------------------*/
15522 WDI_DeleteSession(pWDICtx, pBSSSes);
15523
15524
15525 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15526 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015528 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015529 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015530
15531 /* Delete the STA's in this BSS */
15532 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15533
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 wpalMutexRelease(&pWDICtx->wptMutex);
15535
15536 /*Notify UMAC*/
15537 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15538
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015540}/*WDI_ProcessDelBSSRsp*/
15541
15542/**
15543 @brief Process Post Assoc Rsp function (called when a response
15544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015545
15546 @param pWDICtx: pointer to the WLAN DAL context
15547 pEventData: pointer to the event information structure
15548
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 @see
15550 @return Result of the function call
15551*/
15552WDI_Status
15553WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015554(
Jeff Johnson295189b2012-06-20 16:38:30 -070015555 WDI_ControlBlockType* pWDICtx,
15556 WDI_EventInfoType* pEventData
15557)
15558{
15559 WDI_PostAssocRspParamsType wdiPostAssocParams;
15560 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15565
15566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 -------------------------------------------------------------------------*/
15569 if (( NULL == pEventData ) ||
15570 ( NULL == pEventData->pEventData))
15571 {
15572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 }
15577
15578 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15579
15580 /*-------------------------------------------------------------------------
15581 Extract response and send it to UMAC
15582 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15584 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 sizeof(halPostAssocRspMsg.postAssocRspParams));
15586
15587 /*Extract the Post Assoc STA Params */
15588
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15595
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wdiPostAssocParams.wdiStatus =
15597 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015598
15599 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15600 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15602 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 WDI_MAC_ADDR_LEN);
15604
15605 /* Extract Post Assoc BSS Params */
15606
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15608 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15609 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015610
15611 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15612 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015613 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15615 .macSTA, WDI_MAC_ADDR_LEN);
15616
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15619
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15622
15623 wdiPostAssocParams.bssParams.ucBSSIdx =
15624 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15625
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15628
15629 wpalMutexAcquire(&pWDICtx->wptMutex);
15630
15631 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015637
15638 /*-----------------------------------------------------------------------
15639 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 -----------------------------------------------------------------------*/
15642 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15645 {
15646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15647 "Association sequence for this BSS does not yet exist or "
15648 "association no longer in progress - mysterious HAL response");
15649
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15651
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015653 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 }
15655
15656 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 -----------------------------------------------------------------------*/
15659 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15660 {
15661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15662 "Post Assoc not allowed before JOIN - failing request "
15663 "strange HAL response");
15664
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15666
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 }
15670
15671 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 -----------------------------------------------------------------------*/
15674 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15675 {
15676 /*Association was failed by HAL - remove session*/
15677 WDI_DeleteSession(pWDICtx, pBSSSes);
15678 }
15679 else
15680 {
15681 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015683
15684 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15693
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15696 }
15697
15698 /*Association no longer in progress */
15699 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15700
15701 /*Association no longer in progress - prepare pending assoc for processing*/
15702 WDI_DequeueAssocRequest(pWDICtx);
15703
15704 wpalMutexRelease(&pWDICtx->wptMutex);
15705
15706 /*Notify UMAC*/
15707 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15708
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015710}/*WDI_ProcessPostAssocRsp*/
15711
15712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015715
15716 @param pWDICtx: pointer to the WLAN DAL context
15717 pEventData: pointer to the event information structure
15718
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 @see
15720 @return Result of the function call
15721*/
15722WDI_Status
15723WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015724(
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 WDI_ControlBlockType* pWDICtx,
15726 WDI_EventInfoType* pEventData
15727)
15728{
15729 WDI_DelSTARspParamsType wdiDelSTARsp;
15730 WDI_DelSTARspCb wdiDelSTARspCb;
15731 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15734
15735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 -------------------------------------------------------------------------*/
15738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15739 ( NULL == pEventData->pEventData))
15740 {
15741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 }
15746
15747 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15748
15749 /*-------------------------------------------------------------------------
15750 Extract response and send it to UMAC
15751 -------------------------------------------------------------------------*/
15752 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 sizeof(halDelStaRspMsg.delStaRspParams));
15755
15756 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 wdiDelSTARsp.wdiStatus =
15758 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015759
15760 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15761
15762 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15763 if(staType == WDI_STA_ENTRY_SELF)
15764 {
15765 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15766
15767 /* At this point add the self-STA */
15768
15769 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15770 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15771 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15772
15773#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15774#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15775
15776 //all DPU indices are the same for self STA
15777 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15778 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15779 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15780 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15781 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15782 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015783
15784 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 }
15786 else
15787 {
15788 //Delete the station in the table
15789 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15790 }
15791
15792 /*Notify UMAC*/
15793 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15794
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796}/*WDI_ProcessDelSTARsp*/
15797
15798
15799/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015801==========================================================================*/
15802
15803/**
15804 @brief Process Set BSS Key Rsp function (called when a response
15805 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015806
15807 @param pWDICtx: pointer to the WLAN DAL context
15808 pEventData: pointer to the event information structure
15809
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 @see
15811 @return Result of the function call
15812*/
15813WDI_Status
15814WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015815(
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 WDI_ControlBlockType* pWDICtx,
15817 WDI_EventInfoType* pEventData
15818)
15819{
15820 WDI_Status wdiStatus;
15821 eHalStatus halStatus;
15822 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15824
15825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 -------------------------------------------------------------------------*/
15828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15829 ( NULL == pEventData->pEventData))
15830 {
15831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 }
15836
15837 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15838
15839 /*-------------------------------------------------------------------------
15840 Extract response and send it to UMAC
15841 -------------------------------------------------------------------------*/
15842 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015844
15845 if ( eHAL_STATUS_SUCCESS != halStatus )
15846 {
15847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15848 "Set BSS Key failed with status %s (%d)",
15849 WDI_getHALStatusMsgString(halStatus),
15850 halStatus);
15851 /* send the status to UMAC, don't return from here*/
15852 }
15853
15854 /*Notify UMAC*/
15855 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15856
Jeff Johnsone7245742012-09-05 17:12:55 -070015857 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015858}/*WDI_ProcessSetBssKeyRsp*/
15859
15860/**
15861 @brief Process Remove BSS Key Rsp function (called when a response
15862 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015863
15864 @param pWDICtx: pointer to the WLAN DAL context
15865 pEventData: pointer to the event information structure
15866
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 @see
15868 @return Result of the function call
15869*/
15870WDI_Status
15871WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015872(
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 WDI_ControlBlockType* pWDICtx,
15874 WDI_EventInfoType* pEventData
15875)
15876{
15877 WDI_Status wdiStatus;
15878 eHalStatus halStatus;
15879 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15881
15882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 -------------------------------------------------------------------------*/
15885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15886 ( NULL == pEventData->pEventData))
15887 {
15888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 }
15893
15894 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15895
15896 /*-------------------------------------------------------------------------
15897 Extract response and send it to UMAC
15898 -------------------------------------------------------------------------*/
15899 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015901
15902 if ( eHAL_STATUS_SUCCESS != halStatus )
15903 {
15904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15905 "Remove BSS Key failed with status %s (%d )",
15906 WDI_getHALStatusMsgString(halStatus),
15907 halStatus);
15908 /* send the status to UMAC, don't return from here*/
15909 }
15910
15911 /*Notify UMAC*/
15912 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15913
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015915}/*WDI_ProcessSetBssKeyRsp*/
15916
15917
15918/**
15919 @brief Process Set STA Key Rsp function (called when a response
15920 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015921
15922 @param pWDICtx: pointer to the WLAN DAL context
15923 pEventData: pointer to the event information structure
15924
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 @see
15926 @return Result of the function call
15927*/
15928WDI_Status
15929WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015930(
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 WDI_ControlBlockType* pWDICtx,
15932 WDI_EventInfoType* pEventData
15933)
15934{
15935 WDI_Status wdiStatus;
15936 eHalStatus halStatus;
15937 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15939
15940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 -------------------------------------------------------------------------*/
15943 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15944 ( NULL == pEventData->pEventData))
15945 {
15946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 }
15951
15952 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15953
15954 /*-------------------------------------------------------------------------
15955 Extract response and send it to UMAC
15956 -------------------------------------------------------------------------*/
15957 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015959
15960 if ( eHAL_STATUS_SUCCESS != halStatus )
15961 {
15962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15963 "Set STA Key failed with status %s (%d)",
15964 WDI_getHALStatusMsgString(halStatus),
15965 halStatus);
15966 /* send the status to UMAC, don't return from here*/
15967 }
15968
15969 /*Notify UMAC*/
15970 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15971
Jeff Johnsone7245742012-09-05 17:12:55 -070015972 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015973}/*WDI_ProcessSetSTAKeyRsp*/
15974
15975/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015978
15979 @param pWDICtx: pointer to the WLAN DAL context
15980 pEventData: pointer to the event information structure
15981
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 @see
15983 @return Result of the function call
15984*/
15985WDI_Status
15986WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015987(
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 WDI_ControlBlockType* pWDICtx,
15989 WDI_EventInfoType* pEventData
15990)
15991{
15992 WDI_Status wdiStatus;
15993 eHalStatus halStatus;
15994 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15996
15997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 -------------------------------------------------------------------------*/
16000 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16001 ( NULL == pEventData->pEventData))
16002 {
16003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 }
16008
16009 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16010
16011 /*-------------------------------------------------------------------------
16012 Extract response and send it to UMAC
16013 -------------------------------------------------------------------------*/
16014 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016016
16017 if ( eHAL_STATUS_SUCCESS != halStatus )
16018 {
16019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16020 "Remove STA Key failed with status %s (%d)",
16021 WDI_getHALStatusMsgString(halStatus),
16022 halStatus);
16023 /* send the status to UMAC, don't return from here*/
16024 }
16025
16026 /*Notify UMAC*/
16027 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016030}/*WDI_ProcessRemoveStaKeyRsp*/
16031
16032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016035
16036 @param pWDICtx: pointer to the WLAN DAL context
16037 pEventData: pointer to the event information structure
16038
Jeff Johnson295189b2012-06-20 16:38:30 -070016039 @see
16040 @return Result of the function call
16041*/
16042WDI_Status
16043WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016044(
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 WDI_ControlBlockType* pWDICtx,
16046 WDI_EventInfoType* pEventData
16047)
16048{
16049 WDI_Status wdiStatus;
16050 eHalStatus halStatus;
16051 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16053
16054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 -------------------------------------------------------------------------*/
16057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16058 ( NULL == pEventData->pEventData))
16059 {
16060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 }
16065
16066 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16067
16068 /*-------------------------------------------------------------------------
16069 Extract response and send it to UMAC
16070 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 wpalMemoryCopy( &halStatus,
16072 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 sizeof(halStatus));
16074
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016076
16077 if ( eHAL_STATUS_SUCCESS != halStatus )
16078 {
16079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16080 "Set STA Key failed with status %s (%d)",
16081 WDI_getHALStatusMsgString(halStatus),
16082 halStatus);
16083 /* send the status to UMAC, don't return from here*/
16084 }
16085
16086 /*Notify UMAC*/
16087 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16088
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090}/*WDI_ProcessSetSTABcastKeyRsp*/
16091
16092/**
16093 @brief Process Remove STA Bcast Key Rsp function (called when a
16094 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016095
16096 @param pWDICtx: pointer to the WLAN DAL context
16097 pEventData: pointer to the event information structure
16098
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 @see
16100 @return Result of the function call
16101*/
16102WDI_Status
16103WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016104(
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 WDI_ControlBlockType* pWDICtx,
16106 WDI_EventInfoType* pEventData
16107)
16108{
16109 WDI_Status wdiStatus;
16110 eHalStatus halStatus;
16111 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16113
16114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 -------------------------------------------------------------------------*/
16117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16118 ( NULL == pEventData->pEventData))
16119 {
16120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 }
16125
16126 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16127
16128 /*-------------------------------------------------------------------------
16129 Extract response and send it to UMAC
16130 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 wpalMemoryCopy( &halStatus,
16132 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 sizeof(halStatus));
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016136
16137 if ( eHAL_STATUS_SUCCESS != halStatus )
16138 {
16139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16140 "Remove STA Key failed with status %s (%d)",
16141 WDI_getHALStatusMsgString(halStatus),
16142 halStatus);
16143 /* send the status to UMAC, don't return from here*/
16144 }
16145
16146 /*Notify UMAC*/
16147 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16148
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016150}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16151
16152
16153/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016155==========================================================================*/
16156
16157/**
16158 @brief Process Add TSpec Rsp function (called when a response
16159 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016160
16161 @param pWDICtx: pointer to the WLAN DAL context
16162 pEventData: pointer to the event information structure
16163
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 @see
16165 @return Result of the function call
16166*/
16167WDI_Status
16168WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016169(
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 WDI_ControlBlockType* pWDICtx,
16171 WDI_EventInfoType* pEventData
16172)
16173{
16174 WDI_Status wdiStatus;
16175 eHalStatus halStatus;
16176 WDI_AddTsRspCb wdiAddTsRspCb;
16177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16178
16179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 -------------------------------------------------------------------------*/
16182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16183 ( NULL == pEventData->pEventData))
16184 {
16185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 }
16190
16191 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16192
16193 /*-------------------------------------------------------------------------
16194 Extract response and send it to UMAC
16195 -------------------------------------------------------------------------*/
16196 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016198
16199 /*Notify UMAC*/
16200 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16201
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016203}/*WDI_ProcessAddTSpecRsp*/
16204
16205
16206/**
16207 @brief Process Del TSpec Rsp function (called when a response
16208 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016209
16210 @param pWDICtx: pointer to the WLAN DAL context
16211 pEventData: pointer to the event information structure
16212
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 @see
16214 @return Result of the function call
16215*/
16216WDI_Status
16217WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016218(
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 WDI_ControlBlockType* pWDICtx,
16220 WDI_EventInfoType* pEventData
16221)
16222{
16223 WDI_Status wdiStatus;
16224 eHalStatus halStatus;
16225 WDI_DelTsRspCb wdiDelTsRspCb;
16226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16227
16228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 -------------------------------------------------------------------------*/
16231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16232 ( NULL == pEventData->pEventData))
16233 {
16234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 }
16239
16240 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16241
16242 /*-------------------------------------------------------------------------
16243 Extract response and send it to UMAC
16244 -------------------------------------------------------------------------*/
16245 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016247
16248 /*Notify UMAC*/
16249 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16250
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016252}/*WDI_ProcessDelTSpecRsp*/
16253
16254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016257
16258 @param pWDICtx: pointer to the WLAN DAL context
16259 pEventData: pointer to the event information structure
16260
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 @see
16262 @return Result of the function call
16263*/
16264WDI_Status
16265WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016266(
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 WDI_ControlBlockType* pWDICtx,
16268 WDI_EventInfoType* pEventData
16269)
16270{
16271 WDI_Status wdiStatus;
16272 eHalStatus halStatus;
16273 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16275
16276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 -------------------------------------------------------------------------*/
16279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16280 ( NULL == pEventData->pEventData))
16281 {
16282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 }
16287
16288 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16289
16290 /*-------------------------------------------------------------------------
16291 Extract response and send it to UMAC
16292 -------------------------------------------------------------------------*/
16293 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016295
16296 /*Notify UMAC*/
16297 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16298
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016300}/*WDI_ProcessUpdateEDCAParamsRsp*/
16301
16302
16303/**
16304 @brief Process Add BA Rsp function (called when a response
16305 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016306
16307 @param pWDICtx: pointer to the WLAN DAL context
16308 pEventData: pointer to the event information structure
16309
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 @see
16311 @return Result of the function call
16312*/
16313WDI_Status
16314WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016315(
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 WDI_ControlBlockType* pWDICtx,
16317 WDI_EventInfoType* pEventData
16318)
16319{
16320 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16321
16322 tAddBASessionRspParams halBASessionRsp;
16323 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16324
Jeff Johnsone7245742012-09-05 17:12:55 -070016325
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16327
16328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016329 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016330 -------------------------------------------------------------------------*/
16331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16332 ( NULL == pEventData->pEventData))
16333 {
16334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 }
16339
16340 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16341
16342 /*-------------------------------------------------------------------------
16343 Extract response and send it to UMAC
16344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016345 wpalMemoryCopy( &halBASessionRsp,
16346 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 sizeof(halBASessionRsp));
16348
16349 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16350
Jeff Johnson43971f52012-07-17 12:26:56 -070016351 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 {
16353 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16354 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16355 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16356 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16357 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16358 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16359 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16360 }
16361
16362 /*Notify UMAC*/
16363 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16364
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016366}/*WDI_ProcessAddSessionBARsp*/
16367
16368
16369/**
16370 @brief Process Del BA Rsp function (called when a response
16371 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016372
16373 @param pWDICtx: pointer to the WLAN DAL context
16374 pEventData: pointer to the event information structure
16375
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 @see
16377 @return Result of the function call
16378*/
16379WDI_Status
16380WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016381(
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 WDI_ControlBlockType* pWDICtx,
16383 WDI_EventInfoType* pEventData
16384)
16385{
16386 WDI_Status wdiStatus;
16387 eHalStatus halStatus;
16388 WDI_DelBARspCb wdiDelBARspCb;
16389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16390
16391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 -------------------------------------------------------------------------*/
16394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16395 ( NULL == pEventData->pEventData))
16396 {
16397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 }
16402
16403 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16404
16405 /*-------------------------------------------------------------------------
16406 Extract response and send it to UMAC
16407 -------------------------------------------------------------------------*/
16408 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016410
16411 if ( eHAL_STATUS_SUCCESS == halStatus )
16412 {
16413 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16414 }
16415
16416 /*Notify UMAC*/
16417 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16418
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016420}/*WDI_ProcessDelBARsp*/
16421
16422#ifdef FEATURE_WLAN_CCX
16423/**
16424 @brief Process TSM Stats Rsp function (called when a response
16425 is being received over the bus from HAL)
16426
16427 @param pWDICtx: pointer to the WLAN DAL context
16428 pEventData: pointer to the event information structure
16429
16430 @see
16431 @return Result of the function call
16432*/
16433WDI_Status
16434WDI_ProcessTsmStatsRsp
16435(
16436 WDI_ControlBlockType* pWDICtx,
16437 WDI_EventInfoType* pEventData
16438)
16439{
16440 WDI_TsmRspCb wdiTsmStatsRspCb;
16441 tTsmStatsRspMsg halTsmStatsRspMsg;
16442 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16444
16445 /*-------------------------------------------------------------------------
16446 Sanity check
16447 -------------------------------------------------------------------------*/
16448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16449 ( NULL == pEventData->pEventData))
16450 {
16451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 WDI_ASSERT(0);
16454 return WDI_STATUS_E_FAILURE;
16455 }
16456
16457 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16458
16459 /*-------------------------------------------------------------------------
16460 Unpack HAL Response Message - the header was already extracted by the
16461 main Response Handling procedure
16462 -------------------------------------------------------------------------*/
16463 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16464 pEventData->pEventData,
16465 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16466
16467 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16468 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16469 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16470 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16471 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16472 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16473 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16474 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16475 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16476 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16477 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16478 halTsmStatsRspMsg.tsmStatsRspParams.status);
16479
16480 /*Notify UMAC*/
16481 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16482
16483 return WDI_STATUS_SUCCESS;
16484}/*WDI_ProcessTsmStatsRsp*/
16485
16486#endif
16487
16488
16489
16490/**
16491 @brief Process Flush AC Rsp function (called when a response
16492 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016493
16494 @param pWDICtx: pointer to the WLAN DAL context
16495 pEventData: pointer to the event information structure
16496
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 @see
16498 @return Result of the function call
16499*/
16500WDI_Status
16501WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016502(
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 WDI_ControlBlockType* pWDICtx,
16504 WDI_EventInfoType* pEventData
16505)
16506{
16507 WDI_Status wdiStatus;
16508 eHalStatus halStatus;
16509 WDI_FlushAcRspCb wdiFlushAcRspCb;
16510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16511
16512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 -------------------------------------------------------------------------*/
16515 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16516 ( NULL == pEventData->pEventData))
16517 {
16518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 }
16523
16524 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16525
16526 /*-------------------------------------------------------------------------
16527 Extract response and send it to UMAC
16528 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 wpalMemoryCopy( &halStatus,
16530 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 sizeof(halStatus));
16532
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016534
16535 /*Notify UMAC*/
16536 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16537
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016539}/*WDI_ProcessFlushAcRsp*/
16540
16541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016544
16545 @param pWDICtx: pointer to the WLAN DAL context
16546 pEventData: pointer to the event information structure
16547
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 @see
16549 @return Result of the function call
16550*/
16551WDI_Status
16552WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016553(
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 WDI_ControlBlockType* pWDICtx,
16555 WDI_EventInfoType* pEventData
16556)
16557{
16558 WDI_Status wdiStatus;
16559 eHalStatus halStatus;
16560 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16562
16563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 -------------------------------------------------------------------------*/
16566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16567 ( NULL == pEventData->pEventData))
16568 {
16569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 }
16574
16575 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16576
16577 /*-------------------------------------------------------------------------
16578 Extract response and send it to UMAC
16579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 wpalMemoryCopy( &halStatus,
16581 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 sizeof(halStatus));
16583
Jeff Johnsone7245742012-09-05 17:12:55 -070016584 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016585
16586 /*Notify UMAC*/
16587 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16588
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016590}/*WDI_ProcessBtAmpEventRsp*/
16591
16592
16593/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016594 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016595 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016596
16597 @param pWDICtx: pointer to the WLAN DAL context
16598 pEventData: pointer to the event information structure
16599
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 @see
16601 @return Result of the function call
16602*/
16603WDI_Status
16604WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016605(
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 WDI_ControlBlockType* pWDICtx,
16607 WDI_EventInfoType* pEventData
16608)
16609{
16610 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16611 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16612 tAddStaSelfRspMsg halAddStaSelfRsp;
16613 WDI_AddStaParams wdiAddSTAParam = {0};
16614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16615
16616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 -------------------------------------------------------------------------*/
16619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16620 ( NULL == pEventData->pEventData))
16621 {
16622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 }
16627
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16630
16631 /*-------------------------------------------------------------------------
16632 Extract response and send it to UMAC
16633 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16635 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16637
16638
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 wdiAddSTASelfParams.wdiStatus =
16640 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016641
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16648
16649 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16650 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16651 WDI_MAC_ADDR_LEN);
16652
16653
16654#ifdef HAL_SELF_STA_PER_BSS
16655
16656 /* At this point add the self-STA */
16657
16658 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16659 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16660 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16661
16662 //all DPU indices are the same for self STA
16663
16664 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16667 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16668 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16669 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16670 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16671
16672 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16673 WDI_MAC_ADDR_LEN);
16674
16675 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16676 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16677
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16680 {
16681 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16682 }
16683#endif
16684
16685 /*Notify UMAC*/
16686 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16687
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016689}/*WDI_ProcessAddSTASelfRsp*/
16690
16691
16692
16693/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016696
16697 @param pWDICtx: pointer to the WLAN DAL context
16698 pEventData: pointer to the event information structure
16699
Jeff Johnson295189b2012-06-20 16:38:30 -070016700 @see
16701 @return Result of the function call
16702*/
16703WDI_Status
16704WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016705(
Jeff Johnson295189b2012-06-20 16:38:30 -070016706 WDI_ControlBlockType* pWDICtx,
16707 WDI_EventInfoType* pEventData
16708)
16709{
16710 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16711 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16712 tDelStaSelfRspParams delStaSelfRspParams;
16713 wpt_uint8 ucStaIdx;
16714
16715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16716
16717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 -------------------------------------------------------------------------*/
16720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16721 ( NULL == pEventData->pEventData))
16722 {
16723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 }
16728
16729 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16730
16731 /*-------------------------------------------------------------------------
16732 Extract response and send it to UMAC
16733 -------------------------------------------------------------------------*/
16734
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 (wpt_uint8*)pEventData->pEventData,
16737 sizeof(tDelStaSelfRspParams));
16738
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 wdiDelStaSelfRspParams.wdiStatus =
16740 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016741
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16744 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16745 {
16746 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016747 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016748 delStaSelfRspParams.selfMacAddr,
16749 &ucStaIdx);
16750 if(WDI_STATUS_E_FAILURE == wdiStatus)
16751 {
16752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016753 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 }
16757 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16758 }
16759
16760 /*Notify UMAC*/
16761 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16762
16763 return WDI_STATUS_SUCCESS;
16764}
16765
Jeff Johnsone7245742012-09-05 17:12:55 -070016766#ifdef FEATURE_OEM_DATA_SUPPORT
16767/**
16768 @brief Start Oem Data Rsp function (called when a
16769 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016770
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 @param pWDICtx: pointer to the WLAN DAL context
16772 pEventData: pointer to the event information structure
16773
16774 @see
16775 @return Result of the function call
16776*/
16777#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16778
16779WDI_Status
16780WDI_ProcessStartOemDataRsp
16781(
16782 WDI_ControlBlockType* pWDICtx,
16783 WDI_EventInfoType* pEventData
16784)
16785{
16786 WDI_oemDataRspCb wdiOemDataRspCb;
16787 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16788 tStartOemDataRspParams* halStartOemDataRspParams;
16789
16790 /*-------------------------------------------------------------------------
16791 Sanity check
16792 -------------------------------------------------------------------------*/
16793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16794 ( NULL == pEventData->pEventData))
16795 {
16796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016797 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016798 WDI_ASSERT(0);
16799 return WDI_STATUS_E_FAILURE;
16800 }
16801
16802 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16803
16804 /*-------------------------------------------------------------------------
16805 Extract response and send it to UMAC
16806 -------------------------------------------------------------------------*/
16807 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16808
16809
16810 //It is the responsibility of the application code to check for failure
16811 //conditions!
16812
16813 //Allocate memory for WDI OEM DATA RSP structure
16814 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16815
16816 if(NULL == wdiOemDataRspParams)
16817 {
16818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16819 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16820 pWDICtx, pEventData, pEventData->pEventData);
16821 WDI_ASSERT(0);
16822 return WDI_STATUS_E_FAILURE;
16823 }
16824
16825 /* Populate WDI structure members */
16826 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16827
16828 /*Notify UMAC*/
16829 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16830
16831 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16832 wpalMemoryFree(wdiOemDataRspParams);
16833
16834 return WDI_STATUS_SUCCESS;
16835}/*WDI_PrcoessStartOemDataRsp*/
16836#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016837
16838/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016840===========================================================================*/
16841
16842/**
16843 @brief Process Channel Switch Rsp function (called when a response
16844 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016845
16846 @param pWDICtx: pointer to the WLAN DAL context
16847 pEventData: pointer to the event information structure
16848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 @see
16850 @return Result of the function call
16851*/
16852WDI_Status
16853WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016854(
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 WDI_ControlBlockType* pWDICtx,
16856 WDI_EventInfoType* pEventData
16857)
16858{
16859 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16860 WDI_SwitchChRspCb wdiChSwitchRspCb;
16861 tSwitchChannelRspParams halSwitchChannelRsp;
16862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16863
16864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 -------------------------------------------------------------------------*/
16867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16868 ( NULL == pEventData->pEventData))
16869 {
16870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 }
16875
16876 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16877
16878 /*-------------------------------------------------------------------------
16879 Extract response and send it to UMAC
16880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 (wpt_uint8*)pEventData->pEventData,
16883 sizeof(halSwitchChannelRsp));
16884
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 wdiSwitchChRsp.wdiStatus =
16886 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16888
16889#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016890 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016891#endif
16892
16893 /*Notify UMAC*/
16894 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16895
Jeff Johnsone7245742012-09-05 17:12:55 -070016896 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016897}/*WDI_ProcessChannelSwitchRsp*/
16898
16899
16900/**
16901 @brief Process Config STA Rsp function (called when a response
16902 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
16904 @param pWDICtx: pointer to the WLAN DAL context
16905 pEventData: pointer to the event information structure
16906
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 @see
16908 @return Result of the function call
16909*/
16910WDI_Status
16911WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016912(
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 WDI_ControlBlockType* pWDICtx,
16914 WDI_EventInfoType* pEventData
16915)
16916{
16917 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16918 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16919 WDI_AddStaParams wdiAddSTAParam;
16920
16921 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16926
16927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -------------------------------------------------------------------------*/
16930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16931 ( NULL == pEventData->pEventData))
16932 {
16933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 }
16938
16939 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16940
16941 /*-------------------------------------------------------------------------
16942 Extract response and send it to UMAC
16943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16945 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 sizeof(halConfigStaRsp.configStaRspParams));
16947
16948
16949 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16950 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16951 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16952 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16953 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16954
16955 /* MAC Address of STA - take from cache as it does not come back in the
16956 response*/
16957 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016960
16961 wdiCfgSTAParams.wdiStatus =
16962 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016963
16964 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16965 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16966 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16967
16968 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16969 {
16970 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16971 {
16972 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16975 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016976
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 wdiAddSTAParam.ucHTCapable =
16981 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16982 wdiAddSTAParam.ucStaType =
16983 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070016984 wdiAddSTAParam.ucRmfEnabled =
16985 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016986
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16989 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016991
16992 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16993 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16994 WDI_MAC_ADDR_LEN);
16995
16996 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16997 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16998 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016999
17000 if ( NULL == pBSSSes )
17001 {
17002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17003 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017004
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 }
17008
17009 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017012 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017013 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017017 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017019
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17021 }
17022 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17023 {
17024 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17025
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017028 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017032 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017034 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 halConfigStaRsp.configStaRspParams.ucUcastSig;
17040 }
17041 }
17042
17043 /*Notify UMAC*/
17044 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17045
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017047}/*WDI_ProcessConfigStaRsp*/
17048
17049
17050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017053
17054 @param pWDICtx: pointer to the WLAN DAL context
17055 pEventData: pointer to the event information structure
17056
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 @see
17058 @return Result of the function call
17059*/
17060WDI_Status
17061WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017062(
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 WDI_ControlBlockType* pWDICtx,
17064 WDI_EventInfoType* pEventData
17065)
17066{
17067 WDI_Status wdiStatus;
17068 eHalStatus halStatus;
17069 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17070
17071 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017072 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17074
17075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 -------------------------------------------------------------------------*/
17078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17079 ( NULL == pEventData->pEventData))
17080 {
17081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017085 }
17086
17087 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17088
17089 wpalMutexAcquire(&pWDICtx->wptMutex);
17090
17091 /*If the link is being transitioned to idle - the BSS is to be deleted
17092 - this type of ending a session is possible when UMAC has failed an
17093 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017094 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17096 {
17097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17101 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17102 &pBSSSes);
17103
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 /*-----------------------------------------------------------------------
17105 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 -----------------------------------------------------------------------*/
17108 if ( NULL == pBSSSes )
17109 {
17110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17111 "Set link response received outside association session");
17112 }
17113 else
17114 {
17115 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17116 will be del BSS coming after this to stop the beaconing & cleaning up the
17117 sessions*/
17118 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17119 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17120 {
17121 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 -----------------------------------------------------------------------*/
17124 WDI_DeleteSession(pWDICtx, pBSSSes);
17125
17126 /*-----------------------------------------------------------------------
17127 Check to see if this association is in progress - if so disable the
17128 flag as this has ended
17129 -----------------------------------------------------------------------*/
17130 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 /*Association no longer in progress */
17133 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17134 /*Association no longer in progress - prepare pending assoc for processing*/
17135 WDI_DequeueAssocRequest(pWDICtx);
17136 }
17137 }
17138 }
17139 }
17140 /* If the link state has been set to POST ASSOC, reset the "association in
17141 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17144 {
17145 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17146 WDI_DequeueAssocRequest(pWDICtx);
17147 }
17148
17149 wpalMutexRelease(&pWDICtx->wptMutex);
17150
17151 /*-------------------------------------------------------------------------
17152 Extract response and send it to UMAC
17153 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 wpalMemoryCopy( &halStatus,
17155 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 sizeof(halStatus));
17157
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017159
17160 /*Notify UMAC*/
17161 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17162
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017164}/*WDI_ProcessSetLinkStateRsp*/
17165
17166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017167 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017168 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017169
17170 @param pWDICtx: pointer to the WLAN DAL context
17171 pEventData: pointer to the event information structure
17172
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 @see
17174 @return Result of the function call
17175*/
17176WDI_Status
17177WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017178(
Jeff Johnson295189b2012-06-20 16:38:30 -070017179 WDI_ControlBlockType* pWDICtx,
17180 WDI_EventInfoType* pEventData
17181)
17182{
17183 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17184 WDI_GetStatsRspCb wdiGetStatsRspCb;
17185 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017186
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17188
17189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 -------------------------------------------------------------------------*/
17192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17193 ( NULL == pEventData->pEventData))
17194 {
17195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017199 }
17200
17201 /*-------------------------------------------------------------------------
17202 Extract response and send it to UMAC
17203 -------------------------------------------------------------------------*/
17204 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17205
17206 /*allocate the stats response buffer */
17207 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17208 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17209 + sizeof(WDI_GetStatsRspParamsType));
17210
17211 if(NULL == wdiGetStatsRsp)
17212 {
17213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17214 "Failed to allocate memory in Get Stats Response %x %x %x ",
17215 pWDICtx, pEventData, pEventData->pEventData);
17216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 }
17219
17220 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17221
17222 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17223 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17224 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17225 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17226 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17227 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17228
17229 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17230 wpalMemoryCopy(wdiGetStatsRsp + 1,
17231 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17232 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17233
17234 /*Notify UMAC*/
17235 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17236
17237 wpalMemoryFree(wdiGetStatsRsp);
17238
Jeff Johnsone7245742012-09-05 17:12:55 -070017239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017240}/*WDI_ProcessGetStatsRsp*/
17241
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017242#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17243/**
17244 @brief Process Get Roam Rssi Rsp function (called when a response is
17245 being received over the bus from HAL)
17246
17247 @param pWDICtx: pointer to the WLAN DAL context
17248 pEventData: pointer to the event information structure
17249
17250 @see
17251 @return Result of the function call
17252*/
17253WDI_Status
17254WDI_ProcessGetRoamRssiRsp
17255(
17256 WDI_ControlBlockType* pWDICtx,
17257 WDI_EventInfoType* pEventData
17258)
17259{
17260 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17261 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17262 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17264
17265 /*-------------------------------------------------------------------------
17266 Sanity check
17267 -------------------------------------------------------------------------*/
17268 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17269 ( NULL == pEventData->pEventData))
17270 {
17271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17272 "%s: Invalid parameters", __func__);
17273 WDI_ASSERT(0);
17274 return WDI_STATUS_E_FAILURE;
17275 }
17276
17277 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17278 if(NULL == wdiGetRoamRssiRspCb)
17279 {
17280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17281 "%s: call back function is NULL", __func__);
17282 WDI_ASSERT(0);
17283 return WDI_STATUS_E_FAILURE;
17284 }
17285
17286 /*-------------------------------------------------------------------------
17287 Extract response and send it to UMAC
17288 -------------------------------------------------------------------------*/
17289 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17290 pEventData->pEventData,
17291 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17292
17293 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17294 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17295 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17296
17297 /*Notify UMAC*/
17298 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17299
17300 return WDI_STATUS_SUCCESS;
17301}/*WDI_ProcessGetRoamRssiRsp*/
17302#endif
17303
Jeff Johnson295189b2012-06-20 16:38:30 -070017304
17305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017308
17309 @param pWDICtx: pointer to the WLAN DAL context
17310 pEventData: pointer to the event information structure
17311
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 @see
17313 @return Result of the function call
17314*/
17315WDI_Status
17316WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017317(
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 WDI_ControlBlockType* pWDICtx,
17319 WDI_EventInfoType* pEventData
17320)
17321{
17322 WDI_Status wdiStatus;
17323 eHalStatus halStatus;
17324 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17326
17327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 -------------------------------------------------------------------------*/
17330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17331 ( NULL == pEventData->pEventData))
17332 {
17333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017334 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 }
17338
17339 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17340
17341 /*-------------------------------------------------------------------------
17342 Extract response and send it to UMAC
17343 -------------------------------------------------------------------------*/
17344 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017346
17347 /*Notify UMAC*/
17348 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17349
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017351}/*WDI_ProcessUpdateCfgRsp*/
17352
17353
17354
17355/**
17356 @brief Process Add BA Rsp function (called when a response
17357 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017358
17359 @param pWDICtx: pointer to the WLAN DAL context
17360 pEventData: pointer to the event information structure
17361
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 @see
17363 @return Result of the function call
17364*/
17365WDI_Status
17366WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017367(
Jeff Johnson295189b2012-06-20 16:38:30 -070017368 WDI_ControlBlockType* pWDICtx,
17369 WDI_EventInfoType* pEventData
17370)
17371{
17372 WDI_AddBARspCb wdiAddBARspCb;
17373
17374 tAddBARspParams halAddBARsp;
17375 WDI_AddBARspinfoType wdiAddBARsp;
17376
17377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17378
17379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 -------------------------------------------------------------------------*/
17382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17383 ( NULL == pEventData->pEventData))
17384 {
17385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 }
17390
17391 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17392
17393 /*-------------------------------------------------------------------------
17394 Extract response and send it to UMAC
17395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wpalMemoryCopy( &halAddBARsp,
17397 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 sizeof(halAddBARsp));
17399
17400 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17401
Jeff Johnson43971f52012-07-17 12:26:56 -070017402 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 {
17404 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17405 }
17406
17407 /*Notify UMAC*/
17408 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17409
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017411}/*WDI_ProcessAddSessionBARsp*/
17412
17413/**
17414 @brief Process Add BA Rsp function (called when a response
17415 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017416
17417 @param pWDICtx: pointer to the WLAN DAL context
17418 pEventData: pointer to the event information structure
17419
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 @see
17421 @return Result of the function call
17422*/
17423WDI_Status
17424WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017425(
Jeff Johnson295189b2012-06-20 16:38:30 -070017426 WDI_ControlBlockType* pWDICtx,
17427 WDI_EventInfoType* pEventData
17428)
17429{
17430 WDI_TriggerBARspCb wdiTriggerBARspCb;
17431
17432 tTriggerBARspParams* halTriggerBARsp;
17433 tTriggerBaRspCandidate* halBaCandidate;
17434 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17435 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17436 wpt_uint16 index;
17437 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017438 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17440
17441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 -------------------------------------------------------------------------*/
17444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17445 ( NULL == pEventData->pEventData))
17446 {
17447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017451 }
17452
17453 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17454
17455 /*-------------------------------------------------------------------------
17456 Extract response and send it to UMAC
17457 -------------------------------------------------------------------------*/
17458 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17459
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017460 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17461
17462 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17463 {
17464 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017465 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017467
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017468 if(NULL == wdiTriggerBARsp)
17469 {
17470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17471 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17472 pWDICtx, pEventData, pEventData->pEventData);
17473 WDI_ASSERT(0);
17474 return WDI_STATUS_E_FAILURE;
17475 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017476
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017477 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17478
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17482
17483 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17484 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17485
17486 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17487 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017488 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17490 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17491 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017492 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017494 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17496 }
17497 wdiTriggerBARspCandidate++;
17498 halBaCandidate++;
17499 }
17500 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017501 else
17502 {
17503 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17504
17505 if(NULL == wdiTriggerBARsp)
17506 {
17507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17508 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17509 pWDICtx, pEventData, pEventData->pEventData);
17510 WDI_ASSERT(0);
17511 return WDI_STATUS_E_FAILURE;
17512 }
17513
17514 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17515
17516 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017517
17518 /*Notify UMAC*/
17519 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17520
17521 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017523}/*WDI_ProcessAddSessionBARsp*/
17524
17525/**
17526 @brief Process Update Beacon Params Rsp function (called when a response
17527 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017528
17529 @param pWDICtx: pointer to the WLAN DAL context
17530 pEventData: pointer to the event information structure
17531
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 @see
17533 @return Result of the function call
17534*/
17535WDI_Status
17536WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017537(
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 WDI_ControlBlockType* pWDICtx,
17539 WDI_EventInfoType* pEventData
17540)
17541{
17542 WDI_Status wdiStatus;
17543 eHalStatus halStatus;
17544 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17546
17547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 -------------------------------------------------------------------------*/
17550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17551 ( NULL == pEventData->pEventData))
17552 {
17553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017557 }
17558
17559 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17560
17561 /*-------------------------------------------------------------------------
17562 Extract response and send it to UMAC
17563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 wpalMemoryCopy( &halStatus,
17565 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 sizeof(halStatus));
17567
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017569
17570 /*Notify UMAC*/
17571 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17572
Jeff Johnsone7245742012-09-05 17:12:55 -070017573 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017574}/*WDI_ProcessUpdateBeaconParamsRsp*/
17575
17576/**
17577 @brief Process Send Beacon template Rsp function (called when a response
17578 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017579
17580 @param pWDICtx: pointer to the WLAN DAL context
17581 pEventData: pointer to the event information structure
17582
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 @see
17584 @return Result of the function call
17585*/
17586WDI_Status
17587WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017588(
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 WDI_ControlBlockType* pWDICtx,
17590 WDI_EventInfoType* pEventData
17591)
17592{
17593 WDI_Status wdiStatus;
17594 eHalStatus halStatus;
17595 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17597
17598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 -------------------------------------------------------------------------*/
17601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17602 ( NULL == pEventData->pEventData))
17603 {
17604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 }
17609
17610 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17611
17612 /*-------------------------------------------------------------------------
17613 Extract response and send it to UMAC
17614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 wpalMemoryCopy( &halStatus,
17616 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 sizeof(halStatus));
17618
Jeff Johnsone7245742012-09-05 17:12:55 -070017619 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017620
17621 /*Notify UMAC*/
17622 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17623
Jeff Johnsone7245742012-09-05 17:12:55 -070017624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017625}/*WDI_ProcessSendBeaconParamsRsp*/
17626
Jeff Johnsone7245742012-09-05 17:12:55 -070017627
Jeff Johnson295189b2012-06-20 16:38:30 -070017628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017631
17632 @param pWDICtx: pointer to the WLAN DAL context
17633 pEventData: pointer to the event information structure
17634
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 @see
17636 @return Result of the function call
17637*/
17638WDI_Status
17639WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017640(
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 WDI_ControlBlockType* pWDICtx,
17642 WDI_EventInfoType* pEventData
17643)
17644{
17645 WDI_Status wdiStatus;
17646 eHalStatus halStatus;
17647 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17649
17650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 -------------------------------------------------------------------------*/
17653 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17654 ( NULL == pEventData->pEventData))
17655 {
17656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 }
17661
17662 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17663
17664 /*-------------------------------------------------------------------------
17665 Extract response and send it to UMAC
17666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 wpalMemoryCopy( &halStatus,
17668 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 sizeof(halStatus));
17670
Jeff Johnsone7245742012-09-05 17:12:55 -070017671 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017672
17673 /*Notify UMAC*/
17674 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17675
Jeff Johnsone7245742012-09-05 17:12:55 -070017676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017677}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17678
17679 /**
17680 @brief Process Set Max Tx Power Rsp function (called when a response
17681 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017682
17683 @param pWDICtx: pointer to the WLAN DAL context
17684 pEventData: pointer to the event information structure
17685
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 @see
17687 @return Result of the function call
17688*/
17689WDI_Status
17690WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017691(
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ControlBlockType* pWDICtx,
17693 WDI_EventInfoType* pEventData
17694)
17695{
17696 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017697
Jeff Johnson295189b2012-06-20 16:38:30 -070017698 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017699
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17702
17703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 -------------------------------------------------------------------------*/
17706 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17707 ( NULL == pEventData->pEventData))
17708 {
17709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 }
17714
17715 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17716
17717 /*-------------------------------------------------------------------------
17718 Extract response and send it to UMAC
17719 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017720 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17721 pEventData->pEventData,
17722 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017723
17724 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17725 {
17726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17727 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 }
17731
Jeff Johnsone7245742012-09-05 17:12:55 -070017732 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017733 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017734 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017735
17736 /*Notify UMAC*/
17737 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17738
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017740}
17741
schangd82195a2013-03-13 18:41:24 -070017742 /**
17743 @brief Process Set Tx Power Rsp function (called when a response
17744 is being received over the bus from HAL)
17745
17746 @param pWDICtx: pointer to the WLAN DAL context
17747 pEventData: pointer to the event information structure
17748
17749 @see
17750 @return Result of the function call
17751*/
17752WDI_Status
17753WDI_ProcessSetTxPowerRsp
17754(
17755 WDI_ControlBlockType* pWDICtx,
17756 WDI_EventInfoType* pEventData
17757)
17758{
17759 tSetTxPwrRspMsg halTxpowerrsp;
17760 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17761 WDA_SetTxPowerRspCb wdiReqStatusCb;
17762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17763
17764 /*-------------------------------------------------------------------------
17765 Sanity check
17766 -------------------------------------------------------------------------*/
17767 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17768 ( NULL == pEventData->pEventData))
17769 {
17770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17771 "%s: Invalid parameters", __func__);
17772 WDI_ASSERT(0);
17773 return WDI_STATUS_E_FAILURE;
17774 }
17775
17776 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17777
17778 /*-------------------------------------------------------------------------
17779 Extract response and send it to UMAC
17780 -------------------------------------------------------------------------*/
17781 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17782 pEventData->pEventData,
17783 sizeof(halTxpowerrsp.setTxPwrRspParams));
17784
17785 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17786 {
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17788 "Error status returned in Set Tx Power Response ");
17789 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17790 return WDI_STATUS_E_FAILURE;
17791 }
17792
17793 wdiSetTxPowerRspMsg.wdiStatus =
17794 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17795
17796 /*Notify UMAC*/
17797 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17798
17799 return WDI_STATUS_SUCCESS;
17800}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017801#ifdef FEATURE_WLAN_TDLS
17802/**
17803 @brief Process TDLS Link Establish Rsp function (called
17804 when a response is being received over the bus from HAL)
17805
17806 @param pWDICtx: pointer to the WLAN DAL context
17807 pEventData: pointer to the event information structure
17808
17809 @see
17810 @return Result of the function call
17811*/
17812WDI_Status
17813WDI_ProcessLinkEstablishReqRsp
17814(
17815 WDI_ControlBlockType* pWDICtx,
17816 WDI_EventInfoType* pEventData
17817)
17818{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017819 eHalStatus halStatus;
17820 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017821 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
17822 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
17823
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17825
17826 /*-------------------------------------------------------------------------
17827 Sanity check
17828 -------------------------------------------------------------------------*/
17829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17830 ( NULL == pEventData->pEventData))
17831 {
17832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17833 "%s: Invalid parameters", __func__);
17834 WDI_ASSERT(0);
17835 return WDI_STATUS_E_FAILURE;
17836 }
17837
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017838 /*-------------------------------------------------------------------------
17839 Extract indication and send it to UMAC
17840 -------------------------------------------------------------------------*/
17841 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
17842 pEventData->pEventData,
17843 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
17844
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017845 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
17846
17847 /*-------------------------------------------------------------------------
17848 Extract response and send it to UMAC
17849 -------------------------------------------------------------------------*/
17850 wpalMemoryCopy( &halStatus,
17851 pEventData->pEventData,
17852 sizeof(halStatus));
17853
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017854 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17855 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017856
17857 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053017858 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053017859
17860 return WDI_STATUS_SUCCESS;
17861}/*WDI_ProcessLinkEstablishReqRsp*/
17862#endif
schangd82195a2013-03-13 18:41:24 -070017863
Jeff Johnson295189b2012-06-20 16:38:30 -070017864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017867
17868 @param pWDICtx: pointer to the WLAN DAL context
17869 pEventData: pointer to the event information structure
17870
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 @see
17872 @return Result of the function call
17873*/
17874WDI_Status
17875WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017876(
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 WDI_ControlBlockType* pWDICtx,
17878 WDI_EventInfoType* pEventData
17879)
17880{
17881 WDI_Status wdiStatus;
17882 eHalStatus halStatus;
17883 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17885
17886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 -------------------------------------------------------------------------*/
17889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17890 ( NULL == pEventData->pEventData))
17891 {
17892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 }
17897
17898 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17899
17900 /*-------------------------------------------------------------------------
17901 Extract response and send it to UMAC
17902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017903 wpalMemoryCopy( &halStatus,
17904 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 sizeof(halStatus));
17906
Jeff Johnsone7245742012-09-05 17:12:55 -070017907 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017908
17909 /*Notify UMAC*/
17910 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17911
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017913}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017917
17918 @param pWDICtx: pointer to the WLAN DAL context
17919 pEventData: pointer to the event information structure
17920
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 @see
17922 @return Result of the function call
17923*/
17924WDI_Status
17925WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017926(
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 WDI_ControlBlockType* pWDICtx,
17928 WDI_EventInfoType* pEventData
17929)
17930{
17931 WDI_Status wdiStatus;
17932 eHalStatus halStatus;
17933 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017934 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17936
17937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 -------------------------------------------------------------------------*/
17940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17941 ( NULL == pEventData->pEventData))
17942 {
17943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 }
17948
17949 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17950
17951 /*-------------------------------------------------------------------------
17952 Extract response and send it to UMAC
17953 -------------------------------------------------------------------------*/
17954 halStatus = *((eHalStatus*)pEventData->pEventData);
17955
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017957
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017958 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17959 * Other module states are taken care by PMC.
17960 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17961 */
17962 if (wdiStatus != WDI_STATUS_SUCCESS) {
17963
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17965 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17966 halStatus);
17967 /* Call Back is not required as we are putting the DXE in FULL
17968 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017969 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17970
17971 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17973 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17974 WDI_ASSERT(0);
17975 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 /*Notify UMAC*/
17978 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17979
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017981}/*WDI_ProcessEnterImpsRsp*/
17982
17983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017984 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017986
17987 @param pWDICtx: pointer to the WLAN DAL context
17988 pEventData: pointer to the event information structure
17989
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 @see
17991 @return Result of the function call
17992*/
17993WDI_Status
17994WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017995(
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 WDI_ControlBlockType* pWDICtx,
17997 WDI_EventInfoType* pEventData
17998)
17999{
18000 WDI_Status wdiStatus;
18001 eHalStatus halStatus;
18002 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018003 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18005
18006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 -------------------------------------------------------------------------*/
18009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18010 ( NULL == pEventData->pEventData))
18011 {
18012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 }
18017
18018 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18019
18020 /*-------------------------------------------------------------------------
18021 Extract response and send it to UMAC
18022 -------------------------------------------------------------------------*/
18023 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018024 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018025
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018026 if (halStatus != eHAL_STATUS_SUCCESS)
18027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18028 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18029
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018031 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18032 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18033 {
18034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18035 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18036 WDI_ASSERT(0);
18037 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 /*Notify UMAC*/
18039 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18040
Jeff Johnsone7245742012-09-05 17:12:55 -070018041 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018042}/*WDI_ProcessExitImpsRsp*/
18043
18044/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018045 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018047
18048 @param pWDICtx: pointer to the WLAN DAL context
18049 pEventData: pointer to the event information structure
18050
Jeff Johnson295189b2012-06-20 16:38:30 -070018051 @see
18052 @return Result of the function call
18053*/
18054WDI_Status
18055WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018056(
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 WDI_ControlBlockType* pWDICtx,
18058 WDI_EventInfoType* pEventData
18059)
18060{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018061 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18062 tHalEnterBmpsRspParams halEnterBmpsRsp;
18063 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18064 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018065 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18067
18068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 -------------------------------------------------------------------------*/
18071 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18072 ( NULL == pEventData->pEventData))
18073 {
18074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 }
18079
Jeff Johnson295189b2012-06-20 16:38:30 -070018080 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018081 Extract response and send it to UMAC
18082 -------------------------------------------------------------------------*/
18083 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18084 {
18085 wpalMemoryCopy( &halEnterBmpsRsp,
18086 pEventData->pEventData,
18087 sizeof(halEnterBmpsRsp));
18088
18089 //Used to print debug message
18090 halStatus = halEnterBmpsRsp.status;
18091 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18092 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18093 }
18094 else
18095 {
18096 halStatus = *((eHalStatus*)pEventData->pEventData);
18097 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18098 }
18099
18100 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018101
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018102 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18103 * Other module states are taken care by PMC.
18104 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18105 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018106 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18107 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018108
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018110 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18111 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018112 /* Call Back is not required as we are putting the DXE in FULL
18113 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018114 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18115 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18116 {
18117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18118 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18119 WDI_ASSERT(0);
18120 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018121 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018122 }
18123
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018125 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018126
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018128}/*WDI_ProcessEnterBmpsRsp*/
18129
18130/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018131 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018132 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018133
18134 @param pWDICtx: pointer to the WLAN DAL context
18135 pEventData: pointer to the event information structure
18136
Jeff Johnson295189b2012-06-20 16:38:30 -070018137 @see
18138 @return Result of the function call
18139*/
18140WDI_Status
18141WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018142(
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 WDI_ControlBlockType* pWDICtx,
18144 WDI_EventInfoType* pEventData
18145)
18146{
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 eHalStatus halStatus;
18148 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018149 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018150 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18151 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18153
18154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 -------------------------------------------------------------------------*/
18157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18158 ( NULL == pEventData->pEventData))
18159 {
18160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 }
18165
18166 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18167
18168 /*-------------------------------------------------------------------------
18169 Extract response and send it to UMAC
18170 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018171
18172 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18173 {
18174 wpalMemoryCopy( &halExitBmpsRsp,
18175 pEventData->pEventData,
18176 sizeof(halExitBmpsRsp));
18177
18178 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18179 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18180 }
18181 else
18182 {
18183 halStatus = *((eHalStatus*)pEventData->pEventData);
18184 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18185 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018186
18187 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018188 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18189 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18190 {
18191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18192 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18193 WDI_ASSERT(0);
18194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18196
18197 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018198 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018199
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018201}/*WDI_ProcessExitBmpsRsp*/
18202
18203/**
18204 @brief Process Enter UAPSD Rsp function (called when a response
18205 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018206
18207 @param pWDICtx: pointer to the WLAN DAL context
18208 pEventData: pointer to the event information structure
18209
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 @see
18211 @return Result of the function call
18212*/
18213WDI_Status
18214WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018215(
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 WDI_ControlBlockType* pWDICtx,
18217 WDI_EventInfoType* pEventData
18218)
18219{
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018221 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018222 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018223 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18224
Jeff Johnson295189b2012-06-20 16:38:30 -070018225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18226
18227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 -------------------------------------------------------------------------*/
18230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18231 ( NULL == pEventData->pEventData))
18232 {
18233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 }
18238
18239 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18240
18241 /*-------------------------------------------------------------------------
18242 Extract response and send it to UMAC
18243 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018244 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18245 {
18246 wpalMemoryCopy( &halEnterUapsdRsp,
18247 pEventData->pEventData,
18248 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018249
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018250 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18251 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18252 }
18253 else
18254 {
18255 halStatus = *((eHalStatus*)pEventData->pEventData);
18256 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18257 }
18258
18259 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 {
18261 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18262 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18263 // the traffic to decide when to suspend the trigger frames when there is no traffic
18264 // activity on the trigger enabled ACs
18265 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18266
18267#ifdef WLAN_PERF
18268 // Increment the BD signature to refresh the fast path BD utilization
18269 pWDICtx->uBdSigSerialNum++;
18270#endif
18271 }
18272
18273 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018274 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018275
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018277}/*WDI_ProcessEnterUapsdRsp*/
18278
18279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018280 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018281 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018282
18283 @param pWDICtx: pointer to the WLAN DAL context
18284 pEventData: pointer to the event information structure
18285
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 @see
18287 @return Result of the function call
18288*/
18289WDI_Status
18290WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018291(
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 WDI_ControlBlockType* pWDICtx,
18293 WDI_EventInfoType* pEventData
18294)
18295{
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 eHalStatus halStatus;
18297 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018298 tHalExitUapsdRspParams halExitUapsdRsp;
18299 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18301
18302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 -------------------------------------------------------------------------*/
18305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18306 ( NULL == pEventData->pEventData))
18307 {
18308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 }
18313
18314 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18315
18316 /*-------------------------------------------------------------------------
18317 Extract response and send it to UMAC
18318 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018319 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18320 {
18321 wpalMemoryCopy( &halExitUapsdRsp,
18322 pEventData->pEventData,
18323 sizeof(halExitUapsdRsp));
18324
18325 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18326 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18327 }
18328 else
18329 {
18330 halStatus = *((eHalStatus*)pEventData->pEventData);
18331 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18332 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18334 // directly instead of the FW WQ.
18335 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18336
18337#ifdef WLAN_PERF
18338 // Increment the BD signature to refresh the fast path BD utilization
18339 pWDICtx->uBdSigSerialNum++;
18340#endif
18341
18342 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018343 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018344
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018346}/*WDI_ProcessExitUapsdRsp*/
18347
18348/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018349 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018350 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018351
18352 @param pWDICtx: pointer to the WLAN DAL context
18353 pEventData: pointer to the event information structure
18354
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 @see
18356 @return Result of the function call
18357*/
18358WDI_Status
18359WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018360(
Jeff Johnson295189b2012-06-20 16:38:30 -070018361 WDI_ControlBlockType* pWDICtx,
18362 WDI_EventInfoType* pEventData
18363)
18364{
18365 WDI_Status wdiStatus;
18366 eHalStatus halStatus;
18367 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18369
18370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 -------------------------------------------------------------------------*/
18373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18374 ( NULL == pEventData->pEventData))
18375 {
18376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 }
18381
18382 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18383
18384 /*-------------------------------------------------------------------------
18385 Extract response and send it to UMAC
18386 -------------------------------------------------------------------------*/
18387 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018389
18390 /*Notify UMAC*/
18391 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18392
Jeff Johnsone7245742012-09-05 17:12:55 -070018393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018394}/*WDI_ProcessSetUapsdAcParamsRsp*/
18395
18396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018397 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018398 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018399
18400 @param pWDICtx: pointer to the WLAN DAL context
18401 pEventData: pointer to the event information structure
18402
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 @see
18404 @return Result of the function call
18405*/
18406WDI_Status
18407WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018408(
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 WDI_ControlBlockType* pWDICtx,
18410 WDI_EventInfoType* pEventData
18411)
18412{
18413 WDI_Status wdiStatus;
18414 eHalStatus halStatus;
18415 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18417
18418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 -------------------------------------------------------------------------*/
18421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18422 ( NULL == pEventData->pEventData))
18423 {
18424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 }
18429
18430 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18431
18432 /*-------------------------------------------------------------------------
18433 Extract response and send it to UMAC
18434 -------------------------------------------------------------------------*/
18435 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018436 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018437
18438 /*Notify UMAC*/
18439 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18440
Jeff Johnsone7245742012-09-05 17:12:55 -070018441 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018442}/*WDI_ProcessUpdateUapsdParamsRsp*/
18443
18444/**
18445 @brief Process Configure RXP filter Rsp function (called when a
18446 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018447
18448 @param pWDICtx: pointer to the WLAN DAL context
18449 pEventData: pointer to the event information structure
18450
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 @see
18452 @return Result of the function call
18453*/
18454WDI_Status
18455WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018456(
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 WDI_ControlBlockType* pWDICtx,
18458 WDI_EventInfoType* pEventData
18459)
18460{
18461 WDI_Status wdiStatus;
18462 eHalStatus halStatus;
18463 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18465
18466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018468 -------------------------------------------------------------------------*/
18469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18470 ( NULL == pEventData->pEventData))
18471 {
18472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 }
18477
18478 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18479
18480 /*-------------------------------------------------------------------------
18481 Extract response and send it to UMAC
18482 -------------------------------------------------------------------------*/
18483 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018484 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018485
18486 /*Notify UMAC*/
18487 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18488
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018490}/*WDI_ProcessConfigureRxpFilterRsp*/
18491
18492/**
18493 @brief Process Set beacon filter Rsp function (called when a
18494 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018495
18496 @param pWDICtx: pointer to the WLAN DAL context
18497 pEventData: pointer to the event information structure
18498
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 @see
18500 @return Result of the function call
18501*/
18502WDI_Status
18503WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018504(
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 WDI_ControlBlockType* pWDICtx,
18506 WDI_EventInfoType* pEventData
18507)
18508{
18509 WDI_Status wdiStatus;
18510 eHalStatus halStatus;
18511 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18513
18514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 -------------------------------------------------------------------------*/
18517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18518 ( NULL == pEventData->pEventData))
18519 {
18520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 }
18525
18526 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18527
18528 /*-------------------------------------------------------------------------
18529 Extract response and send it to UMAC
18530 -------------------------------------------------------------------------*/
18531 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018532 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018533
18534 /*Notify UMAC*/
18535 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18536
Jeff Johnsone7245742012-09-05 17:12:55 -070018537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018538}/*WDI_ProcessSetBeaconFilterRsp*/
18539
18540/**
18541 @brief Process remove beacon filter Rsp function (called when a
18542 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018543
18544 @param pWDICtx: pointer to the WLAN DAL context
18545 pEventData: pointer to the event information structure
18546
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 @see
18548 @return Result of the function call
18549*/
18550WDI_Status
18551WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018552(
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 WDI_ControlBlockType* pWDICtx,
18554 WDI_EventInfoType* pEventData
18555)
18556{
18557 WDI_Status wdiStatus;
18558 eHalStatus halStatus;
18559 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18561
18562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 -------------------------------------------------------------------------*/
18565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18566 ( NULL == pEventData->pEventData))
18567 {
18568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 }
18573
18574 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18575
18576 /*-------------------------------------------------------------------------
18577 Extract response and send it to UMAC
18578 -------------------------------------------------------------------------*/
18579 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018581
18582 /*Notify UMAC*/
18583 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18584
Jeff Johnsone7245742012-09-05 17:12:55 -070018585 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018586}/*WDI_ProcessRemBeaconFilterRsp*/
18587
18588/**
18589 @brief Process set RSSI thresholds Rsp function (called when a
18590 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018591
18592 @param pWDICtx: pointer to the WLAN DAL context
18593 pEventData: pointer to the event information structure
18594
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 @see
18596 @return Result of the function call
18597*/
18598WDI_Status
18599WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018600(
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 WDI_ControlBlockType* pWDICtx,
18602 WDI_EventInfoType* pEventData
18603)
18604{
18605 WDI_Status wdiStatus;
18606 eHalStatus halStatus;
18607 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18609
18610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 -------------------------------------------------------------------------*/
18613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18614 ( NULL == pEventData->pEventData))
18615 {
18616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 }
18621
18622 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18623
18624 /*-------------------------------------------------------------------------
18625 Extract response and send it to UMAC
18626 -------------------------------------------------------------------------*/
18627 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018628 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018629
18630 /*Notify UMAC*/
18631 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18632
Jeff Johnsone7245742012-09-05 17:12:55 -070018633 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018634}/*WDI_ProcessSetRSSIThresoldsRsp*/
18635
18636/**
18637 @brief Process host offload Rsp function (called when a
18638 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018639
18640 @param pWDICtx: pointer to the WLAN DAL context
18641 pEventData: pointer to the event information structure
18642
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 @see
18644 @return Result of the function call
18645*/
18646WDI_Status
18647WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018648(
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 WDI_ControlBlockType* pWDICtx,
18650 WDI_EventInfoType* pEventData
18651)
18652{
18653 WDI_Status wdiStatus;
18654 eHalStatus halStatus;
18655 WDI_HostOffloadCb wdiHostOffloadCb;
18656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18657
18658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 -------------------------------------------------------------------------*/
18661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18662 ( NULL == pEventData->pEventData))
18663 {
18664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 }
18669
18670 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18671
18672 /*-------------------------------------------------------------------------
18673 Extract response and send it to UMAC
18674 -------------------------------------------------------------------------*/
18675 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018677
18678 /*Notify UMAC*/
18679 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18680
Jeff Johnsone7245742012-09-05 17:12:55 -070018681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018682}/*WDI_ProcessHostOffloadRsp*/
18683
18684/**
18685 @brief Process keep alive Rsp function (called when a
18686 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018687
18688 @param pWDICtx: pointer to the WLAN DAL context
18689 pEventData: pointer to the event information structure
18690
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 @see
18692 @return Result of the function call
18693*/
18694WDI_Status
18695WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018696(
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 WDI_ControlBlockType* pWDICtx,
18698 WDI_EventInfoType* pEventData
18699)
18700{
18701 WDI_Status wdiStatus;
18702 eHalStatus halStatus;
18703 WDI_KeepAliveCb wdiKeepAliveCb;
18704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18706 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18707
18708
18709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 -------------------------------------------------------------------------*/
18712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18713 ( NULL == pEventData->pEventData))
18714 {
18715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 }
18720
Jeff Johnsone7245742012-09-05 17:12:55 -070018721 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18722
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 /*-------------------------------------------------------------------------
18724 Extract response and send it to UMAC
18725 -------------------------------------------------------------------------*/
18726 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018728
18729 /*Notify UMAC*/
18730 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18731
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018733}/*WDI_ProcessKeepAliveRsp*/
18734
18735/**
18736 @brief Process wowl add ptrn Rsp function (called when a
18737 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018738
18739 @param pWDICtx: pointer to the WLAN DAL context
18740 pEventData: pointer to the event information structure
18741
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 @see
18743 @return Result of the function call
18744*/
18745WDI_Status
18746WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018747(
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 WDI_ControlBlockType* pWDICtx,
18749 WDI_EventInfoType* pEventData
18750)
18751{
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 eHalStatus halStatus;
18753 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018754 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18755 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18756
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18758
18759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018761 -------------------------------------------------------------------------*/
18762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18763 ( NULL == pEventData->pEventData))
18764 {
18765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018766 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018769 }
18770
18771 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18772
18773 /*-------------------------------------------------------------------------
18774 Extract response and send it to UMAC
18775 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018776 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18777 {
18778 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18779 pEventData->pEventData,
18780 sizeof(halAddWowlBcastPtrRsp));
18781
18782 wdiWowlAddBcPtrRsp.wdiStatus =
18783 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18784 }
18785 else
18786 {
18787 halStatus = *((eHalStatus*)pEventData->pEventData);
18788 wdiWowlAddBcPtrRsp.wdiStatus =
18789 WDI_HAL_2_WDI_STATUS(halStatus);
18790 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018791
18792 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018793 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018794
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018796}/*WDI_ProcessWowlAddBcPtrnRsp*/
18797
18798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018799 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018801
18802 @param pWDICtx: pointer to the WLAN DAL context
18803 pEventData: pointer to the event information structure
18804
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 @see
18806 @return Result of the function call
18807*/
18808WDI_Status
18809WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018810(
Jeff Johnson295189b2012-06-20 16:38:30 -070018811 WDI_ControlBlockType* pWDICtx,
18812 WDI_EventInfoType* pEventData
18813)
18814{
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 eHalStatus halStatus;
18816 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018817 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18818 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18820
18821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018823 -------------------------------------------------------------------------*/
18824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18825 ( NULL == pEventData->pEventData))
18826 {
18827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 }
18832
18833 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18834
18835 /*-------------------------------------------------------------------------
18836 Extract response and send it to UMAC
18837 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018838 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18839 {
18840 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18841 pEventData->pEventData,
18842 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018843
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018844 wdiWowlDelBcstPtrRsp.wdiStatus =
18845 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18846 }
18847 else
18848 {
18849 halStatus = *((eHalStatus*)pEventData->pEventData);
18850 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18851 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018852 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018853 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018854
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018856}/*WDI_ProcessWowlDelBcPtrnRsp*/
18857
18858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018861
18862 @param pWDICtx: pointer to the WLAN DAL context
18863 pEventData: pointer to the event information structure
18864
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 @see
18866 @return Result of the function call
18867*/
18868WDI_Status
18869WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018870(
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 WDI_ControlBlockType* pWDICtx,
18872 WDI_EventInfoType* pEventData
18873)
18874{
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 eHalStatus halStatus;
18876 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018877 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18878 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18880
18881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 -------------------------------------------------------------------------*/
18884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18885 ( NULL == pEventData->pEventData))
18886 {
18887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 }
18892
18893 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18894
18895 /*-------------------------------------------------------------------------
18896 Extract response and send it to UMAC
18897 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018898 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18899 {
18900 wpalMemoryCopy( &halEnterWowlRspParams,
18901 (wpt_uint8*)pEventData->pEventData,
18902 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018903
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018904 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18905 wdiwowlEnterRsp.status =
18906 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18907 }
18908 else
18909 {
18910 halStatus = *((eHalStatus*)pEventData->pEventData);
18911 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18912 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018914 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018915
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018917}/*WDI_ProcessWowlEnterRsp*/
18918
18919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018920 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018922
18923 @param pWDICtx: pointer to the WLAN DAL context
18924 pEventData: pointer to the event information structure
18925
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 @see
18927 @return Result of the function call
18928*/
18929WDI_Status
18930WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018931(
Jeff Johnson295189b2012-06-20 16:38:30 -070018932 WDI_ControlBlockType* pWDICtx,
18933 WDI_EventInfoType* pEventData
18934)
18935{
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 eHalStatus halStatus;
18937 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018938 tHalExitWowlRspParams halExitWowlRspParams;
18939 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18940
Jeff Johnson295189b2012-06-20 16:38:30 -070018941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18942
18943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 -------------------------------------------------------------------------*/
18946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18947 ( NULL == pEventData->pEventData))
18948 {
18949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 }
18954
18955 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18956
18957 /*-------------------------------------------------------------------------
18958 Extract response and send it to UMAC
18959 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018960 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18961 {
18962 wpalMemoryCopy( &halExitWowlRspParams,
18963 pEventData->pEventData,
18964 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018966 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18967 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18968
18969 }
18970 else
18971 {
18972 halStatus = *((eHalStatus*)pEventData->pEventData);
18973 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018976 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018977
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018979}/*WDI_ProcessWowlExitRsp*/
18980
18981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 (called when a response is being received over the bus
18984 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018985
18986 @param pWDICtx: pointer to the WLAN DAL context
18987 pEventData: pointer to the event information structure
18988
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 @see
18990 @return Result of the function call
18991*/
18992WDI_Status
18993WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018994(
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 WDI_ControlBlockType* pWDICtx,
18996 WDI_EventInfoType* pEventData
18997)
18998{
18999 WDI_Status wdiStatus;
19000 eHalStatus halStatus;
19001 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19003
19004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 -------------------------------------------------------------------------*/
19007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19008 ( NULL == pEventData->pEventData))
19009 {
19010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 }
19015
19016 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19017
19018 /*-------------------------------------------------------------------------
19019 Extract response and send it to UMAC
19020 -------------------------------------------------------------------------*/
19021 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019022 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019023
19024 /*Notify UMAC*/
19025 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19026
Jeff Johnsone7245742012-09-05 17:12:55 -070019027 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019028}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19029
19030
19031/**
19032 @brief Process Nv download(called when a response
19033 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019034
19035 @param pWDICtx: pointer to the WLAN DAL context
19036 pEventData: pointer to the event information structure
19037
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 @see
19039 @return Result of the function call
19040*/
19041WDI_Status
19042WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019043(
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 WDI_ControlBlockType* pWDICtx,
19045 WDI_EventInfoType* pEventData
19046)
19047{
19048
19049 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19050 tHalNvImgDownloadRspParams halNvDownloadRsp;
19051 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19052
19053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 -------------------------------------------------------------------------*/
19056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19057 ( NULL == pEventData->pEventData))
19058 {
19059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 }
19064
19065 /*-------------------------------------------------------------------------
19066 Extract response and send it to UMAC
19067 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 wpalMemoryCopy( &halNvDownloadRsp,
19069 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 sizeof(halNvDownloadRsp));
19071
19072 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19073
19074 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19076 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 {
19078 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 }
19081 else
19082 {
19083 /*Reset the Nv related global information in WDI context information */
19084 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19085 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19086 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19087 /*call WDA callback function for last fragment */
19088 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19089 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19090 }
19091
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019093}
19094#ifdef WLAN_FEATURE_VOWIFI_11R
19095/**
19096 @brief Process Add TSpec Rsp function (called when a response
19097 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019098
19099 @param pWDICtx: pointer to the WLAN DAL context
19100 pEventData: pointer to the event information structure
19101
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 @see
19103 @return Result of the function call
19104*/
19105WDI_Status
19106WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019107(
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 WDI_ControlBlockType* pWDICtx,
19109 WDI_EventInfoType* pEventData
19110)
19111{
19112 WDI_Status wdiStatus;
19113 tAggrAddTsRspParams aggrAddTsRsp;
19114 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19116
19117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 -------------------------------------------------------------------------*/
19120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19121 ( NULL == pEventData->pEventData))
19122 {
19123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 }
19128
19129 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19130
19131 /*-------------------------------------------------------------------------
19132 Extract response and send it to UMAC
19133 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019134 wpalMemoryCopy( &aggrAddTsRsp,
19135 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 sizeof(aggrAddTsRsp));
19137
19138 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019140
19141 /*Notify UMAC*/
19142 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19143
Jeff Johnsone7245742012-09-05 17:12:55 -070019144 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019145}/*WDI_ProcessAddTSpecRsp*/
19146#endif /* WLAN_FEATURE_VOWIFI_11R */
19147
19148/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019149 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019150 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019151
19152 @param pWDICtx: pointer to the WLAN DAL context
19153 pEventData: pointer to the event information structure
19154
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 @see
19156 @return Result of the function call
19157*/
19158WDI_Status
19159WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019160(
Jeff Johnson295189b2012-06-20 16:38:30 -070019161 WDI_ControlBlockType* pWDICtx,
19162 WDI_EventInfoType* pEventData
19163)
19164{
19165 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19166 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19167 tHalHostResumeRspParams hostResumeRspMsg;
19168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19169
19170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 -------------------------------------------------------------------------*/
19173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19174 ( NULL == pEventData->pEventData))
19175 {
19176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 }
19181
19182 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19183
19184 /*-------------------------------------------------------------------------
19185 Extract response and send it to UMAC
19186 -------------------------------------------------------------------------*/
19187
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 (wpt_uint8*)pEventData->pEventData,
19190 sizeof(hostResumeRspMsg));
19191
Jeff Johnsone7245742012-09-05 17:12:55 -070019192 wdiResumeRspParams.wdiStatus =
19193 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019194
19195 /*Notify UMAC*/
19196 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19197
19198 return WDI_STATUS_SUCCESS;
19199}
19200
19201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019204
19205 @param pWDICtx: pointer to the WLAN DAL context
19206 pEventData: pointer to the event information structure
19207
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 @see
19209 @return Result of the function call
19210*/
19211WDI_Status
19212WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019213(
Jeff Johnson295189b2012-06-20 16:38:30 -070019214 WDI_ControlBlockType* pWDICtx,
19215 WDI_EventInfoType* pEventData
19216)
19217{
19218 WDI_Status wdiStatus;
19219 eHalStatus halStatus;
19220 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19222
19223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 -------------------------------------------------------------------------*/
19226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19227 ( NULL == pEventData->pEventData))
19228 {
19229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019234
19235 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019236
19237 /*-------------------------------------------------------------------------
19238 Extract response and send it to UMAC
19239 -------------------------------------------------------------------------*/
19240 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019241 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019242
19243 /*Notify UMAC*/
19244 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19245
Jeff Johnsone7245742012-09-05 17:12:55 -070019246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247}/*WDI_ProcessSetTxPerTrackingRsp*/
19248
19249/*==========================================================================
19250 Indications from HAL
19251 ==========================================================================*/
19252/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019253 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019254 indication of this kind is being received over the bus
19255 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019256
19257 @param pWDICtx: pointer to the WLAN DAL context
19258 pEventData: pointer to the event information structure
19259
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 @see
19261 @return Result of the function call
19262*/
19263WDI_Status
19264WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019265(
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 WDI_ControlBlockType* pWDICtx,
19267 WDI_EventInfoType* pEventData
19268)
19269{
19270 WDI_LowLevelIndType wdiInd;
19271 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19273
19274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 -------------------------------------------------------------------------*/
19277 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19278 ( NULL == pEventData->pEventData))
19279 {
19280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019281 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 }
19285
19286 /*-------------------------------------------------------------------------
19287 Extract indication and send it to UMAC
19288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019289 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19290 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 sizeof(tHalRSSINotification));
19292
19293 /*Fill in the indication parameters*/
19294 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19295 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19296 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19297 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19298 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19299 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19300 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19301 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19302 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19303 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19304 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19305 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19306 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019307 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19308 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019309
ltimariu034f7d62013-01-24 18:54:33 -080019310 if ( pWDICtx->wdiLowLevelIndCB )
19311 {
19312 /*Notify UMAC of indication*/
19313 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19314 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019315
19316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019317}/*WDI_ProcessLowRSSIInd*/
19318
19319
19320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019321 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 an indication of this kind is being received over the
19323 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019324
19325 @param pWDICtx: pointer to the WLAN DAL context
19326 pEventData: pointer to the event information structure
19327
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 @see
19329 @return Result of the function call
19330*/
19331WDI_Status
19332WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019333(
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 WDI_ControlBlockType* pWDICtx,
19335 WDI_EventInfoType* pEventData
19336)
19337{
19338 WDI_Status wdiStatus;
19339 eHalStatus halStatus;
19340 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019341 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19343
19344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 -------------------------------------------------------------------------*/
19347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19348 ( NULL == pEventData->pEventData))
19349 {
19350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019355 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 /*-------------------------------------------------------------------------
19357 Extract indication and send it to UMAC
19358 -------------------------------------------------------------------------*/
19359 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19360 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019361 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019362
19363 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019365 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19366 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019367 if ( pWDICtx->wdiLowLevelIndCB )
19368 {
19369 /*Notify UMAC*/
19370 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019372
19373 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019374}/*WDI_ProcessMissedBeaconInd*/
19375
19376
19377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019378 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 an indication of this kind is being received over the
19380 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019381
19382 @param pWDICtx: pointer to the WLAN DAL context
19383 pEventData: pointer to the event information structure
19384
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 @see
19386 @return Result of the function call
19387*/
19388WDI_Status
19389WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019390(
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 WDI_ControlBlockType* pWDICtx,
19392 WDI_EventInfoType* pEventData
19393)
19394{
19395 WDI_Status wdiStatus;
19396 eHalStatus halStatus;
19397 WDI_LowLevelIndType wdiInd;
19398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19399
19400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 -------------------------------------------------------------------------*/
19403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19404 ( NULL == pEventData->pEventData))
19405 {
19406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019410 }
19411
19412 /*-------------------------------------------------------------------------
19413 Extract indication and send it to UMAC
19414 -------------------------------------------------------------------------*/
19415 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19416 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019417 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019418
19419 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019420 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 /* ! TO DO - fill in from HAL struct:
19422 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19423
ltimariu034f7d62013-01-24 18:54:33 -080019424 if ( pWDICtx->wdiLowLevelIndCB )
19425 {
19426 /*Notify UMAC*/
19427 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19428 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019429
19430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019431}/*WDI_ProcessUnkAddrFrameInd*/
19432
19433
19434/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019435 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 indication of this kind is being received over the bus
19437 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019438
19439 @param pWDICtx: pointer to the WLAN DAL context
19440 pEventData: pointer to the event information structure
19441
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 @see
19443 @return Result of the function call
19444*/
19445WDI_Status
19446WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019447(
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 WDI_ControlBlockType* pWDICtx,
19449 WDI_EventInfoType* pEventData
19450)
19451{
19452 WDI_LowLevelIndType wdiInd;
19453 tpSirMicFailureInd pHalMicFailureInd;
19454
19455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19456
19457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 -------------------------------------------------------------------------*/
19460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19461 ( NULL == pEventData->pEventData))
19462 {
19463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019468
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19470 /*-------------------------------------------------------------------------
19471 Extract indication and send it to UMAC
19472 -------------------------------------------------------------------------*/
19473
19474 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019475 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019476 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19477 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19478 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19479 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19480 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19481 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19482 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19483 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019485 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019487 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 pHalMicFailureInd->info.keyId;
19490 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19491 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19492 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19493 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019494
19495 if ( pWDICtx->wdiLowLevelIndCB )
19496 {
19497 /*Notify UMAC*/
19498 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19499 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019500
19501 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019502}/*WDI_ProcessMicFailureInd*/
19503
19504
19505/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019506 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019507 an indication of this kind is being received over the
19508 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019509
19510 @param pWDICtx: pointer to the WLAN DAL context
19511 pEventData: pointer to the event information structure
19512
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 @see
19514 @return Result of the function call
19515*/
19516WDI_Status
19517WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019518(
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 WDI_ControlBlockType* pWDICtx,
19520 WDI_EventInfoType* pEventData
19521)
19522{
19523 WDI_Status wdiStatus;
19524 eHalStatus halStatus;
19525 WDI_LowLevelIndType wdiInd;
19526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19527
19528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 -------------------------------------------------------------------------*/
19531 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19532 ( NULL == pEventData->pEventData))
19533 {
19534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 }
19539
19540 /*-------------------------------------------------------------------------
19541 Extract indication and send it to UMAC
19542 -------------------------------------------------------------------------*/
19543
19544 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19545 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019547
19548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19549 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019550
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019552 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19553 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019554
ltimariu034f7d62013-01-24 18:54:33 -080019555 if ( pWDICtx->wdiLowLevelIndCB )
19556 {
19557 /*Notify UMAC*/
19558 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19559 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019560
19561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019562}/*WDI_ProcessFatalErrorInd*/
19563
19564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 an indication of this kind is being received over the
19567 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019568
19569 @param pWDICtx: pointer to the WLAN DAL context
19570 pEventData: pointer to the event information structure
19571
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 @see
19573 @return Result of the function call
19574*/
19575WDI_Status
19576WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019577(
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 WDI_ControlBlockType* pWDICtx,
19579 WDI_EventInfoType* pEventData
19580)
19581{
19582 tDeleteStaContextParams halDelSTACtx;
19583 WDI_LowLevelIndType wdiInd;
19584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19585
19586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 -------------------------------------------------------------------------*/
19589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19590 ( NULL == pEventData->pEventData))
19591 {
19592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 }
19597
19598 /*-------------------------------------------------------------------------
19599 Extract indication and send it to UMAC
19600 -------------------------------------------------------------------------*/
19601
19602 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 wpalMemoryCopy( &halDelSTACtx,
19604 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 sizeof(halDelSTACtx));
19606
19607 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019608 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019609
19610 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19611 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19612 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19613 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19614
Jeff Johnsone7245742012-09-05 17:12:55 -070019615 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019616 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19620 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019621
ltimariu034f7d62013-01-24 18:54:33 -080019622 if ( pWDICtx->wdiLowLevelIndCB )
19623 {
19624 /*Notify UMAC*/
19625 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19626 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019627
19628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019629}/*WDI_ProcessDelSTAInd*/
19630
19631/**
19632*@brief Process Coex Indication function (called when
19633 an indication of this kind is being received over the
19634 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019635
19636 @param pWDICtx: pointer to the WLAN DAL context
19637 pEventData: pointer to the event information structure
19638
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 @see
19640 @return Result of the function call
19641*/
19642WDI_Status
19643WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019644(
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 WDI_ControlBlockType* pWDICtx,
19646 WDI_EventInfoType* pEventData
19647)
19648{
19649 WDI_LowLevelIndType wdiInd;
19650 tCoexIndMsg halCoexIndMsg;
19651 wpt_uint32 index;
19652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19653
19654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 -------------------------------------------------------------------------*/
19657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19658 ( NULL == pEventData->pEventData ))
19659 {
19660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 }
19665
19666 /*-------------------------------------------------------------------------
19667 Extract indication and send it to UMAC
19668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19670 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 sizeof(halCoexIndMsg.coexIndParams) );
19672
19673 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 wdiInd.wdiIndicationType = WDI_COEX_IND;
19675 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 }
19680
19681 // DEBUG
19682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19683 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19685 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19686 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19687 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19688 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019689
ltimariu034f7d62013-01-24 18:54:33 -080019690 if ( pWDICtx->wdiLowLevelIndCB )
19691 {
19692 /*Notify UMAC*/
19693 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19694 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019695
19696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697}/*WDI_ProcessCoexInd*/
19698
19699/**
19700*@brief Process Tx Complete Indication function (called when
19701 an indication of this kind is being received over the
19702 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019703
19704 @param pWDICtx: pointer to the WLAN DAL context
19705 pEventData: pointer to the event information structure
19706
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 @see
19708 @return Result of the function call
19709*/
19710WDI_Status
19711WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019712(
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 WDI_ControlBlockType* pWDICtx,
19714 WDI_EventInfoType* pEventData
19715)
19716{
19717 WDI_LowLevelIndType wdiInd;
19718 tTxComplIndMsg halTxComplIndMsg;
19719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19720
19721 /*-------------------------------------------------------------------------
19722 Sanity check
19723 -------------------------------------------------------------------------*/
19724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19725 ( NULL == pEventData->pEventData ))
19726 {
19727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 WDI_ASSERT( 0 );
19730 return WDI_STATUS_E_FAILURE;
19731 }
19732
19733 /*-------------------------------------------------------------------------
19734 Extract indication and send it to UMAC
19735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019736 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19737 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019738 sizeof(halTxComplIndMsg.txComplParams) );
19739
19740 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19742 wdiInd.wdiIndicationData.tx_complete_status
19743 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019744
ltimariu034f7d62013-01-24 18:54:33 -080019745 if ( pWDICtx->wdiLowLevelIndCB )
19746 {
19747 /*Notify UMAC*/
19748 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19749 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019750
19751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019752}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019753#ifdef FEATURE_WLAN_TDLS
19754/**
19755*@brief Process TDLS Indication function (called when
19756 an indication of this kind is being received over the
19757 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019758
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053019759 @param pWDICtx: pointer to the WLAN DAL context
19760 pEventData: pointer to the event information structure
19761
19762 @see
19763 @return Result of the function call
19764*/
19765WDI_Status
19766WDI_ProcessTdlsInd
19767(
19768 WDI_ControlBlockType* pWDICtx,
19769 WDI_EventInfoType* pEventData
19770)
19771{
19772 WDI_LowLevelIndType wdiInd;
19773 tTdlsIndMsg halTdlsIndMsg;
19774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19775
19776 /*-------------------------------------------------------------------------
19777 Sanity check
19778 -------------------------------------------------------------------------*/
19779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19780 ( NULL == pEventData->pEventData ))
19781 {
19782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19783 "%s: Invalid parameters", __func__);
19784 WDI_ASSERT( 0 );
19785 return WDI_STATUS_E_FAILURE;
19786 }
19787
19788 /*-------------------------------------------------------------------------
19789 Extract indication and send it to UMAC
19790 -------------------------------------------------------------------------*/
19791 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
19792 pEventData->pEventData,
19793 sizeof(halTdlsIndMsg.tdlsIndParams) );
19794
19795 /*Fill in the indication parameters*/
19796 wdiInd.wdiIndicationType = WDI_TDLS_IND;
19797
19798 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
19799 = halTdlsIndMsg.tdlsIndParams.status;
19800
19801 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
19802 = halTdlsIndMsg.tdlsIndParams.staIdx;
19803
19804 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
19805 = halTdlsIndMsg.tdlsIndParams.reasonCode;
19806
19807 /*Notify UMAC*/
19808 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19809
19810 return WDI_STATUS_SUCCESS;
19811}/*WDI_ProcessTdlsInd*/
19812#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019813/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019814*@brief Process Noa Start Indication function (called when
19815 an indication of this kind is being received over the
19816 bus from HAL)
19817
19818 @param pWDICtx: pointer to the WLAN DAL context
19819 pEventData: pointer to the event information structure
19820
19821 @see
19822 @return Result of the function call
19823*/
19824WDI_Status
19825WDI_ProcessP2pNoaStartInd
19826(
19827 WDI_ControlBlockType* pWDICtx,
19828 WDI_EventInfoType* pEventData
19829)
19830{
19831 WDI_LowLevelIndType wdiInd;
19832 tNoaStartIndMsg halNoaStartIndMsg;
19833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19834
19835 /*-------------------------------------------------------------------------
19836 Sanity check
19837 -------------------------------------------------------------------------*/
19838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19839 ( NULL == pEventData->pEventData ))
19840 {
19841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19842 "%s: Invalid parameters", __func__);
19843 WDI_ASSERT( 0 );
19844 return WDI_STATUS_E_FAILURE;
19845 }
19846
19847 /*-------------------------------------------------------------------------
19848 Extract indication and send it to UMAC
19849 -------------------------------------------------------------------------*/
19850 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19851 pEventData->pEventData,
19852 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19853
19854 /*Fill in the indication parameters*/
19855 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19856
19857 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19858 = halNoaStartIndMsg.noaStartIndParams.status;
19859
19860 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19861 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19862
19863 /*Notify UMAC*/
19864 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19865
19866 return WDI_STATUS_SUCCESS;
19867}/*WDI_ProcessNoaAttrInd*/
19868
19869/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019870*@brief Process Noa Attr Indication function (called when
19871 an indication of this kind is being received over the
19872 bus from HAL)
19873
19874 @param pWDICtx: pointer to the WLAN DAL context
19875 pEventData: pointer to the event information structure
19876
19877 @see
19878 @return Result of the function call
19879*/
19880WDI_Status
19881WDI_ProcessP2pNoaAttrInd
19882(
19883 WDI_ControlBlockType* pWDICtx,
19884 WDI_EventInfoType* pEventData
19885)
19886{
19887 WDI_LowLevelIndType wdiInd;
19888 tNoaAttrIndMsg halNoaAttrIndMsg;
19889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19890
19891 /*-------------------------------------------------------------------------
19892 Sanity check
19893 -------------------------------------------------------------------------*/
19894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19895 ( NULL == pEventData->pEventData ))
19896 {
19897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 WDI_ASSERT( 0 );
19900 return WDI_STATUS_E_FAILURE;
19901 }
19902
19903 /*-------------------------------------------------------------------------
19904 Extract indication and send it to UMAC
19905 -------------------------------------------------------------------------*/
19906 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19907 pEventData->pEventData,
19908 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19909
19910 /*Fill in the indication parameters*/
19911 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019912
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19914 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019915
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19917 = halNoaAttrIndMsg.noaAttrIndParams.index;
19918 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19919 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19920 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19921 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019922
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19924 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19925 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19926 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19927 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19928 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19929 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19930 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019931
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19933 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19934 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19935 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19936 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19937 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19938 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19939 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19940
ltimariu034f7d62013-01-24 18:54:33 -080019941 if ( pWDICtx->wdiLowLevelIndCB )
19942 {
19943 /*Notify UMAC*/
19944 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19945 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019946
19947 return WDI_STATUS_SUCCESS;
19948}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019949
19950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019951 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 an indication of this kind is being received over the
19953 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019954
19955 @param pWDICtx: pointer to the WLAN DAL context
19956 pEventData: pointer to the event information structure
19957
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 @see
19959 @return Result of the function call
19960*/
19961WDI_Status
19962WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019963(
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 WDI_ControlBlockType* pWDICtx,
19965 WDI_EventInfoType* pEventData
19966)
19967{
19968 WDI_LowLevelIndType wdiInd;
19969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019970
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 /*-------------------------------------------------------------------------
19972 Extract indication and send it to UMAC
19973 -------------------------------------------------------------------------*/
19974 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19976
ltimariu034f7d62013-01-24 18:54:33 -080019977 if ( pWDICtx->wdiLowLevelIndCB )
19978 {
19979 /*Notify UMAC*/
19980 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019982
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019984}/*WDI_ProcessTxPerHitInd*/
19985
Jeff Johnson295189b2012-06-20 16:38:30 -070019986/**
19987 @brief WDI_ProcessFTMCommandReq
19988 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019989
19990 @param pWDICtx: pointer to the WLAN DAL context
19991 pEventData: pointer to the event information structure
19992
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 @see
19994 @return Result of the function call
19995*/
19996WDI_Status
19997WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019998(
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 WDI_ControlBlockType* pWDICtx,
20000 WDI_EventInfoType* pEventData
20001)
20002{
20003 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20004 wpt_uint8 *ftmCommandBuffer = NULL;
20005 wpt_uint16 dataOffset;
20006 wpt_uint16 bufferSize;
20007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 -------------------------------------------------------------------------*/
20010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20011 ( NULL == pEventData->pEventData))
20012
20013 {
20014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 }
20019
20020 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20021
20022 /* Get MSG Buffer */
20023 WDI_GetMessageBuffer(pWDICtx,
20024 WDI_FTM_CMD_REQ,
20025 ftmCommandReq->bodyLength,
20026 &ftmCommandBuffer,
20027 &dataOffset,
20028 &bufferSize);
20029
20030 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20031 ftmCommandReq->FTMCommandBody,
20032 ftmCommandReq->bodyLength);
20033
20034 /* Send MSG */
20035 return WDI_SendMsg(pWDICtx,
20036 ftmCommandBuffer,
20037 bufferSize,
20038 pEventData->pCBfnc,
20039 pEventData->pUserData,
20040 WDI_FTM_CMD_RESP);
20041}
20042
20043/**
20044 @brief WDI_ProcessFTMCommandRsp
20045 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020046
20047 @param pWDICtx: pointer to the WLAN DAL context
20048 pEventData: pointer to the event information structure
20049
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 @see
20051 @return Result of the function call
20052*/
20053WDI_Status
20054WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020055(
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 WDI_ControlBlockType* pWDICtx,
20057 WDI_EventInfoType* pEventData
20058)
20059{
20060 WDI_FTMCommandRspCb ftmCMDRspCb;
20061 tProcessPttRspParams *ftmCMDRspData = NULL;
20062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20063
20064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 -------------------------------------------------------------------------*/
20067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20068 ( NULL == pEventData->pEventData))
20069 {
20070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 }
20075
20076 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20077
20078 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20079
Jeff Johnsone7245742012-09-05 17:12:55 -070020080 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20081 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20083
20084 /*Notify UMAC*/
20085 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20086
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020088}
Jeff Johnson295189b2012-06-20 16:38:30 -070020089/**
20090 @brief WDI_ProcessHalDumpCmdReq
20091 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020092
20093 @param pWDICtx: pointer to the WLAN DAL context
20094 pEventData: pointer to the event information structure
20095
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 @see
20097 @return Result of the function call
20098*/
20099WDI_Status
20100WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020101(
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 WDI_ControlBlockType* pWDICtx,
20103 WDI_EventInfoType* pEventData
20104)
20105{
20106 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20107 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20108 wpt_uint16 usDataOffset = 0;
20109 wpt_uint16 usSendSize = 0;
20110 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020112
20113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 -------------------------------------------------------------------------*/
20116 if (( NULL == pEventData ) ||
20117 ( NULL == pEventData->pEventData) ||
20118 ( NULL == pEventData->pCBfnc ))
20119 {
20120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 }
20125
20126 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20127 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20128
20129 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020134 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020140
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 /*-----------------------------------------------------------------------
20142 Get message buffer
20143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20146 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20149 {
20150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20151 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20152 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 }
20156
Jeff Johnsone7245742012-09-05 17:12:55 -070020157 wpalMemoryCopy( pSendBuffer+usDataOffset,
20158 &halDumpCmdReqMsg.dumpCmdReqParams,
20159 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020160
20161 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020163
20164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020165 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020166 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20168 wdiHALDumpCmdRspCb, pEventData->pUserData,
20169 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020170}
20171
20172/**
20173 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 Process hal Dump Command Response from HAL, simply route to HDD
20175
20176 @param pWDICtx: pointer to the WLAN DAL context
20177 pEventData: pointer to the event information structure
20178
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 @see
20180 @return Result of the function call
20181*/
20182WDI_Status
20183WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020184(
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 WDI_ControlBlockType* pWDICtx,
20186 WDI_EventInfoType* pEventData
20187)
20188{
20189 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020190 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20192
20193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 -------------------------------------------------------------------------*/
20196 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20197 ( NULL == pEventData->pEventData))
20198 {
20199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 }
20204
Jeff Johnsone7245742012-09-05 17:12:55 -070020205 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020206
20207 /*Initialize the WDI Response structure */
20208 wdiHALDumpCmdRsp.usBufferLen = 0;
20209 wdiHALDumpCmdRsp.pBuffer = NULL;
20210
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020211 wpalMemoryCopy( &halDumpCmdRspParams,
20212 pEventData->pEventData,
20213 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020214
20215 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020216 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020217
20218 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020219 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 {
20221 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020222 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20223 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20224
20225 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20226 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020227 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020229
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 /*Notify UMAC*/
20231 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20232
20233 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20234 {
20235 /* Free the allocated buffer */
20236 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20237 }
20238 return WDI_STATUS_SUCCESS;
20239}
20240
20241/*==========================================================================
20242 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020243
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020245 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020246==========================================================================*/
20247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020249 when it wishes to send up a notification like the ones
20250 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020251
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020253
20254 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020256 wctsNotifyCBData: the callback data of the user
20257
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
20260 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020261*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020262void
Jeff Johnson295189b2012-06-20 16:38:30 -070020263WDI_NotifyMsgCTSCB
20264(
Jeff Johnsone7245742012-09-05 17:12:55 -070020265 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 WCTS_NotifyEventType wctsEvent,
20267 void* wctsNotifyCBData
20268)
20269{
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20272
20273 if (NULL == pWDICtx )
20274 {
20275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 }
20280
20281 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20282 {
20283 /* callback presumably occurred after close */
20284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020285 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020286 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 }
20288
20289 if ( WCTS_EVENT_OPEN == wctsEvent )
20290 {
20291 /*Flag must be set atomically as it is checked from incoming request
20292 functions*/
20293 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295
20296 /*Nothing to do - so try to dequeue any pending request that may have
20297 occurred while we were trying to establish this*/
20298 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 {
20303 /*Flag must be set atomically as it is checked from incoming request
20304 functions*/
20305 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020307
20308 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 wpalMutexRelease(&pWDICtx->wptMutex);
20311
20312 /*Notify that the Control Channel is closed */
20313 wpalEventSet(&pWDICtx->wctsActionEvent);
20314 }
20315
20316}/*WDI_NotifyMsgCTSCB*/
20317
20318
20319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 when it wishes to send up a packet received over the
20322 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020323
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020325
20326 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 pMsg: the packet
20328 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 wctsRxMsgCBData: the callback data of the user
20330
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020332
20333 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020334*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020335void
20336WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020337(
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 void* pMsg,
20340 wpt_uint32 uLen,
20341 void* wctsRxMsgCBData
20342)
20343{
Jeff Johnsone7245742012-09-05 17:12:55 -070020344 tHalMsgHeader *pHalMsgHeader;
20345 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020346 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20348
20349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 ( uLen < sizeof(tHalMsgHeader)))
20354 {
20355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 }
20360
20361 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20362 {
20363 /* callback presumably occurred after close */
20364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020365 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 }
20368
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 context - so no serialization is necessary here
20371 ! - revisit this assumption */
20372
20373 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20374
20375 if ( uLen != pHalMsgHeader->msgLen )
20376 {
20377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20378 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20380 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 }
20382
20383 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20384
20385 /*The message itself starts after the header*/
20386 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20387 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20388 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20389 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20390
20391
20392 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20393 {
20394 /*Stop the timer as the response was received */
20395 /*!UT - check for potential race conditions between stop and response */
20396 wpalTimerStop(&pWDICtx->wptResponseTimer);
20397 }
20398 /* Check if we receive a response message which is not expected */
20399 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20400 {
20401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20402 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20403 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20406 pWDICtx->wdiExpectedResponse);
20407 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
20408 return;
20409 }
20410
20411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20412 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20413
20414 /*Post response event to the state machine*/
20415 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20416
20417}/*WDI_RXMsgCTSCB*/
20418
20419
20420/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020421 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020422========================================================================*/
20423
20424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020425 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 @param pWDICtx - pointer to the control block
20429
20430 @return Result of the function call
20431*/
20432WPT_INLINE WDI_Status
20433WDI_CleanCB
20434(
20435 WDI_ControlBlockType* pWDICtx
20436)
20437{
20438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20439
20440 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020441 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020442
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20445 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20446
20447 WDI_ResetAssocSessions( pWDICtx );
20448
20449 return WDI_STATUS_SUCCESS;
20450}/*WDI_CleanCB*/
20451
20452
20453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020455
Jeff Johnsone7245742012-09-05 17:12:55 -070020456
20457 @param pWDICtx: pointer to the WLAN DAL context
20458 pEventData: pointer to the event information structure
20459
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 @see
20461 @return Result of the function call
20462*/
20463WPT_INLINE WDI_Status
20464WDI_ProcessRequest
20465(
20466 WDI_ControlBlockType* pWDICtx,
20467 WDI_EventInfoType* pEventData
20468)
20469{
20470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20471
Jeff Johnsone7245742012-09-05 17:12:55 -070020472 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 already checked these pointers*/
20474
20475 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20476 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20479 "Calling request processing function for req %s (%d) %x",
20480 WDI_getReqMsgString(pEventData->wdiRequest),
20481 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20482 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20483 }
20484 else
20485 {
20486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 pEventData->wdiRequest);
20489 return WDI_STATUS_E_NOT_IMPLEMENT;
20490 }
20491}/*WDI_ProcessRequest*/
20492
20493
20494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 prefixes it with a send message header
20498
20499 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 wdiReqType: type of the request being sent
20501 uBufferLen: message buffer len
20502 pMsgBuffer: resulting allocated buffer
20503 pusDataOffset: offset in the buffer where the caller
20504 can start copying its message data
20505 puBufferSize: the resulting buffer size (offset+buff
20506 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020507
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 @see
20509 @return Result of the function call
20510*/
20511WDI_Status
20512WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020513(
20514 WDI_ControlBlockType* pWDICtx,
20515 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 wpt_uint8** pMsgBuffer,
20518 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 wpt_uint16* pusBufferSize
20520)
20521{
20522 tHalMsgHeader halMsgHeader;
20523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20524
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 again*/
20527
20528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020529 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020531 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20533 if ( NULL == *pMsgBuffer )
20534 {
20535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20536 "Unable to allocate message buffer for req %s (%d)",
20537 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 }
20542
20543 /*-------------------------------------------------------------------------
20544 Fill in the message header
20545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20547 /* Fill msgVersion */
20548#ifdef WLAN_FEATURE_11AC
20549 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020550 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 else
20552#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020553 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554
Jeff Johnsone7245742012-09-05 17:12:55 -070020555 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20556 *pusDataOffset = sizeof(halMsgHeader);
20557 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20558
20559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560}/*WDI_GetMessageBuffer*/
20561
20562
20563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 the CB
20567
20568 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020570
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 usSendSize size of the buffer to be sent
20572 pRspCb: response callback - save in the WDI
20573 CB
20574 pUserData: user data associated with the
20575 callback
20576 wdiExpectedResponse: the code of the response that is
20577 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020578
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 @see
20580 @return Result of the function call
20581*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020582WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020583WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020584(
20585 WDI_ControlBlockType* pWDICtx,
20586 wpt_uint8* pSendBuffer,
20587 wpt_uint32 usSendSize,
20588 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020589 void* pUserData,
20590 WDI_ResponseEnumType wdiExpectedResponse
20591)
20592{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020593 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020594 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20596
20597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 ------------------------------------------------------------------------*/
20600 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 pWDICtx->pfncRspCB = pRspCb;
20602 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020603
20604 /*-----------------------------------------------------------------------
20605 Call the CTS to send this message over - free message afterwards
20606 - notify transport failure
20607 Note: CTS is reponsible for freeing the message buffer.
20608 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020609 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20610 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20611 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 "Failed to send message over the bus - catastrophic failure");
20615
Jeff Johnsond13512a2012-07-17 11:42:19 -070020616 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020618 else
20619 {
20620 /* even when message was placed in CTS deferred Q, we will treat it
20621 success but log this info
20622 */
20623 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20624 {
20625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20626 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20627 "response %s (%d)",
20628 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20629 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020630 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020631 }
20632 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020633
Jeff Johnsond13512a2012-07-17 11:42:19 -070020634 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 if ( NULL != pWDICtx->wdiReqStatusCB )
20636 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020637 /*Inform originator whether request went through or not*/
20638 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20639 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 pWDICtx->wdiReqStatusCB = NULL;
20641 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020642 callback(wdiStatus, callbackContext);
20643
20644 /*For WDI requests which have registered a request callback,
20645 inform the WDA caller of the same via setting the return value
20646 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20647 end up repeating the functonality in the req callback for the
20648 WDI_STATUS_E_FAILURE case*/
20649 if (wdiStatus == WDI_STATUS_E_FAILURE)
20650 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 }
20652
Jeff Johnsond13512a2012-07-17 11:42:19 -070020653 if ( wdiStatus == WDI_STATUS_SUCCESS )
20654 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 /*Start timer for the expected response */
20656 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020657
20658 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020659 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020660 }
20661 else
20662 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020663 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020664 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20665 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020666
Jeff Johnsond13512a2012-07-17 11:42:19 -070020667 return wdiStatus;
20668
Jeff Johnson295189b2012-06-20 16:38:30 -070020669}/*WDI_SendMsg*/
20670
20671
20672
20673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 the bus using the control transport and saves some info
20676 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020677
20678 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020679 pSendBuffer: buffer to be sent
20680 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020681
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 @see
20683 @return Result of the function call
20684*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020685WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020686WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020687(
20688 WDI_ControlBlockType* pWDICtx,
20689 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 wpt_uint32 usSendSize
20691)
20692{
20693 wpt_uint32 uStatus ;
20694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20695
20696 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020697 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 Note: CTS is reponsible for freeing the message buffer.
20699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 (void*)pSendBuffer, usSendSize );
20702
20703 /*Inform Upper MAC about the outcome of the request*/
20704 if ( NULL != pWDICtx->wdiReqStatusCB )
20705 {
20706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20707 "Send indication status : %d", uStatus);
20708
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020709 /* even if CTS placed indication into its deferred Q, we treat it
20710 * as success and let CTS drain its queue as per smd interrupt to CTS
20711 */
20712 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 -070020713 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 }
20715
20716 /*If sending of the message failed - it is considered catastrophic and
20717 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020718 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20719 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20720
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 {
20722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020724
20725 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20726 return WDI_STATUS_E_FAILURE;
20727 }
20728
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730}/*WDI_SendIndication*/
20731
20732
20733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 @brief WDI_DetectedDeviceError - called internally by DAL when
20735 it has detected a failure in the device
20736
20737 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 usErrorCode: error code detected by WDI or received
20739 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020740
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020743*/
20744void
20745WDI_DetectedDeviceError
20746(
20747 WDI_ControlBlockType* pWDICtx,
20748 wpt_uint16 usErrorCode
20749)
20750{
20751 WDI_LowLevelIndType wdiInd;
20752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20753
20754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20755 "Device Error detected code: %d - transitioning to stopped state",
20756 usErrorCode);
20757
20758 wpalMutexAcquire(&pWDICtx->wptMutex);
20759
20760 WDI_STATableStop(pWDICtx);
20761
20762 WDI_ResetAssocSessions(pWDICtx);
20763
20764 /*Set the expected state transition to stopped - because the device
20765 experienced a failure*/
20766 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20767
20768 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020770
Jeff Johnsone7245742012-09-05 17:12:55 -070020771 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020772
20773 /*TO DO: - there should be an attempt to reset the device here*/
20774
20775 wpalMutexRelease(&pWDICtx->wptMutex);
20776
20777 /*------------------------------------------------------------------------
20778 Notify UMAC if a handler is registered
20779 ------------------------------------------------------------------------*/
20780 if (pWDICtx->wdiLowLevelIndCB)
20781 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20783 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020784
20785 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20786 }
20787}/*WDI_DetectedDeviceError*/
20788
20789/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020790 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 we started on send message has expire - this should
20792 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 reply - trigger catastrophic failure
20794 @param
20795
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020797
20798 @see
20799 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020800*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020801void
Jeff Johnson295189b2012-06-20 16:38:30 -070020802WDI_ResponseTimerCB
20803(
20804 void *pUserData
20805)
20806{
20807 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20809
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020810 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 }
20817
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020818 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020819 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020820
20821 /* If response timer is running at this time that means this timer
20822 * event is not for the last request but rather last-to-last request and
20823 * this timer event has come after we recevied respone for last-to-last
20824 * message
20825 */
20826 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20827 {
20828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20829 "WDI_ResponseTimerCB: timer in running state on timer event, "
20830 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20831 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20832 return;
20833 }
20834
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020835 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 {
20837
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020840 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020842 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20843 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020844
20845 /* WDI timeout means Riva is not responding or SMD communication to Riva
20846 * is not happening. The only possible way to recover from this error
20847 * is to initiate SSR from APPS.
20848 * There is also an option to re-enable wifi, which will eventually
20849 * trigger SSR
20850 */
20851 if (gWDICb.bEnableSSR == false)
20852 {
20853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20854 "SSR is not enabled on WDI timeout");
20855 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20856 return;
20857 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020858#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020859 wpalWcnssResetIntr();
20860 /* if this timer fires, it means Riva did not receive the FIQ */
20861 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020862#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020863 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20864 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020865#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 }
20867 else
20868 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070020869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020870 "Timeout occurred but not waiting for any response %d "
20871 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20872 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20873 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 }
20875
20876 return;
20877
20878}/*WDI_ResponseTimerCB*/
20879
20880
20881/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020883
Jeff Johnsone7245742012-09-05 17:12:55 -070020884
20885 @param pWDICtx: pointer to the WLAN DAL context
20886 pEventData: pointer to the event information structure
20887
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 @see
20889 @return Result of the function call
20890*/
20891WPT_INLINE WDI_Status
20892WDI_ProcessResponse
20893(
20894 WDI_ControlBlockType* pWDICtx,
20895 WDI_EventInfoType* pEventData
20896)
20897{
20898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20899
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 already checked these pointers
20902 ! - revisit this assumption */
20903 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20904 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 WDI_getRespMsgString(pEventData->wdiResponse),
20909 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20910 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20911 }
20912 else
20913 {
20914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 pEventData->wdiResponse);
20917 return WDI_STATUS_E_NOT_IMPLEMENT;
20918 }
20919}/*WDI_ProcessResponse*/
20920
20921
20922/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020924=========================================================================*/
20925
20926/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020927 @brief Utility function used by the DAL Core to help queue a
20928 request that cannot be processed right away.
20929 @param
20930
Jeff Johnson295189b2012-06-20 16:38:30 -070020931 pWDICtx: - pointer to the WDI control block
20932 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020933 queued
20934
20935 @see
20936 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020937*/
20938WDI_Status
20939WDI_QueuePendingReq
20940(
20941 WDI_ControlBlockType* pWDICtx,
20942 WDI_EventInfoType* pEventData
20943)
20944{
Jeff Johnsone7245742012-09-05 17:12:55 -070020945 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20949
20950 if ( NULL == pEventDataQueue )
20951 {
20952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 WDI_ASSERT(0);
20955 return WDI_STATUS_MEM_FAILURE;
20956 }
20957
20958 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20959 pEventDataQueue->pUserData = pEventData->pUserData;
20960 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20961 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963
20964 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20965 {
20966 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020967
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 if ( NULL == pEventInfo )
20969 {
20970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 WDI_ASSERT(0);
20973 wpalMemoryFree(pEventDataQueue);
20974 return WDI_STATUS_MEM_FAILURE;
20975 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020976
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20978
20979 }
20980 pEventDataQueue->pEventData = pEventInfo;
20981
20982 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020984
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020986
20987 return WDI_STATUS_SUCCESS;
20988}/*WDI_QueuePendingReq*/
20989
20990/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 @param
20994
20995 pMsg - pointer to the message
20996
20997 @see
20998 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020999*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021000void
Jeff Johnson295189b2012-06-20 16:38:30 -070021001WDI_PALCtrlMsgCB
21002(
21003 wpt_msg *pMsg
21004)
21005{
21006 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 WDI_ControlBlockType* pWDICtx = NULL;
21008 WDI_Status wdiStatus;
21009 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 void* pUserData;
21011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21012
21013 if (( NULL == pMsg )||
21014 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21015 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21016 {
21017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021020 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021021 }
21022
21023 /*Transition back to the state that we had before serialization
21024 - serialization transitions us to BUSY to stop any incomming requests
21025 ! TO DO L: possible race condition here if a request comes in between the
21026 state transition and the post function*/
21027
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021029
21030 /*-----------------------------------------------------------------------
21031 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021032 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 -----------------------------------------------------------------------*/
21034 switch ( pEventData->wdiRequest )
21035 {
21036
Jeff Johnsone7245742012-09-05 17:12:55 -070021037 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21039 break;
21040
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 case WDI_NV_DOWNLOAD_REQ:
21042 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21043 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21044 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21045 {
21046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021047 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21049 }
21050 else
21051 {
21052 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21053 }
21054
21055 break;
21056
21057 default:
21058 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21059 break;
21060 }/*switch ( pEventData->wdiRequest )*/
21061
21062 if ( WDI_STATUS_SUCCESS != wdiStatus )
21063 {
21064 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21065
21066 if ( NULL != pfnReqStatusCB )
21067 {
21068 /*Fail the request*/
21069 pfnReqStatusCB( wdiStatus, pUserData);
21070 }
21071 }
21072
21073 /* Free data - that was allocated when queueing*/
21074 if( pEventData != NULL )
21075 {
21076 if( pEventData->pEventData != NULL )
21077 {
21078 wpalMemoryFree(pEventData->pEventData);
21079 }
21080 wpalMemoryFree(pEventData);
21081 }
21082
21083 if( pMsg != NULL )
21084 {
21085 wpalMemoryFree(pMsg);
21086 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021087
Jeff Johnson295189b2012-06-20 16:38:30 -070021088}/*WDI_PALCtrlMsgCB*/
21089
21090/**
21091 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021092 and schedule for execution a pending request
21093 @param
21094
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 pWDICtx: - pointer to the WDI control block
21096 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 queued
21098
21099 @see
21100 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021101*/
21102WDI_Status
21103WDI_DequeuePendingReq
21104(
21105 WDI_ControlBlockType* pWDICtx
21106)
21107{
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21112
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021114
21115 if ( NULL == pNode )
21116 {
21117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 return WDI_STATUS_SUCCESS;
21120 }
21121
21122 /*The node actually points to the 1st element inside the Event Data struct -
21123 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125
21126 /*Serialize processing in the control thread
21127 !TO DO: - check to see if these are all the messages params that need
21128 to be filled in*/
21129 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21130
21131 if ( NULL == palMsg )
21132 {
21133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021134 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 palMsg->callback = WDI_PALCtrlMsgCB;
21140 palMsg->ptr = pEventData;
21141
21142 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 palMsg->val = pWDICtx->uGlobalState;
21144
Jeff Johnson295189b2012-06-20 16:38:30 -070021145 /*Transition back to BUSY as we need to handle a queued request*/
21146 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021147
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21149
21150 return WDI_STATUS_PENDING;
21151}/*WDI_DequeuePendingReq*/
21152
21153
21154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 away.- The assoc requests will be queued by BSSID
21158 @param
21159
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 pWDICtx: - pointer to the WDI control block
21161 pEventData: pointer to the evnt info that needs to be queued
21162 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021163
21164 @see
21165 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021166*/
21167WDI_Status
21168WDI_QueueNewAssocRequest
21169(
21170 WDI_ControlBlockType* pWDICtx,
21171 WDI_EventInfoType* pEventData,
21172 wpt_macAddr macBSSID
21173)
21174{
Jeff Johnsone7245742012-09-05 17:12:55 -070021175 wpt_uint8 i;
21176 WDI_BSSSessionType* pSession = NULL;
21177 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 void* pEventInfo;
21180 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021182
Jeff Johnsone7245742012-09-05 17:12:55 -070021183
21184 /*------------------------------------------------------------------------
21185 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 ------------------------------------------------------------------------*/
21187 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21188 {
21189 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21190 {
21191 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 pSession = &pWDICtx->aBSSSessions[i];
21193 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 }
21195 }
21196
21197 if ( i >= WDI_MAX_BSS_SESSIONS )
21198 {
21199 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021202
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 /*------------------------------------------------------------------------
21204 Fill in the BSSID for this session and set the usage flag
21205 ------------------------------------------------------------------------*/
21206 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021208
21209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021210 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 ------------------------------------------------------------------------*/
21212 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21213 if ( NULL == pEventDataQueue )
21214 {
21215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021216 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 WDI_ASSERT(0);
21218 return WDI_STATUS_MEM_FAILURE;
21219 }
21220
21221 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21222 if ( NULL == pSessionIdElement )
21223 {
21224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021225 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 WDI_ASSERT(0);
21227 wpalMemoryFree(pEventDataQueue);
21228 return WDI_STATUS_MEM_FAILURE;
21229 }
21230
21231 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21232 if ( NULL == pEventInfo )
21233 {
21234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021235 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 WDI_ASSERT(0);
21237 wpalMemoryFree(pSessionIdElement);
21238 wpalMemoryFree(pEventDataQueue);
21239 return WDI_STATUS_MEM_FAILURE;
21240 }
21241
21242 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21243 pEventDataQueue->pUserData = pEventData->pUserData;
21244 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21245 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021246 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021247
21248 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21249 pEventDataQueue->pEventData = pEventInfo;
21250
21251 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253
21254 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021256
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021258
21259 /*We need to maintain a separate list that keeps track of the order in which
21260 the new assoc requests are being queued such that we can start processing
21261 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 pSessionIdElement->ucIndex = i;
21263 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021264
21265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21266 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021268
21269 /*Return pending as this is what the status of the request is since it has
21270 been queued*/
21271 return WDI_STATUS_PENDING;
21272}/*WDI_QueueNewAssocRequest*/
21273
21274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021277 away.- The assoc requests will be queued by BSSID
21278 @param
21279
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 pWDICtx: - pointer to the WDI control block
21281 pSession: - session in which to queue
21282 pEventData: pointer to the event info that needs to be
21283 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021284
21285 @see
21286 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021287*/
21288WDI_Status
21289WDI_QueueAssocRequest
21290(
21291 WDI_ControlBlockType* pWDICtx,
21292 WDI_BSSSessionType* pSession,
21293 WDI_EventInfoType* pEventData
21294)
21295{
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021300
21301 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 Sanity check
21303 ------------------------------------------------------------------------*/
21304 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21305 {
21306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021308
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 }
21311
21312 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 ------------------------------------------------------------------------*/
21315 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21316 if ( NULL == pEventDataQueue )
21317 {
21318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021319 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 WDI_ASSERT(0);
21321 return WDI_STATUS_MEM_FAILURE;
21322 }
21323
21324 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21325 if ( NULL == pEventInfo )
21326 {
21327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21328 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021329 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 WDI_ASSERT(0);
21331 wpalMemoryFree(pEventDataQueue);
21332 return WDI_STATUS_MEM_FAILURE;
21333 }
21334
21335 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21336 pEventDataQueue->pUserData = pEventData->pUserData;
21337 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21338 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 pEventDataQueue->pEventData = pEventInfo;
21341
21342 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21343
21344 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021346
21347 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021349
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021351
21352 /*The result of this operation is pending because the request has been
21353 queued and it will be processed at a later moment in time */
21354 return WDI_STATUS_PENDING;
21355}/*WDI_QueueAssocRequest*/
21356
21357/**
21358 @brief Utility function used by the DAL Core to help dequeue
21359 an association request that was pending
21360 The request will be queued up in front of the main
21361 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021362 @param
21363
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021365
21366
21367 @see
21368 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021369*/
21370WDI_Status
21371WDI_DequeueAssocRequest
21372(
21373 WDI_ControlBlockType* pWDICtx
21374)
21375{
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 wpt_list_node* pNode = NULL;
21377 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 WDI_BSSSessionType* pSession;
21379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021380
21381 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 Sanity check
21383 ------------------------------------------------------------------------*/
21384 if ( NULL == pWDICtx )
21385 {
21386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021388
Jeff Johnsone7245742012-09-05 17:12:55 -070021389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021390 }
21391
21392 /*------------------------------------------------------------------------
21393 An association has been completed => a new association can occur
21394 Check to see if there are any pending associations ->
21395 If so , transfer all the pending requests into the busy queue for
21396 processing
21397 These requests have arrived prior to the requests in the busy queue
21398 (bc they needed to be processed in order to be placed in this queue)
21399 => they will be placed at the front of the busy queue
21400 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021401 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021402
21403 if ( NULL == pNode )
21404 {
21405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021406 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021407 return WDI_STATUS_SUCCESS;
21408 }
21409
21410 /*The node actually points to the 1st element inside the Session Id struct -
21411 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021412 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413
21414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21415 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21416
21417 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21418 {
21419 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021420
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021422 the front of the main waiting queue for subsequent execution*/
21423 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 while ( NULL != pNode )
21425 {
21426 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021427 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21428 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021430 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 }
21432 else
21433 {
21434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 WPAL_ASSERT(0);
21437 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021440
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21442 wpalMemoryFree(pSessionIdElement);
21443 return WDI_STATUS_SUCCESS;
21444}/*WDI_DequeueAssocRequest*/
21445
21446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 pending requests - all req cb will be called with
21449 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 @param
21451
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021453
21454 @see
21455 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021456*/
21457WDI_Status
21458WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021459(
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 WDI_ControlBlockType* pWDICtx
21461)
21462{
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 void* pUserData;
21467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21468
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021470
21471 /*------------------------------------------------------------------------
21472 Go through all the requests and fail them - this will only be called
21473 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 ------------------------------------------------------------------------*/
21476 while( pNode )
21477 {
21478 /*The node actually points to the 1st element inside the Event Data struct -
21479 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 pEventDataQueue = (WDI_EventInfoType*)pNode;
21481
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21483 if ( NULL != pfnReqStatusCB )
21484 {
21485 /*Fail the request*/
21486 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21487 }
21488 /* Free data - that was allocated when queueing */
21489 if ( pEventDataQueue->pEventData != NULL )
21490 {
21491 wpalMemoryFree(pEventDataQueue->pEventData);
21492 }
21493 wpalMemoryFree(pEventDataQueue);
21494
21495 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21496 {
21497 break;
21498 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 }
21500
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 return WDI_STATUS_SUCCESS;
21502}/*WDI_ClearPendingRequests*/
21503
21504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 @brief Helper routine used to init the BSS Sessions in the WDI control block
21506
21507
21508 @param pWDICtx: pointer to the WLAN DAL context
21509
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 @see
21511*/
21512void
21513WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021514(
Jeff Johnson295189b2012-06-20 16:38:30 -070021515 WDI_ControlBlockType* pWDICtx
21516)
21517{
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21520
21521 /*-------------------------------------------------------------------------
21522 No Sanity check
21523 -------------------------------------------------------------------------*/
21524 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21525 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21528 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21529 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21530 }
21531}/*WDI_ResetAssocSessions*/
21532
21533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 @brief Helper routine used to find a session based on the BSSID
21535
21536
21537 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021539 pSession: pointer to the session (if found)
21540
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021543*/
21544wpt_uint8
21545WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021546(
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 WDI_ControlBlockType* pWDICtx,
21548 wpt_macAddr macBSSID,
21549 WDI_BSSSessionType** ppSession
21550)
21551{
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21554
21555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 -------------------------------------------------------------------------*/
21558 if ( NULL == ppSession )
21559 {
21560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021561 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 }
21564
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021566
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 /*------------------------------------------------------------------------
21568 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 ------------------------------------------------------------------------*/
21570 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21571 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021572 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21573 (eWLAN_PAL_TRUE ==
21574 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21575 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021576 {
21577 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021578 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 return i;
21580 }
21581 }
21582
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021584}/*WDI_FindAssocSession*/
21585
21586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021587 @brief Helper routine used to find a session based on the BSSID
21588
21589
21590 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 ucBSSIdx: BSS Index of the session
21592 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021593
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021596*/
21597wpt_uint8
21598WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021599(
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 WDI_ControlBlockType* pWDICtx,
21601 wpt_uint16 ucBSSIdx,
21602 WDI_BSSSessionType** ppSession
21603)
21604{
Jeff Johnsone7245742012-09-05 17:12:55 -070021605 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21607
21608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021610 -------------------------------------------------------------------------*/
21611 if ( NULL == ppSession )
21612 {
21613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021614 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 }
21617
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021619
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 /*------------------------------------------------------------------------
21621 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 ------------------------------------------------------------------------*/
21623 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21624 {
21625 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21626 {
21627 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021628 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 return i;
21630 }
21631 }
21632
Jeff Johnsone7245742012-09-05 17:12:55 -070021633 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021634}/*WDI_FindAssocSessionByBSSIdx*/
21635
21636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 @brief Helper routine used to find a session based on the BSSID
21638
21639
21640 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 ucBSSIdx: BSS Index of the session
21642 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021643
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021646*/
21647wpt_uint8
21648WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021649(
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 WDI_ControlBlockType* pWDICtx,
21651 wpt_uint16 usIdx,
21652 WDI_BSSSessionType** ppSession
21653)
21654{
21655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21656
21657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 -------------------------------------------------------------------------*/
21660 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21661 {
21662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021663 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 }
21666
21667 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021669
21670 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021671
Jeff Johnson295189b2012-06-20 16:38:30 -070021672}/*WDI_FindAssocSessionByBSSIdx*/
21673
21674/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021677
21678
21679 @param pWDICtx: pointer to the WLAN DAL context
21680 pSession: pointer to the session (if found)
21681
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021683 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021684*/
21685wpt_uint8
21686WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021687(
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 WDI_ControlBlockType* pWDICtx,
21689 WDI_BSSSessionType** ppSession
21690)
21691{
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 -------------------------------------------------------------------------*/
21697 if ( NULL == ppSession )
21698 {
21699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021700 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 }
21703
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021705
Jeff Johnsone7245742012-09-05 17:12:55 -070021706 /*------------------------------------------------------------------------
21707 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 ------------------------------------------------------------------------*/
21709 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21710 {
21711 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21712 {
21713 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021715 return i;
21716 }
21717 }
21718
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021720}/*WDI_FindEmptySession*/
21721
21722
21723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021726
21727
21728 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070021729 macBSSID: pointer to BSSID. If NULL, get all the session.
21730 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
21731 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
21732 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 @see
21734 @return Number of sessions in use
21735*/
21736wpt_uint8
21737WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021738(
Hoonki Lee26599972013-04-24 01:21:58 -070021739 WDI_ControlBlockType* pWDICtx,
21740 wpt_macAddr macBSSID,
21741 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021742)
21743{
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021746
21747 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 Count all sessions in use
21749 ------------------------------------------------------------------------*/
21750 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21751 {
Hoonki Lee26599972013-04-24 01:21:58 -070021752 if ( macBSSID && skipBSSID &&
21753 (eWLAN_PAL_TRUE ==
21754 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21755 WDI_MAC_ADDR_LEN)))
21756 {
21757 continue;
21758 }
21759 else if ( pWDICtx->aBSSSessions[i].bInUse )
21760 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021761 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070021762 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 }
21764
Jeff Johnsone7245742012-09-05 17:12:55 -070021765 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021766}/*WDI_GetActiveSessionsCount*/
21767
21768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021771
21772
21773 @param pWDICtx: pointer to the WLAN DAL context
21774 pSession: pointer to the session (if found)
21775
Jeff Johnson295189b2012-06-20 16:38:30 -070021776 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021777 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021778*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021779void
Jeff Johnson295189b2012-06-20 16:38:30 -070021780WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021781(
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 WDI_ControlBlockType* pWDICtx,
21783 WDI_BSSSessionType* ppSession
21784)
21785{
21786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 -------------------------------------------------------------------------*/
21789 if ( NULL == ppSession )
21790 {
21791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021792 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021793 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 }
21795
Jeff Johnsone7245742012-09-05 17:12:55 -070021796 /*------------------------------------------------------------------------
21797 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 ------------------------------------------------------------------------*/
21799 wpal_list_destroy(&ppSession->wptPendingQueue);
21800 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021801 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21802 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21804 wpal_list_init(&ppSession->wptPendingQueue);
21805
21806}/*WDI_DeleteSession*/
21807
21808/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021809 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 @param
21812
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 WDI_AddStaParams: - pointer to the WDI Add STA params
21814 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021815
21816 @see
21817 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021818*/
21819void
21820WDI_AddBcastSTAtoSTATable
21821(
21822 WDI_ControlBlockType* pWDICtx,
21823 WDI_AddStaParams * staParams,
21824 wpt_uint16 usBcastStaIdx
21825)
21826{
21827 WDI_AddStaParams wdiAddSTAParam = {0};
21828 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21830
21831 /*---------------------------------------------------------------------
21832 Sanity check
21833 ---------------------------------------------------------------------*/
21834 if ( NULL == staParams )
21835 {
21836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021838
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 }
21841
21842 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21843 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21844 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21845 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21846 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21847 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21848 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21849 WDI_MAC_ADDR_LEN );
21850 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21851 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21852 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21853 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21854 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21855 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21856 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021857
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21859}
21860
21861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 @brief NV blob will be divided into fragments of size 4kb and
21863 Sent to HAL
21864
21865 @param pWDICtx: pointer to the WLAN DAL context
21866 pEventData: pointer to the event information structure
21867
Jeff Johnson295189b2012-06-20 16:38:30 -070021868 @see
21869 @return Result of the function call
21870 */
21871
21872WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021873(
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 WDI_ControlBlockType* pWDICtx,
21875 WDI_EventInfoType* pEventData
21876)
21877{
21878
21879 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21880 wpt_uint8* pSendBuffer = NULL;
21881 wpt_uint16 usDataOffset = 0;
21882 wpt_uint16 usSendSize = 0;
21883 wpt_uint16 usCurrentFragmentSize =0;
21884 wpt_uint8* pSrcBuffer = NULL;
21885 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21886 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21887
21888 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21889 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21890 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21891
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21894
21895 /* Update the current Fragment Number */
21896 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21897
21898 /*Update the HAL REQ structure */
21899 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21900 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21901 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21902
21903 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 image will be sent to HAL*/
21906
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021910 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21913 usCurrentFragmentSize = FRAGMENT_SIZE;
21914
21915 /*Update the HAL REQ structure */
21916 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21917 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21918
21919 }
21920 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021922 usCurrentFragmentSize = FRAGMENT_SIZE;
21923
21924 /*Update the HAL REQ structure */
21925 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21926 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21927 }
21928
21929 /*-----------------------------------------------------------------------
21930 Get message buffer
21931 -----------------------------------------------------------------------*/
21932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21933 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21934 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21937 {
21938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21939 "Unable to get send buffer in NV Download req %x %x ",
21940 pEventData, pwdiNvDownloadReqParams);
21941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 }
21944
21945 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21948
21949 /* Appending the NV image fragment */
21950 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21951 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21952 usCurrentFragmentSize);
21953
21954 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021956
Jeff Johnsone7245742012-09-05 17:12:55 -070021957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21958 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 WDI_NV_DOWNLOAD_RESP);
21960
21961}
Jeff Johnsone7245742012-09-05 17:12:55 -070021962/*============================================================================
21963 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 ============================================================================*/
21965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 @brief Helper routine used to find a session based on the BSSID
21967 @param pContext: pointer to the WLAN DAL context
21968 @param pDPContext: pointer to the Datapath context
21969
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021972*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021973WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021974WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21975{
21976 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21977
21978 pCB->pDPContext = pDPContext;
21979 return;
21980}
21981
21982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021983 @brief Helper routine used to find a session based on the BSSID
21984
21985
21986 @param pContext: pointer to the WLAN DAL context
21987
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 @see
21989 @return pointer to Datapath context
21990*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021991WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021992WDI_DS_GetDatapathContext (void *pContext)
21993{
21994 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21995 return pCB->pDPContext;
21996}
21997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 @brief Helper routine used to find a session based on the BSSID
21999
22000
22001 @param pContext: pointer to the WLAN DAL context
22002 @param pDTDriverContext: pointer to the Transport Driver context
22003
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 @see
22005 @return void
22006*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022007WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022008WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22009{
22010 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22011
22012 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022014}
22015
22016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 @brief Helper routine used to find a session based on the BSSID
22018
22019
22020 @param pWDICtx: pointer to the WLAN DAL context
22021
Jeff Johnson295189b2012-06-20 16:38:30 -070022022 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022024*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022025WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022026WDT_GetTransportDriverContext (void *pContext)
22027{
22028 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022030}
22031
Jeff Johnsone7245742012-09-05 17:12:55 -070022032/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 Helper inline converters
22034 ============================================================================*/
22035/*Convert WDI driver type into HAL driver type*/
22036WPT_STATIC WPT_INLINE WDI_Status
22037WDI_HAL_2_WDI_STATUS
22038(
22039 eHalStatus halStatus
22040)
22041{
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 the chances of getting inlined*/
22044 switch( halStatus )
22045 {
22046 case eHAL_STATUS_SUCCESS:
22047 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22048 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22049 return WDI_STATUS_SUCCESS;
22050 case eHAL_STATUS_FAILURE:
22051 return WDI_STATUS_E_FAILURE;
22052 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 return WDI_STATUS_MEM_FAILURE;
22054 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022056 default:
22057 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022059
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022061}/*WDI_HAL_2_WDI_STATUS*/
22062
22063/*Convert WDI request type into HAL request type*/
22064WPT_STATIC WPT_INLINE tHalHostMsgType
22065WDI_2_HAL_REQ_TYPE
22066(
22067 WDI_RequestEnumType wdiReqType
22068)
22069{
Jeff Johnsone7245742012-09-05 17:12:55 -070022070 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 the chances of getting inlined*/
22072 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022079 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022080 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022081 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022085 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022087 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022099 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022107 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 return WLAN_HAL_RMV_STAKEY_REQ;
22109 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 case WDI_DEL_BA_REQ:
22118 return WLAN_HAL_DEL_BA_REQ;
22119#ifdef FEATURE_WLAN_CCX
22120 case WDI_TSM_STATS_REQ:
22121 return WLAN_HAL_TSM_STATS_REQ;
22122#endif
22123 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 case WDI_ADD_BA_SESSION_REQ:
22134 return WLAN_HAL_ADD_BA_SESSION_REQ;
22135 case WDI_TRIGGER_BA_REQ:
22136 return WLAN_HAL_TRIGGER_BA_REQ;
22137 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22142 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22143 case WDI_SET_MAX_TX_POWER_REQ:
22144 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022145 case WDI_SET_TX_POWER_REQ:
22146 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22148 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022149#ifdef FEATURE_WLAN_TDLS
22150 case WDI_TDLS_LINK_ESTABLISH_REQ:
22151 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22152#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022162 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022163 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022166 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022168 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022169 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022171 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 case WDI_REM_BEACON_FILTER_REQ:
22174 return WLAN_HAL_REM_BCN_FILTER_REQ;
22175 case WDI_SET_RSSI_THRESHOLDS_REQ:
22176 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22177 case WDI_HOST_OFFLOAD_REQ:
22178 return WLAN_HAL_HOST_OFFLOAD_REQ;
22179 case WDI_WOWL_ADD_BC_PTRN_REQ:
22180 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22181 case WDI_WOWL_DEL_BC_PTRN_REQ:
22182 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22183 case WDI_WOWL_ENTER_REQ:
22184 return WLAN_HAL_ENTER_WOWL_REQ;
22185 case WDI_WOWL_EXIT_REQ:
22186 return WLAN_HAL_EXIT_WOWL_REQ;
22187 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22188 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22189 case WDI_NV_DOWNLOAD_REQ:
22190 return WLAN_HAL_DOWNLOAD_NV_REQ;
22191 case WDI_FLUSH_AC_REQ:
22192 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22193 case WDI_BTAMP_EVENT_REQ:
22194 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22195#ifdef WLAN_FEATURE_VOWIFI_11R
22196 case WDI_AGGR_ADD_TS_REQ:
22197 return WLAN_HAL_AGGR_ADD_TS_REQ;
22198#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 case WDI_FTM_CMD_REQ:
22200 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 case WDI_ADD_STA_SELF_REQ:
22202 return WLAN_HAL_ADD_STA_SELF_REQ;
22203 case WDI_DEL_STA_SELF_REQ:
22204 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022205#ifdef FEATURE_OEM_DATA_SUPPORT
22206 case WDI_START_OEM_DATA_REQ:
22207 return WLAN_HAL_START_OEM_DATA_REQ;
22208#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 case WDI_HOST_RESUME_REQ:
22210 return WLAN_HAL_HOST_RESUME_REQ;
22211 case WDI_HOST_SUSPEND_IND:
22212 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022213 case WDI_TRAFFIC_STATS_IND:
22214 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022215#ifdef WLAN_FEATURE_11W
22216 case WDI_EXCLUDE_UNENCRYPTED_IND:
22217 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22218#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022219 case WDI_KEEP_ALIVE_REQ:
22220 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022221#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022222 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22223 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022224#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022225#ifdef FEATURE_WLAN_SCAN_PNO
22226 case WDI_SET_PREF_NETWORK_REQ:
22227 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22228 case WDI_SET_RSSI_FILTER_REQ:
22229 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22230 case WDI_UPDATE_SCAN_PARAMS_REQ:
22231 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22232#endif // FEATURE_WLAN_SCAN_PNO
22233 case WDI_SET_TX_PER_TRACKING_REQ:
22234 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22235#ifdef WLAN_FEATURE_PACKET_FILTERING
22236 case WDI_8023_MULTICAST_LIST_REQ:
22237 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22238 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22241 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22242 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22243 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22244#endif // WLAN_FEATURE_PACKET_FILTERING
22245 case WDI_HAL_DUMP_CMD_REQ:
22246 return WLAN_HAL_DUMP_COMMAND_REQ;
22247#ifdef WLAN_FEATURE_GTK_OFFLOAD
22248 case WDI_GTK_OFFLOAD_REQ:
22249 return WLAN_HAL_GTK_OFFLOAD_REQ;
22250 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22251 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22252#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22253
22254 case WDI_INIT_SCAN_CON_REQ:
22255 return WLAN_HAL_INIT_SCAN_CON_REQ;
22256 case WDI_SET_POWER_PARAMS_REQ:
22257 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22258 case WDI_SET_TM_LEVEL_REQ:
22259 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22260 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22261 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022262#ifdef WLAN_FEATURE_11AC
22263 case WDI_UPDATE_VHT_OP_MODE_REQ:
22264 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22265#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022266 case WDI_GET_ROAM_RSSI_REQ:
22267 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022268 case WDI_DHCP_START_IND:
22269 return WLAN_HAL_DHCP_START_IND;
22270 case WDI_DHCP_STOP_IND:
22271 return WLAN_HAL_DHCP_STOP_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022275
Jeff Johnson295189b2012-06-20 16:38:30 -070022276}/*WDI_2_HAL_REQ_TYPE*/
22277
22278/*Convert WDI response type into HAL response type*/
22279WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22280HAL_2_WDI_RSP_TYPE
22281(
22282 tHalHostMsgType halMsg
22283)
22284{
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 the chances of getting inlined*/
22287 switch( halMsg )
22288 {
22289 case WLAN_HAL_START_RSP:
22290 return WDI_START_RESP;
22291 case WLAN_HAL_STOP_RSP:
22292 return WDI_STOP_RESP;
22293 case WLAN_HAL_INIT_SCAN_RSP:
22294 return WDI_INIT_SCAN_RESP;
22295 case WLAN_HAL_START_SCAN_RSP:
22296 return WDI_START_SCAN_RESP;
22297 case WLAN_HAL_END_SCAN_RSP:
22298 return WDI_END_SCAN_RESP;
22299 case WLAN_HAL_FINISH_SCAN_RSP:
22300 return WDI_FINISH_SCAN_RESP;
22301 case WLAN_HAL_CONFIG_STA_RSP:
22302 return WDI_CONFIG_STA_RESP;
22303 case WLAN_HAL_DELETE_STA_RSP:
22304 return WDI_DEL_STA_RESP;
22305 case WLAN_HAL_CONFIG_BSS_RSP:
22306 return WDI_CONFIG_BSS_RESP;
22307 case WLAN_HAL_DELETE_BSS_RSP:
22308 return WDI_DEL_BSS_RESP;
22309 case WLAN_HAL_JOIN_RSP:
22310 return WDI_JOIN_RESP;
22311 case WLAN_HAL_POST_ASSOC_RSP:
22312 return WDI_POST_ASSOC_RESP;
22313 case WLAN_HAL_SET_BSSKEY_RSP:
22314 return WDI_SET_BSS_KEY_RESP;
22315 case WLAN_HAL_SET_STAKEY_RSP:
22316 return WDI_SET_STA_KEY_RESP;
22317 case WLAN_HAL_RMV_BSSKEY_RSP:
22318 return WDI_RMV_BSS_KEY_RESP;
22319 case WLAN_HAL_RMV_STAKEY_RSP:
22320 return WDI_RMV_STA_KEY_RESP;
22321 case WLAN_HAL_SET_BCASTKEY_RSP:
22322 return WDI_SET_STA_BCAST_KEY_RESP;
22323 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22324 // return WDI_RMV_STA_BCAST_KEY_RESP;
22325 case WLAN_HAL_ADD_TS_RSP:
22326 return WDI_ADD_TS_RESP;
22327 case WLAN_HAL_DEL_TS_RSP:
22328 return WDI_DEL_TS_RESP;
22329 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22330 return WDI_UPD_EDCA_PRMS_RESP;
22331 case WLAN_HAL_ADD_BA_RSP:
22332 return WDI_ADD_BA_RESP;
22333 case WLAN_HAL_DEL_BA_RSP:
22334 return WDI_DEL_BA_RESP;
22335#ifdef FEATURE_WLAN_CCX
22336 case WLAN_HAL_TSM_STATS_RSP:
22337 return WDI_TSM_STATS_RESP;
22338#endif
22339 case WLAN_HAL_CH_SWITCH_RSP:
22340 return WDI_CH_SWITCH_RESP;
22341 case WLAN_HAL_SET_LINK_ST_RSP:
22342 return WDI_SET_LINK_ST_RESP;
22343 case WLAN_HAL_GET_STATS_RSP:
22344 return WDI_GET_STATS_RESP;
22345 case WLAN_HAL_UPDATE_CFG_RSP:
22346 return WDI_UPDATE_CFG_RESP;
22347 case WLAN_HAL_ADD_BA_SESSION_RSP:
22348 return WDI_ADD_BA_SESSION_RESP;
22349 case WLAN_HAL_TRIGGER_BA_RSP:
22350 return WDI_TRIGGER_BA_RESP;
22351 case WLAN_HAL_UPDATE_BEACON_RSP:
22352 return WDI_UPD_BCON_PRMS_RESP;
22353 case WLAN_HAL_SEND_BEACON_RSP:
22354 return WDI_SND_BCON_RESP;
22355 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22356 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22357 /*Indications*/
22358 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22359 return WDI_HAL_RSSI_NOTIFICATION_IND;
22360 case WLAN_HAL_MISSED_BEACON_IND:
22361 return WDI_HAL_MISSED_BEACON_IND;
22362 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22363 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22364 case WLAN_HAL_MIC_FAILURE_IND:
22365 return WDI_HAL_MIC_FAILURE_IND;
22366 case WLAN_HAL_FATAL_ERROR_IND:
22367 return WDI_HAL_FATAL_ERROR_IND;
22368 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22369 return WDI_HAL_DEL_STA_IND;
22370 case WLAN_HAL_COEX_IND:
22371 return WDI_HAL_COEX_IND;
22372 case WLAN_HAL_OTA_TX_COMPL_IND:
22373 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 case WLAN_HAL_P2P_NOA_ATTR_IND:
22375 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022376 case WLAN_HAL_P2P_NOA_START_IND:
22377 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 case WLAN_HAL_TX_PER_HIT_IND:
22379 return WDI_HAL_TX_PER_HIT_IND;
22380 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22381 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022382 case WLAN_HAL_SET_TX_POWER_RSP:
22383 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022384 case WLAN_HAL_SET_P2P_GONOA_RSP:
22385 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022386#ifdef FEATURE_WLAN_TDLS
22387 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22388 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22389 case WLAN_HAL_TDLS_IND:
22390 return WDI_HAL_TDLS_IND;
22391#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022399 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022406 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22411 return WDI_SET_BEACON_FILTER_RESP;
22412 case WLAN_HAL_REM_BCN_FILTER_RSP:
22413 return WDI_REM_BEACON_FILTER_RESP;
22414 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22415 return WDI_SET_RSSI_THRESHOLDS_RESP;
22416 case WLAN_HAL_HOST_OFFLOAD_RSP:
22417 return WDI_HOST_OFFLOAD_RESP;
22418 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22419 return WDI_WOWL_ADD_BC_PTRN_RESP;
22420 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22421 return WDI_WOWL_DEL_BC_PTRN_RESP;
22422 case WLAN_HAL_ENTER_WOWL_RSP:
22423 return WDI_WOWL_ENTER_RESP;
22424 case WLAN_HAL_EXIT_WOWL_RSP:
22425 return WDI_WOWL_EXIT_RESP;
22426 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22427 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22428 case WLAN_HAL_DOWNLOAD_NV_RSP:
22429 return WDI_NV_DOWNLOAD_RESP;
22430 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22431 return WDI_FLUSH_AC_RESP;
22432 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22433 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 case WLAN_HAL_PROCESS_PTT_RSP:
22435 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 case WLAN_HAL_ADD_STA_SELF_RSP:
22437 return WDI_ADD_STA_SELF_RESP;
22438case WLAN_HAL_DEL_STA_SELF_RSP:
22439 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022440#ifdef FEATURE_OEM_DATA_SUPPORT
22441 case WLAN_HAL_START_OEM_DATA_RSP:
22442 return WDI_START_OEM_DATA_RESP;
22443#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 case WLAN_HAL_HOST_RESUME_RSP:
22445 return WDI_HOST_RESUME_RESP;
22446 case WLAN_HAL_KEEP_ALIVE_RSP:
22447 return WDI_KEEP_ALIVE_RESP;
22448#ifdef FEATURE_WLAN_SCAN_PNO
22449 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22450 return WDI_SET_PREF_NETWORK_RESP;
22451 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22454 return WDI_UPDATE_SCAN_PARAMS_RESP;
22455 case WLAN_HAL_PREF_NETW_FOUND_IND:
22456 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22457#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022458#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022459 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22460 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022461#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22463 return WDI_SET_TX_PER_TRACKING_RESP;
22464#ifdef WLAN_FEATURE_PACKET_FILTERING
22465 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22466 return WDI_8023_MULTICAST_LIST_RESP;
22467 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22468 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22469 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22470 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22471 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22472 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22473#endif // WLAN_FEATURE_PACKET_FILTERING
22474
22475 case WLAN_HAL_DUMP_COMMAND_RSP:
22476 return WDI_HAL_DUMP_CMD_RESP;
22477 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22478 return WDI_SET_POWER_PARAMS_RESP;
22479#ifdef WLAN_FEATURE_VOWIFI_11R
22480 case WLAN_HAL_AGGR_ADD_TS_RSP:
22481 return WDI_AGGR_ADD_TS_RESP;
22482#endif
22483
22484#ifdef WLAN_FEATURE_GTK_OFFLOAD
22485 case WLAN_HAL_GTK_OFFLOAD_RSP:
22486 return WDI_GTK_OFFLOAD_RESP;
22487 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22488 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22489#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22490#ifdef WLAN_WAKEUP_EVENTS
22491 case WLAN_HAL_WAKE_REASON_IND:
22492 return WDI_HAL_WAKE_REASON_IND;
22493#endif // WLAN_WAKEUP_EVENTS
22494
22495 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22496 return WDI_SET_TM_LEVEL_RESP;
22497 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22498 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022499#ifdef WLAN_FEATURE_11AC
22500 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22501 return WDI_UPDATE_VHT_OP_MODE_RESP;
22502#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022503#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22504 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22505 return WDI_GET_ROAM_RSSI_RESP;
22506#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 }
22510
22511}/*HAL_2_WDI_RSP_TYPE*/
22512
22513
22514/*Convert WDI driver type into HAL driver type*/
22515WPT_STATIC WPT_INLINE tDriverType
22516WDI_2_HAL_DRV_TYPE
22517(
22518 WDI_DriverType wdiDriverType
22519)
22520{
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 the chances of getting inlined*/
22523 switch( wdiDriverType )
22524 {
22525 case WDI_DRIVER_TYPE_PRODUCTION:
22526 return eDRIVER_TYPE_PRODUCTION;
22527 case WDI_DRIVER_TYPE_MFG:
22528 return eDRIVER_TYPE_MFG;
22529 case WDI_DRIVER_TYPE_DVT:
22530 return eDRIVER_TYPE_DVT;
22531 }
22532
Jeff Johnsone7245742012-09-05 17:12:55 -070022533 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022534}/*WDI_2_HAL_DRV_TYPE*/
22535
22536
22537/*Convert WDI stop reason into HAL stop reason*/
22538WPT_STATIC WPT_INLINE tHalStopType
22539WDI_2_HAL_STOP_REASON
22540(
22541 WDI_StopType wdiDriverType
22542)
22543{
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 the chances of getting inlined*/
22546 switch( wdiDriverType )
22547 {
22548 case WDI_STOP_TYPE_SYS_RESET:
22549 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022550 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22551 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 case WDI_STOP_TYPE_RF_KILL:
22553 return HAL_STOP_TYPE_RF_KILL;
22554 }
22555
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022557}/*WDI_2_HAL_STOP_REASON*/
22558
22559
22560/*Convert WDI scan mode type into HAL scan mode type*/
22561WPT_STATIC WPT_INLINE eHalSysMode
22562WDI_2_HAL_SCAN_MODE
22563(
22564 WDI_ScanMode wdiScanMode
22565)
22566{
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 the chances of getting inlined*/
22569 switch( wdiScanMode )
22570 {
22571 case WDI_SCAN_MODE_NORMAL:
22572 return eHAL_SYS_MODE_NORMAL;
22573 case WDI_SCAN_MODE_LEARN:
22574 return eHAL_SYS_MODE_LEARN;
22575 case WDI_SCAN_MODE_SCAN:
22576 return eHAL_SYS_MODE_SCAN;
22577 case WDI_SCAN_MODE_PROMISC:
22578 return eHAL_SYS_MODE_PROMISC;
22579 case WDI_SCAN_MODE_SUSPEND_LINK:
22580 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022581 case WDI_SCAN_MODE_ROAM_SCAN:
22582 return eHAL_SYS_MODE_ROAM_SCAN;
22583 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22584 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 }
22586
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022588}/*WDI_2_HAL_SCAN_MODE*/
22589
22590/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022591WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022592WDI_2_HAL_SEC_CH_OFFSET
22593(
22594 WDI_HTSecondaryChannelOffset wdiSecChOffset
22595)
22596{
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 the chances of getting inlined*/
22599 switch( wdiSecChOffset )
22600 {
22601 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022602 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022603 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022604 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022606 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22607#ifdef WLAN_FEATURE_11AC
22608 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22609 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22610 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22611 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22612 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22613 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22614 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22615 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22616 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22617 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22618 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22619 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22620 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22621 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22622#endif
22623 default:
22624 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 }
22626
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022628}/*WDI_2_HAL_SEC_CH_OFFSET*/
22629
22630/*Convert WDI BSS type into HAL BSS type*/
22631WPT_STATIC WPT_INLINE tSirBssType
22632WDI_2_HAL_BSS_TYPE
22633(
22634 WDI_BssType wdiBSSType
22635)
22636{
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022638 the chances of getting inlined*/
22639 switch( wdiBSSType )
22640 {
22641 case WDI_INFRASTRUCTURE_MODE:
22642 return eSIR_INFRASTRUCTURE_MODE;
22643 case WDI_INFRA_AP_MODE:
22644 return eSIR_INFRA_AP_MODE;
22645 case WDI_IBSS_MODE:
22646 return eSIR_IBSS_MODE;
22647 case WDI_BTAMP_STA_MODE:
22648 return eSIR_BTAMP_STA_MODE;
22649 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 case WDI_BSS_AUTO_MODE:
22652 return eSIR_AUTO_MODE;
22653 }
22654
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022656}/*WDI_2_HAL_BSS_TYPE*/
22657
22658/*Convert WDI NW type into HAL NW type*/
22659WPT_STATIC WPT_INLINE tSirNwType
22660WDI_2_HAL_NW_TYPE
22661(
22662 WDI_NwType wdiNWType
22663)
22664{
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 the chances of getting inlined*/
22667 switch( wdiNWType )
22668 {
22669 case WDI_11A_NW_TYPE:
22670 return eSIR_11A_NW_TYPE;
22671 case WDI_11B_NW_TYPE:
22672 return eSIR_11B_NW_TYPE;
22673 case WDI_11G_NW_TYPE:
22674 return eSIR_11G_NW_TYPE;
22675 case WDI_11N_NW_TYPE:
22676 return eSIR_11N_NW_TYPE;
22677 }
22678
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680}/*WDI_2_HAL_NW_TYPE*/
22681
22682/*Convert WDI chanel bonding type into HAL cb type*/
22683WPT_STATIC WPT_INLINE ePhyChanBondState
22684WDI_2_HAL_CB_STATE
22685(
22686 WDI_PhyChanBondState wdiCbState
22687)
22688{
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022690 the chances of getting inlined*/
22691 switch ( wdiCbState )
22692 {
22693 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22694 return PHY_SINGLE_CHANNEL_CENTERED;
22695 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22696 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22697 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22698 return PHY_DOUBLE_CHANNEL_CENTERED;
22699 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22700 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022701#ifdef WLAN_FEATURE_11AC
22702 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22703 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22704 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22705 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22706 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22707 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22708 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22709 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22710 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22711 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22712 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22713 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22714 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22715 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22716#endif
22717 case WDI_MAX_CB_STATE:
22718 default:
22719 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022721
Jeff Johnson295189b2012-06-20 16:38:30 -070022722 return PHY_CHANNEL_BONDING_STATE_MAX;
22723}/*WDI_2_HAL_CB_STATE*/
22724
22725/*Convert WDI chanel bonding type into HAL cb type*/
22726WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22727WDI_2_HAL_HT_OPER_MODE
22728(
22729 WDI_HTOperatingMode wdiHTOperMode
22730)
22731{
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 the chances of getting inlined*/
22734 switch ( wdiHTOperMode )
22735 {
22736 case WDI_HT_OP_MODE_PURE:
22737 return eSIR_HT_OP_MODE_PURE;
22738 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22739 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22740 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22741 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22742 case WDI_HT_OP_MODE_MIXED:
22743 return eSIR_HT_OP_MODE_MIXED;
22744 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022745
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 return eSIR_HT_OP_MODE_MAX;
22747}/*WDI_2_HAL_HT_OPER_MODE*/
22748
22749/*Convert WDI mimo PS type into HAL mimo PS type*/
22750WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22751WDI_2_HAL_MIMO_PS
22752(
22753 WDI_HTMIMOPowerSaveState wdiHTOperMode
22754)
22755{
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 the chances of getting inlined*/
22758 switch ( wdiHTOperMode )
22759 {
22760 case WDI_HT_MIMO_PS_STATIC:
22761 return eSIR_HT_MIMO_PS_STATIC;
22762 case WDI_HT_MIMO_PS_DYNAMIC:
22763 return eSIR_HT_MIMO_PS_DYNAMIC;
22764 case WDI_HT_MIMO_PS_NA:
22765 return eSIR_HT_MIMO_PS_NA;
22766 case WDI_HT_MIMO_PS_NO_LIMIT:
22767 return eSIR_HT_MIMO_PS_NO_LIMIT;
22768 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022769
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 return eSIR_HT_MIMO_PS_MAX;
22771}/*WDI_2_HAL_MIMO_PS*/
22772
22773/*Convert WDI ENC type into HAL ENC type*/
22774WPT_STATIC WPT_INLINE tAniEdType
22775WDI_2_HAL_ENC_TYPE
22776(
22777 WDI_EncryptType wdiEncType
22778)
22779{
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 the chances of getting inlined*/
22782 switch ( wdiEncType )
22783 {
22784 case WDI_ENCR_NONE:
22785 return eSIR_ED_NONE;
22786
22787 case WDI_ENCR_WEP40:
22788 return eSIR_ED_WEP40;
22789
22790 case WDI_ENCR_WEP104:
22791 return eSIR_ED_WEP104;
22792
22793 case WDI_ENCR_TKIP:
22794 return eSIR_ED_TKIP;
22795
22796 case WDI_ENCR_CCMP:
22797 return eSIR_ED_CCMP;
22798
22799 case WDI_ENCR_AES_128_CMAC:
22800 return eSIR_ED_AES_128_CMAC;
22801#if defined(FEATURE_WLAN_WAPI)
22802 case WDI_ENCR_WPI:
22803 return eSIR_ED_WPI;
22804#endif
22805 default:
22806 return eSIR_ED_NOT_IMPLEMENTED;
22807 }
22808
22809}/*WDI_2_HAL_ENC_TYPE*/
22810
22811/*Convert WDI WEP type into HAL WEP type*/
22812WPT_STATIC WPT_INLINE tAniWepType
22813WDI_2_HAL_WEP_TYPE
22814(
22815 WDI_WepType wdiWEPType
22816)
22817{
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 the chances of getting inlined*/
22820 switch ( wdiWEPType )
22821 {
22822 case WDI_WEP_STATIC:
22823 return eSIR_WEP_STATIC;
22824
22825 case WDI_WEP_DYNAMIC:
22826 return eSIR_WEP_DYNAMIC;
22827 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022828
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 return eSIR_WEP_MAX;
22830}/*WDI_2_HAL_WEP_TYPE*/
22831
22832WPT_STATIC WPT_INLINE tSirLinkState
22833WDI_2_HAL_LINK_STATE
22834(
22835 WDI_LinkStateType wdiLinkState
22836)
22837{
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 the chances of getting inlined*/
22840 switch ( wdiLinkState )
22841 {
22842 case WDI_LINK_IDLE_STATE:
22843 return eSIR_LINK_IDLE_STATE;
22844
22845 case WDI_LINK_PREASSOC_STATE:
22846 return eSIR_LINK_PREASSOC_STATE;
22847
22848 case WDI_LINK_POSTASSOC_STATE:
22849 return eSIR_LINK_POSTASSOC_STATE;
22850
22851 case WDI_LINK_AP_STATE:
22852 return eSIR_LINK_AP_STATE;
22853
22854 case WDI_LINK_IBSS_STATE:
22855 return eSIR_LINK_IBSS_STATE;
22856
22857 case WDI_LINK_BTAMP_PREASSOC_STATE:
22858 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22859
22860 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22861 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22862
22863 case WDI_LINK_BTAMP_AP_STATE:
22864 return eSIR_LINK_BTAMP_AP_STATE;
22865
22866 case WDI_LINK_BTAMP_STA_STATE:
22867 return eSIR_LINK_BTAMP_STA_STATE;
22868
22869 case WDI_LINK_LEARN_STATE:
22870 return eSIR_LINK_LEARN_STATE;
22871
22872 case WDI_LINK_SCAN_STATE:
22873 return eSIR_LINK_SCAN_STATE;
22874
22875 case WDI_LINK_FINISH_SCAN_STATE:
22876 return eSIR_LINK_FINISH_SCAN_STATE;
22877
22878 case WDI_LINK_INIT_CAL_STATE:
22879 return eSIR_LINK_INIT_CAL_STATE;
22880
22881 case WDI_LINK_FINISH_CAL_STATE:
22882 return eSIR_LINK_FINISH_CAL_STATE;
22883
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 case WDI_LINK_LISTEN_STATE:
22885 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022886
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053022887 case WDI_LINK_SEND_ACTION_STATE:
22888 return eSIR_LINK_SEND_ACTION_STATE;
22889
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 default:
22891 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022892 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022893}
22894
Jeff Johnsone7245742012-09-05 17:12:55 -070022895/*Translate a STA Context from WDI into HAL*/
22896WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022897void
22898WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022899(
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 tConfigStaParams* phalConfigSta,
22901 WDI_ConfigStaReqInfoType* pwdiConfigSta
22902)
22903{
22904 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022905#ifdef WLAN_FEATURE_11AC
22906 /* Get the Version 1 Handler */
22907 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22908 if (WDI_getFwWlanFeatCaps(DOT11AC))
22909 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022910 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022911 }
22912#endif
22913 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022914 the chances of getting inlined*/
22915
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 wpalMemoryCopy(phalConfigSta->bssId,
22917 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22918
22919 wpalMemoryCopy(phalConfigSta->staMac,
22920 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022921
22922 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22923 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22924 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22925 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22926 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22927 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22928 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22929 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22930 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22931 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22932 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22933 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22934 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22935 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22936 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22937 phalConfigSta->action = pwdiConfigSta->wdiAction;
22938 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22939 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22940 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22941 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22942 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22943 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22944 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022945
Jeff Johnson295189b2012-06-20 16:38:30 -070022946 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22947
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 pwdiConfigSta->wdiSupportedRates.opRateMode;
22950 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22951 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22954 }
22955 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22956 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22959 }
22960 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22961 {
22962 phalConfigSta->supportedRates.aniLegacyRates[i] =
22963 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22964 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022965 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22967 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22968 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22971 }
22972 phalConfigSta->supportedRates.rxHighestDataRate =
22973 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22974
Jeff Johnsone7245742012-09-05 17:12:55 -070022975#ifdef WLAN_FEATURE_11AC
22976 if(phalConfigSta_V1 != NULL)
22977 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022978 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22979 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22980 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22981 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 }
22983#endif
22984
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022986
Jeff Johnsone7245742012-09-05 17:12:55 -070022987#ifdef WLAN_FEATURE_11AC
22988 if(phalConfigSta_V1 != NULL)
22989 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022990 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22991 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022992 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022993 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22994 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22995
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 }
22997#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022998}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022999
23000/*Translate a Rate set info from WDI into HAL*/
23001WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023002WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023003(
Jeff Johnson295189b2012-06-20 16:38:30 -070023004 tSirMacRateSet* pHalRateSet,
23005 WDI_RateSet* pwdiRateSet
23006)
23007{
Jeff Johnsone7245742012-09-05 17:12:55 -070023008 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23010
23011 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23012 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23013
23014 for ( i = 0; i < pHalRateSet->numRates; i++ )
23015 {
23016 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023018
Jeff Johnson295189b2012-06-20 16:38:30 -070023019}/*WDI_CopyWDIRateSetToHALRateSet*/
23020
23021
23022/*Translate an EDCA Parameter Record from WDI into HAL*/
23023WPT_STATIC WPT_INLINE void
23024WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023025(
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 tSirMacEdcaParamRecord* phalEdcaParam,
23027 WDI_EdcaParamRecord* pWDIEdcaParam
23028)
23029{
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 the chances of getting inlined*/
23032
23033 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23034 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23035 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23036 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23037
23038 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23039 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23040 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23041}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23042
23043
23044/*Copy a management frame header from WDI fmt into HAL fmt*/
23045WPT_STATIC WPT_INLINE void
23046WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23047(
23048 tSirMacMgmtHdr* pmacMgmtHdr,
23049 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23050)
23051{
23052 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23053 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23054 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23055 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23056 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23057 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23058 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23059 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23060 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23061 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23062 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23063
23064 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23065 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23066
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 pwdiMacMgmtHdr->bssId, 6);
23073
23074 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23075 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23076 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23077
23078}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23079
23080
23081/*Copy config bss parameters from WDI fmt into HAL fmt*/
23082WPT_STATIC WPT_INLINE void
23083WDI_CopyWDIConfigBSSToHALConfigBSS
23084(
23085 tConfigBssParams* phalConfigBSS,
23086 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23087)
23088{
23089
23090 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023091#ifdef WLAN_FEATURE_11AC
23092 /* Get the Version 1 Handler */
23093 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23094 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023095 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023096#endif
23097
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 wpalMemoryCopy( phalConfigBSS->bssId,
23099 pwdiConfigBSS->macBSSID,
23100 WDI_MAC_ADDR_LEN);
23101
23102#ifdef HAL_SELF_STA_PER_BSS
23103 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23104 pwdiConfigBSS->macSelfAddr,
23105 WDI_MAC_ADDR_LEN);
23106#endif
23107
23108 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23109
23110 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23111 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23112
Jeff Johnsone7245742012-09-05 17:12:55 -070023113 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 pwdiConfigBSS->ucShortSlotTimeSupported;
23115 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23116 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23117 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23118 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23119 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023120 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023121 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23122 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23123 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23124 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23125 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23126 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23127 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23128 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23129 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23130 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23131 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23132
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 phalConfigBSS->htOperMode =
23134 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023135
23136 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23137 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23138 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23139 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23140
23141#ifdef WLAN_FEATURE_VOWIFI
23142 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23143#endif
23144
23145 /*! Used 32 as magic number because that is how the ssid is declared inside the
23146 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023147 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23149 pwdiConfigBSS->wdiSSID.ucLength : 32;
23150 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 pwdiConfigBSS->wdiSSID.sSSID,
23152 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023153
23154 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23155 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023156
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23158 &pwdiConfigBSS->wdiRateSet);
23159
23160 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23161
23162 if(phalConfigBSS->edcaParamsValid)
23163 {
23164 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23165 &pwdiConfigBSS->wdiBEEDCAParams);
23166 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23167 &pwdiConfigBSS->wdiBKEDCAParams);
23168 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23169 &pwdiConfigBSS->wdiVIEDCAParams);
23170 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23171 &pwdiConfigBSS->wdiVOEDCAParams);
23172 }
23173
Jeff Johnsone7245742012-09-05 17:12:55 -070023174 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023175
23176 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23177
23178#ifdef WLAN_FEATURE_VOWIFI_11R
23179
Jeff Johnsone7245742012-09-05 17:12:55 -070023180 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023181 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023182
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 if( phalConfigBSS->extSetStaKeyParamValid )
23184 {
23185 /*-----------------------------------------------------------------------
23186 Copy the STA Key parameters into the HAL message
23187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23190
Jeff Johnsone7245742012-09-05 17:12:55 -070023191 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23193
23194 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23195
23196 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23197
23198 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23199
Jeff Johnson295189b2012-06-20 16:38:30 -070023200 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23201 keyIndex++)
23202 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23205 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23206 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23207 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23208 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23209 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23216 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 WDI_MAX_KEY_LENGTH);
23219 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 }
23221 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23222 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 sizeof(phalConfigBSS->extSetStaKeyParam) );
23225 }
23226
23227#endif /*WLAN_FEATURE_VOWIFI_11R*/
23228
Jeff Johnsone7245742012-09-05 17:12:55 -070023229#ifdef WLAN_FEATURE_11AC
23230 if(phalConfigBSS_V1 != NULL)
23231 {
23232 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23233 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23234 }
23235#endif
23236
Jeff Johnson295189b2012-06-20 16:38:30 -070023237}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23238
23239
Jeff Johnsone7245742012-09-05 17:12:55 -070023240/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 pointed to by user data */
23242WPT_STATIC WPT_INLINE void
23243WDI_ExtractRequestCBFromEvent
23244(
23245 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023246 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023247 void** ppUserData
23248)
23249{
23250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23251 switch ( pEvent->wdiRequest )
23252 {
23253 case WDI_START_REQ:
23254 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23255 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23256 break;
23257 case WDI_STOP_REQ:
23258 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23259 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23260 break;
23261 case WDI_INIT_SCAN_REQ:
23262 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23263 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23264 break;
23265 case WDI_START_SCAN_REQ:
23266 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23267 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23268 break;
23269 case WDI_END_SCAN_REQ:
23270 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23271 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23272 break;
23273 case WDI_FINISH_SCAN_REQ:
23274 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23275 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23276 break;
23277 case WDI_JOIN_REQ:
23278 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23279 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23280 break;
23281 case WDI_CONFIG_BSS_REQ:
23282 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23283 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23284 break;
23285 case WDI_DEL_BSS_REQ:
23286 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23287 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23288 break;
23289 case WDI_POST_ASSOC_REQ:
23290 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23291 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23292 break;
23293 case WDI_DEL_STA_REQ:
23294 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23295 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23296 break;
23297 case WDI_DEL_STA_SELF_REQ:
23298 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23299 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23300 break;
23301
23302 case WDI_SET_BSS_KEY_REQ:
23303 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23304 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23305 break;
23306 case WDI_RMV_BSS_KEY_REQ:
23307 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23308 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23309 break;
23310 case WDI_SET_STA_KEY_REQ:
23311 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23312 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23313 break;
23314 case WDI_RMV_STA_KEY_REQ:
23315 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23316 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23317 break;
23318 case WDI_ADD_TS_REQ:
23319 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23320 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23321 break;
23322 case WDI_DEL_TS_REQ:
23323 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23324 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23325 break;
23326 case WDI_UPD_EDCA_PRMS_REQ:
23327 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23328 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23329 break;
23330 case WDI_ADD_BA_SESSION_REQ:
23331 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23332 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23333 break;
23334 case WDI_DEL_BA_REQ:
23335 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23336 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23337 break;
23338#ifdef FEATURE_WLAN_CCX
23339 case WDI_TSM_STATS_REQ:
23340 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23341 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23342 break;
23343#endif
23344 case WDI_CH_SWITCH_REQ:
23345 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23346 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23347 break;
23348 case WDI_CONFIG_STA_REQ:
23349 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23350 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23351 break;
23352 case WDI_SET_LINK_ST_REQ:
23353 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23354 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23355 break;
23356 case WDI_GET_STATS_REQ:
23357 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23358 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23359 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023360#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23361 case WDI_GET_ROAM_RSSI_REQ:
23362 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23363 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23364 break;
23365#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 case WDI_UPDATE_CFG_REQ:
23367 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23368 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23369 break;
23370 case WDI_ADD_BA_REQ:
23371 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23372 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23373 break;
23374 case WDI_TRIGGER_BA_REQ:
23375 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23376 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23377 break;
23378 case WDI_UPD_BCON_PRMS_REQ:
23379 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23380 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23381 break;
23382 case WDI_SND_BCON_REQ:
23383 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23384 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23385 break;
23386 case WDI_ENTER_BMPS_REQ:
23387 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23388 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23389 break;
23390 case WDI_EXIT_BMPS_REQ:
23391 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23392 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23393 break;
23394 case WDI_ENTER_UAPSD_REQ:
23395 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23396 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23397 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023398 case WDI_EXIT_UAPSD_REQ:
23399 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23400 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23401 break;
23402 case WDI_SET_UAPSD_PARAM_REQ:
23403 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23404 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23405 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 case WDI_UPDATE_UAPSD_PARAM_REQ:
23407 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23408 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23409 break;
23410 case WDI_CONFIGURE_RXP_FILTER_REQ:
23411 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23412 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23413 break;
23414 case WDI_SET_BEACON_FILTER_REQ:
23415 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23416 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23417 break;
23418 case WDI_REM_BEACON_FILTER_REQ:
23419 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23420 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023421 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023422 case WDI_SET_RSSI_THRESHOLDS_REQ:
23423 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23424 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23425 break;
23426 case WDI_HOST_OFFLOAD_REQ:
23427 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23428 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23429 break;
23430 case WDI_WOWL_ADD_BC_PTRN_REQ:
23431 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23432 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23433 break;
23434 case WDI_WOWL_DEL_BC_PTRN_REQ:
23435 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23436 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23437 break;
23438 case WDI_WOWL_ENTER_REQ:
23439 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23440 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23441 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023442 case WDI_WOWL_EXIT_REQ:
23443 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23444 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23445 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23447 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23448 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23449 break;
23450 case WDI_FLUSH_AC_REQ:
23451 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23452 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23453 break;
23454 case WDI_BTAMP_EVENT_REQ:
23455 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23456 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23457 break;
23458 case WDI_KEEP_ALIVE_REQ:
23459 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23460 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23461 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023462#if defined FEATURE_WLAN_SCAN_PNO
23463 case WDI_SET_PREF_NETWORK_REQ:
23464 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23465 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23466 break;
23467 case WDI_SET_RSSI_FILTER_REQ:
23468 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23469 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23470 break;
23471 case WDI_UPDATE_SCAN_PARAMS_REQ:
23472 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23473 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23474 break;
23475#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 case WDI_SET_TX_PER_TRACKING_REQ:
23477 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23478 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023479 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023480#if defined WLAN_FEATURE_PACKET_FILTERING
23481 case WDI_8023_MULTICAST_LIST_REQ:
23482 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23483 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23484 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023485 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23486 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23487 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23488 break;
23489 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23490 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23491 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23492 break;
23493 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23494 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23495 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23496 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023497#endif
23498 case WDI_SET_POWER_PARAMS_REQ:
23499 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23500 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23501 break;
23502#if defined WLAN_FEATURE_GTK_OFFLOAD
23503 case WDI_GTK_OFFLOAD_REQ:
23504 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23505 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23506 break;
23507 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23508 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23509 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23510 break;
23511#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023512
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 default:
23514 *ppfnReqCB = NULL;
23515 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 }
23518}/*WDI_ExtractRequestCBFromEvent*/
23519
23520
23521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023522 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023523 frame xtl is enabled for a particular STA.
23524
23525 WDI_PostAssocReq must have been called.
23526
Jeff Johnsone7245742012-09-05 17:12:55 -070023527 @param uSTAIdx: STA index
23528
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 @see WDI_PostAssocReq
23530 @return Result of the function call
23531*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023532wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023533WDI_IsHwFrameTxTranslationCapable
23534(
23535 wpt_uint8 uSTAIdx
23536)
23537{
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 uma value*/
23540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 ------------------------------------------------------------------------*/
23543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23544 {
23545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23546 "WDI API call before module is initialized - Fail request");
23547
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 }
23550
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023551#ifdef WLAN_SOFTAP_VSTA_FEATURE
23552 if (IS_VSTA_IDX(uSTAIdx))
23553 {
23554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23555 "STA %d is a Virtual STA, "
23556 "HW frame translation disabled", uSTAIdx);
23557 return eWLAN_PAL_FALSE;
23558 }
23559#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023560
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 return gWDICb.bFrameTransEnabled;
23562}/*WDI_IsHwFrameTxTranslationCapable*/
23563
23564#ifdef FEATURE_WLAN_SCAN_PNO
23565/**
23566 @brief WDI_SetPreferredNetworkList
23567
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023570
Jeff Johnson295189b2012-06-20 16:38:30 -070023571 wdiPNOScanCb: callback for passing back the response
23572 of the Set PNO operation received from the
23573 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023574
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 callback
23577
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 @return Result of the function call
23579*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023580WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023581WDI_SetPreferredNetworkReq
23582(
23583 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23584 WDI_PNOScanCb wdiPNOScanCb,
23585 void* pUserData
23586)
23587{
23588 WDI_EventInfoType wdiEventData = {{0}};
23589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23590
23591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 ------------------------------------------------------------------------*/
23594 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23595 {
23596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23597 "WDI API call before module is initialized - Fail request");
23598
Jeff Johnsone7245742012-09-05 17:12:55 -070023599 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 }
23601
23602 /*------------------------------------------------------------------------
23603 Fill in Event data and post to the Main FSM
23604 ------------------------------------------------------------------------*/
23605 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023608 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 wdiEventData.pUserData = pUserData;
23610
23611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23612}
23613
23614
23615/**
23616 @brief WDI_SetRssiFilterReq
23617
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023620
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 wdiRssiFilterCb: callback for passing back the response
23622 of the Set RSSI Filter operation received from the
23623 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023624
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 callback
23627
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 @return Result of the function call
23629*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023630WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023631WDI_SetRssiFilterReq
23632(
23633 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23634 WDI_RssiFilterCb wdiRssiFilterCb,
23635 void* pUserData
23636)
23637{
23638 WDI_EventInfoType wdiEventData = {{0}};
23639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23640
23641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 ------------------------------------------------------------------------*/
23644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23645 {
23646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23647 "WDI API call before module is initialized - Fail request");
23648
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 }
23651
23652 /*------------------------------------------------------------------------
23653 Fill in Event data and post to the Main FSM
23654 ------------------------------------------------------------------------*/
23655 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659 wdiEventData.pUserData = pUserData;
23660
23661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23662}/*WDI_SetRssiFilterReq*/
23663
23664/**
23665 @brief WDI_UpdateScanParamsReq
23666
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023669
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 wdiUpdateScanParamsCb: callback for passing back the response
23671 of the Set PNO operation received from the
23672 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023673
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023675 callback
23676
Jeff Johnson295189b2012-06-20 16:38:30 -070023677 @return Result of the function call
23678*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023680WDI_UpdateScanParamsReq
23681(
23682 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23683 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23684 void* pUserData
23685)
23686{
23687 WDI_EventInfoType wdiEventData = {{0}};
23688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23689
23690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023691 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023692 ------------------------------------------------------------------------*/
23693 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23694 {
23695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23696 "WDI API call before module is initialized - Fail request");
23697
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 }
23700
23701 /*------------------------------------------------------------------------
23702 Fill in Event data and post to the Main FSM
23703 ------------------------------------------------------------------------*/
23704 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023706 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 wdiEventData.pUserData = pUserData;
23709
23710 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23711}
23712
23713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023716
23717 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 pwdiPNOScanReqParams: pointer to the info received
23719 from upper layers
23720 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 and its size
23722
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 @return Result of the function call
23724*/
23725
23726WDI_Status
23727WDI_PackPreferredNetworkList
23728(
23729 WDI_ControlBlockType* pWDICtx,
23730 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23731 wpt_uint8** ppSendBuffer,
23732 wpt_uint16* pSize
23733)
23734{
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 wpt_uint16 usDataOffset = 0;
23737 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023738 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 /*-----------------------------------------------------------------------
23741 Get message buffer
23742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023744 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023745 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023746 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 {
23748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23749 "Unable to get send buffer in Set PNO req %x ",
23750 pwdiPNOScanReqParams);
23751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 }
23754
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023755 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23756
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 /*-------------------------------------------------------------------------
23758 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23759 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023760 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023762 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23764
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023765 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023766 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023767 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23770
23771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023772 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023773 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23774 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23775 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23776
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023777 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 {
23779 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023780 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23782
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023783 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023784 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023785 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023786
23787 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023788 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023790
23791 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023792 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023794
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023797 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023798 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23799 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23800 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23801 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023802
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023803 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023805 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023806
23807 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023808 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23810
23811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023812 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023813 pPrefNetwListParams->aNetworks[i].ssId.length,
23814 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 }
23816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023817 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23820 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23821 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23822
23823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023825 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23827 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23828
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023829 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023831 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023833 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23835 }
23836
23837 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023838 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23840 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23841 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023843
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023844 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023846 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023847
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023848 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23850 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23851 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023853
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023854 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023856 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023857
23858 /*Set the output values*/
23859 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023861
23862 return WDI_STATUS_SUCCESS;
23863}/*WDI_PackPreferredNetworkList*/
23864
23865/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023868
23869 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 pwdiPNOScanReqParams: pointer to the info received
23871 from upper layers
23872 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 and its size
23874
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 @return Result of the function call
23876*/
23877
23878WDI_Status
23879WDI_PackPreferredNetworkListNew
23880(
23881 WDI_ControlBlockType* pWDICtx,
23882 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23883 wpt_uint8** ppSendBuffer,
23884 wpt_uint16* pSize
23885)
23886{
Jeff Johnsone7245742012-09-05 17:12:55 -070023887 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 wpt_uint16 usDataOffset = 0;
23889 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023890 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023892
23893 /*-----------------------------------------------------------------------
23894 Get message buffer
23895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023897 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023898 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023899 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023900 {
23901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23902 "Unable to get send buffer in Set PNO req %x ",
23903 pwdiPNOScanReqParams);
23904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 }
23907
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023908 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23909
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 /*-------------------------------------------------------------------------
23911 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23912 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023913 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023915 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23917
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023918 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23923
23924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23927 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23928 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23929
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023930 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023931 {
23932 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023933 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23935
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023936 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023938 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023939
23940 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023941 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023943
23944 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023945 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023947
23948 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023949 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023951
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023953 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023954 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23956
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023957 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023959 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023960
23961 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023962 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23964
23965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023967 pPrefNetwListParams->aNetworks[i].ssId.length,
23968 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023969 }
23970
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023971 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023972 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23974 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23975 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23976
23977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023979 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23981 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23982
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023983 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023985 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023987 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23989 }
23990
23991 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023992 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23994 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23995 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023997
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023998 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024000 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024001
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024002 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24004 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24005 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024007
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024008 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024010 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024011
Jeff Johnson295189b2012-06-20 16:38:30 -070024012
24013 /*Set the output values*/
24014 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016
24017 return WDI_STATUS_SUCCESS;
24018}/*WDI_PackPreferredNetworkListNew*/
24019
24020/**
24021 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024022
24023 @param pWDICtx: pointer to the WLAN DAL context
24024 pEventData: pointer to the event information structure
24025
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 @return Result of the function call
24027*/
24028WDI_Status
24029WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024030(
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 WDI_ControlBlockType* pWDICtx,
24032 WDI_EventInfoType* pEventData
24033)
24034{
24035 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24036 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040
24041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 -------------------------------------------------------------------------*/
24044 if (( NULL == pEventData ) ||
24045 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24046 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24047 {
24048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 }
24053
24054 /*-------------------------------------------------------------------------
24055 Pack the PNO request structure based on version
24056 -------------------------------------------------------------------------*/
24057 if ( pWDICtx->wdiPNOVersion > 0 )
24058 {
24059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024060 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024061 pWDICtx->wdiPNOVersion);
24062
24063 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24064 &pSendBuffer, &usSendSize);
24065 }
24066 else
24067 {
24068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024069 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024070 pWDICtx->wdiPNOVersion);
24071
24072 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24073 &pSendBuffer, &usSendSize);
24074 }
24075
24076 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24077 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24078 {
24079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024080 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 }
24084
24085 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087
24088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024091 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24092 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024093}
24094
24095/**
24096 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024097
24098 @param pWDICtx: pointer to the WLAN DAL context
24099 pEventData: pointer to the event information structure
24100
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 @see
24102 @return Result of the function call
24103*/
24104WDI_Status
24105WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024106(
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 WDI_ControlBlockType* pWDICtx,
24108 WDI_EventInfoType* pEventData
24109)
24110{
24111 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24112 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024113 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 wpt_uint16 usDataOffset = 0;
24115 wpt_uint16 usSendSize = 0;
24116 wpt_uint8 ucRssiThreshold;
24117
24118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 -------------------------------------------------------------------------*/
24121 if (( NULL == pEventData ) ||
24122 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24123 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24124 {
24125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024129 }
24130
24131 /*-----------------------------------------------------------------------
24132 Get message buffer
24133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 sizeof(ucRssiThreshold),
24136 &pSendBuffer, &usDataOffset, &usSendSize))||
24137 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24138 {
24139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24140 "Unable to get send buffer in Set PNO req %x %x %x",
24141 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 }
24145
24146 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24147
Jeff Johnsone7245742012-09-05 17:12:55 -070024148 wpalMemoryCopy( pSendBuffer+usDataOffset,
24149 &ucRssiThreshold,
24150 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024151
24152 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024154
24155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24159 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024160}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024161#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24162/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024163 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024164
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024165 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024166 by the Device Interface
24167
24168 wdiRoamOffloadScancb: callback for passing back the response
24169 of the Roam Candidate Lookup Req operation received from the
24170 device
24171
24172 pUserData: user data will be passed back with the
24173 callback
24174 @return Result of the function call
24175*/
24176WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024177WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024178(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024179 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024180 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24181 void* pUserData
24182)
24183{
24184 WDI_EventInfoType wdiEventData = {{0}};
24185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24186
24187 /*------------------------------------------------------------------------
24188 Sanity Check
24189 ------------------------------------------------------------------------*/
24190 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24191 {
24192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24193 "WDI API call before module is initialized - Fail request");
24194
24195 return WDI_STATUS_E_NOT_ALLOWED;
24196 }
24197
24198 /*------------------------------------------------------------------------
24199 Fill in Event data and post to the Main FSM
24200 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024201 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24202 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24203 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024204 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24205 wdiEventData.pUserData = pUserData;
24206
24207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24208}
24209
24210void
24211WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24212{
24213 switch (wdiEdType)
24214 {
24215 case WDI_ED_NONE:
24216 *EdType = eED_NONE;
24217 break;
24218 case WDI_ED_WEP40:
24219 case WDI_ED_WEP104:
24220 *EdType = eED_WEP;
24221 break;
24222 case WDI_ED_TKIP:
24223 *EdType = eED_TKIP;
24224 break;
24225 case WDI_ED_CCMP:
24226#ifdef WLAN_FEATURE_11W
24227 case WDI_ED_AES_128_CMAC:
24228#endif
24229 *EdType = eED_CCMP;
24230 break;
24231#ifdef FEATURE_WLAN_WAPI
24232 case WDI_ED_WPI:
24233 *EdType = eED_WPI;
24234 break;
24235#endif
24236 case WDI_ED_ANY:
24237 *EdType = eED_ANY;
24238 break;
24239
24240 default:
24241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24242 "%s: Unknown Encryption Type", __func__);
24243 break;
24244 }
24245}
24246
24247/**
24248 @brief Helper function to pack Start Roam Candidate Lookup
24249 Request parameters
24250
24251 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024252 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024253 from upper layers
24254 ppSendBuffer, pSize - out pointers of the packed buffer
24255 and its size
24256
24257 @return Result of the function call
24258*/
24259
24260WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024261WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024262(
24263 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024264 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024265 wpt_uint8** ppSendBuffer,
24266 wpt_uint16* pSize
24267)
24268{
24269 wpt_uint8* pSendBuffer = NULL;
24270 wpt_uint16 usDataOffset = 0;
24271 wpt_uint16 usSendSize = 0;
24272 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24273 wpt_uint8 i;
24274 /*-----------------------------------------------------------------------
24275 Get message buffer
24276 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024277 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024278 sizeof(tRoamCandidateListParams),
24279 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024280 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024281 {
24282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24283 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024284 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024285 WDI_ASSERT(0);
24286 return WDI_STATUS_E_FAILURE;
24287 }
24288 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024289 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024290 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024291 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024292 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024293 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024294 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024295 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024296 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024297 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024298 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024299
24300 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024301 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024302 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024303 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024304 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24305 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024306 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24307 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24308 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24309 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24310 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24311 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24312 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24313 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24314 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24315 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24316 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24317 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24318 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24319 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024320 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024321 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24322 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24323 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024324
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24326 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24327 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24328 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24329 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24330 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24331 "HomeAwayTime=%d\n",
24332 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24333 pRoamCandidateListParams->RoamScanOffloadEnabled,
24334 pRoamCandidateListParams->Command,
24335 pRoamCandidateListParams->StartScanReason,
24336 pRoamCandidateListParams->NeighborScanTimerPeriod,
24337 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24338 pRoamCandidateListParams->NeighborScanChannelMinTime,
24339 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24340 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24341 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24342 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24343 pRoamCandidateListParams->ConnectedNetwork.authentication,
24344 pRoamCandidateListParams->ConnectedNetwork.encryption,
24345 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24346 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24347 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024348 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024349 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024350 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024351 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024352 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24353 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024354 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024355 pRoamCandidateListParams->us24GProbeSize);
24356 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024357 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024358 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024359 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024360 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24361 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024362 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024363 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024364 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24365 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24366 pRoamCandidateListParams->nProbes =
24367 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24368 pRoamCandidateListParams->HomeAwayTime =
24369 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024371 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24372 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024374 }
24375
24376
24377 /*Set the output values*/
24378 *ppSendBuffer = pSendBuffer;
24379 *pSize = usSendSize;
24380 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024381}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024382
24383/**
24384 @brief Process Start Roam Candidate Lookup Request function
24385
24386 @param pWDICtx: pointer to the WLAN DAL context
24387 pEventData: pointer to the event information structure
24388
24389 @return Result of the function call
24390*/
24391WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024392WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024393(
24394 WDI_ControlBlockType* pWDICtx,
24395 WDI_EventInfoType* pEventData
24396)
24397{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024398 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024399 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24400 wpt_uint8* pSendBuffer = NULL;
24401 wpt_uint16 usSendSize = 0;
24402 WDI_Status wdiStatus;
24403 /*-------------------------------------------------------------------------
24404 Sanity check
24405 -------------------------------------------------------------------------*/
24406 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024407 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024408 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24409 {
24410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24411 "%s: Invalid parameters", __func__);
24412 WDI_ASSERT(0);
24413 return WDI_STATUS_E_FAILURE;
24414 }
24415
24416 /*-------------------------------------------------------------------------
24417 Pack the Start Roam Candidate Lookup request structure based on version
24418 -------------------------------------------------------------------------*/
24419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24420 "%s: Packing Roam Candidate Lookup request ", __func__);
24421
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024422 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024423 &pSendBuffer, &usSendSize);
24424
24425 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24426 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24427 {
24428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24429 "%s: failed to pack request parameters", __func__);
24430 WDI_ASSERT(0);
24431 return wdiStatus;
24432 }
24433
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024434 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24435 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024436
24437 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024438 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024439 -------------------------------------------------------------------------*/
24440 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024441 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024442}
24443
24444/**
24445 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24446 response is being received over the bus from HAL)
24447
24448 @param pWDICtx: pointer to the WLAN DAL context
24449 pEventData: pointer to the event information structure
24450
24451 @see
24452 @return Result of the function call
24453*/
24454WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024455WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024456(
24457 WDI_ControlBlockType* pWDICtx,
24458 WDI_EventInfoType* pEventData
24459)
24460{
24461 WDI_Status wdiStatus;
24462 eHalStatus halStatus;
24463 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24464
24465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24466
24467 /*-------------------------------------------------------------------------
24468 Sanity check
24469 -------------------------------------------------------------------------*/
24470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24471 ( NULL == pEventData->pEventData ))
24472 {
24473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24474 "%s: Invalid parameters", __func__);
24475 WDI_ASSERT(0);
24476 return WDI_STATUS_E_FAILURE;
24477 }
24478
24479 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24480
24481 /*-------------------------------------------------------------------------
24482 Extract response and send it to UMAC
24483 -------------------------------------------------------------------------*/
24484 halStatus = *((eHalStatus*)pEventData->pEventData);
24485 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24486
24487 /*Notify UMAC*/
24488 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24489
24490 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024491}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024492#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024493
24494/**
24495 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024496
24497 @param pWDICtx: pointer to the WLAN DAL context
24498 pEventData: pointer to the event information structure
24499
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 @see
24501 @return Result of the function call
24502*/
24503WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024504WDI_PackUpdateScanParamsReq
24505(
24506 WDI_ControlBlockType* pWDICtx,
24507 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24508 wpt_uint8** ppSendBuffer,
24509 wpt_uint16* pSize
24510)
24511{
24512 wpt_uint8* pSendBuffer = NULL;
24513 wpt_uint16 usDataOffset = 0;
24514 wpt_uint16 usSendSize = 0;
24515 tUpdateScanParams updateScanParams = {0};
24516
24517
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024519 "Begin WDI Update Scan Parameters Old Style Params");
24520 /*-----------------------------------------------------------------------
24521 Get message buffer
24522 -----------------------------------------------------------------------*/
24523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24524 sizeof(updateScanParams),
24525 &pSendBuffer, &usDataOffset, &usSendSize))||
24526 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24527 {
24528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24529 "Unable to get send buffer in Update Scan Params req %x",
24530 pwdiUpdateScanParams);
24531 WDI_ASSERT(0);
24532 return WDI_STATUS_E_FAILURE;
24533 }
24534
24535 //
24536 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24537 //
24538
24539 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24540 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24541
24542 updateScanParams.ucChannelCount =
24543 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24544 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24545 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24546 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24547
24548 wpalMemoryCopy( updateScanParams.aChannels,
24549 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24550 updateScanParams.ucChannelCount);
24551
24552
24553 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24554 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24555 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24556 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24557 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24558
24559 wpalMemoryCopy( pSendBuffer+usDataOffset,
24560 &updateScanParams,
24561 sizeof(updateScanParams));
24562
24563 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24564 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24565
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024567 "End Update Scan Parameters Old Style");
24568
24569 /*Set the output values*/
24570 *ppSendBuffer = pSendBuffer;
24571 *pSize = usSendSize;
24572
24573 return WDI_STATUS_SUCCESS;
24574}
24575
24576/**
24577 @brief Process Update Scan Params function
24578
24579 @param pWDICtx: pointer to the WLAN DAL context
24580 pEventData: pointer to the event information structure
24581
24582 @see
24583 @return Result of the function call
24584*/
24585WDI_Status
24586WDI_PackUpdateScanParamsReqEx
24587(
24588 WDI_ControlBlockType* pWDICtx,
24589 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24590 wpt_uint8** ppSendBuffer,
24591 wpt_uint16* pSize
24592)
24593{
24594 wpt_uint8* pSendBuffer = NULL;
24595 wpt_uint16 usDataOffset = 0;
24596 wpt_uint16 usSendSize = 0;
24597 tUpdateScanParamsEx updateScanParams = {0};
24598
24599
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024600 /*-----------------------------------------------------------------------
24601 Get message buffer
24602 -----------------------------------------------------------------------*/
24603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24604 sizeof(updateScanParams),
24605 &pSendBuffer, &usDataOffset, &usSendSize))||
24606 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24607 {
24608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24609 "Unable to get send buffer in Update Scan Params Ex req %x",
24610 pwdiUpdateScanParams);
24611 WDI_ASSERT(0);
24612 return WDI_STATUS_E_FAILURE;
24613 }
24614
24615 //
24616 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24617 //
24618
24619 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24620 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24621
24622 updateScanParams.ucChannelCount =
24623 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24624 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24625 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24626 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24627
24628 wpalMemoryCopy( updateScanParams.aChannels,
24629 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24630 updateScanParams.ucChannelCount);
24631
24632
24633 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24634 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24635 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24636 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24637 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24638
24639 wpalMemoryCopy( pSendBuffer+usDataOffset,
24640 &updateScanParams,
24641 sizeof(updateScanParams));
24642
24643 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24644 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24645
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024646 /*Set the output values*/
24647 *ppSendBuffer = pSendBuffer;
24648 *pSize = usSendSize;
24649
24650 return WDI_STATUS_SUCCESS;
24651}
24652
24653/**
24654 @brief Process Update Scan Params function
24655
24656 @param pWDICtx: pointer to the WLAN DAL context
24657 pEventData: pointer to the event information structure
24658
24659 @see
24660 @return Result of the function call
24661*/
24662WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024663WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024664(
Jeff Johnson295189b2012-06-20 16:38:30 -070024665 WDI_ControlBlockType* pWDICtx,
24666 WDI_EventInfoType* pEventData
24667)
24668{
24669 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
24670 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024673 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024674
24675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 -------------------------------------------------------------------------*/
24678 if (( NULL == pEventData ) ||
24679 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
24680 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
24681 {
24682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024686 }
24687
24688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24689 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070024690
24691 //
24692 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24693 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024694 if ( pWDICtx->wlanVersion.revision < 1 )
24695 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024696 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024697 &pSendBuffer, &usSendSize);
24698 }
24699 else
24700 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080024701 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
24702 &pSendBuffer, &usSendSize);
24703 }
24704
24705 if(WDI_STATUS_SUCCESS != wdiStatus)
24706 {
24707 //memory allocation failed
24708 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024709 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024710
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024712 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024715 wdiUpdateScanParamsCb, pEventData->pUserData,
24716 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024717}
24718
24719/**
24720 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070024721
24722 @param pWDICtx: pointer to the WLAN DAL context
24723 pEventData: pointer to the event information structure
24724
Jeff Johnson295189b2012-06-20 16:38:30 -070024725 @see
24726 @return Result of the function call
24727*/
24728WDI_Status
24729WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070024730(
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 WDI_ControlBlockType* pWDICtx,
24732 WDI_EventInfoType* pEventData
24733)
24734{
Srikant Kuppa0f679052013-05-07 13:56:02 -070024735 WDI_LowLevelIndType wdiInd;
24736 tpPrefNetwFoundParams pNetwFoundParams;
24737 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024738
24739
24740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024742 -------------------------------------------------------------------------*/
24743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24744 ( NULL == pEventData->pEventData ))
24745 {
24746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 }
24751
24752 /*-------------------------------------------------------------------------
24753 Extract indication and send it to UMAC
24754 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070024755 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
24756
24757 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
24758 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
24759 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
24760
24761 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
24762 {
24763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24764 "%s: fail to allocate memory", __func__);
24765 return WDI_STATUS_MEM_FAILURE;
24766 }
24767
24768 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
24769 (pNetwFoundParams->ssId.length < 32 )?
24770 pNetwFoundParams->ssId.length : 32;
24771 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24772 pNetwFoundParams->ssId.ssId,
24773 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
24774 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
24775 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
24776 pNetwFoundParams->frameLength;
24777 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
24778 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
24779 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024780
24781 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024782 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024783
Jeff Johnson295189b2012-06-20 16:38:30 -070024784 // DEBUG
24785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
24786 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
24787 wdiInd.wdiIndicationType,
24788 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
24789 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
24790
ltimariu034f7d62013-01-24 18:54:33 -080024791 if ( pWDICtx->wdiLowLevelIndCB )
24792 {
24793 /*Notify UMAC*/
24794 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
24795 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024796
24797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024798}
24799
24800/**
24801 @brief Process PNO Rsp function (called when a
24802 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024803
24804 @param pWDICtx: pointer to the WLAN DAL context
24805 pEventData: pointer to the event information structure
24806
Jeff Johnson295189b2012-06-20 16:38:30 -070024807 @see
24808 @return Result of the function call
24809*/
24810WDI_Status
24811WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024812(
Jeff Johnson295189b2012-06-20 16:38:30 -070024813 WDI_ControlBlockType* pWDICtx,
24814 WDI_EventInfoType* pEventData
24815)
24816{
24817 WDI_Status wdiStatus;
24818 eHalStatus halStatus;
24819 WDI_PNOScanCb wdiPNOScanCb = NULL;
24820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24821
24822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024824 -------------------------------------------------------------------------*/
24825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24826 ( NULL == pEventData->pEventData ))
24827 {
24828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024832 }
24833
24834
Jeff Johnsone7245742012-09-05 17:12:55 -070024835 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024836
24837 /*-------------------------------------------------------------------------
24838 Extract response and send it to UMAC
24839 -------------------------------------------------------------------------*/
24840 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024841 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024842
24843 /*Notify UMAC*/
24844 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
24845
Jeff Johnsone7245742012-09-05 17:12:55 -070024846 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024847}/*WDI_ProcessSetPreferredNetworkRsp*/
24848
24849/**
24850 @brief Process RSSI Filter Rsp function (called when a
24851 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024852
24853 @param pWDICtx: pointer to the WLAN DAL context
24854 pEventData: pointer to the event information structure
24855
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 @see
24857 @return Result of the function call
24858*/
24859WDI_Status
24860WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024861(
Jeff Johnson295189b2012-06-20 16:38:30 -070024862 WDI_ControlBlockType* pWDICtx,
24863 WDI_EventInfoType* pEventData
24864)
24865{
24866 WDI_Status wdiStatus;
24867 eHalStatus halStatus;
24868 WDI_RssiFilterCb wdiRssiFilterCb;
24869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24870
24871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 -------------------------------------------------------------------------*/
24874 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24875 ( NULL == pEventData->pEventData ))
24876 {
24877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 }
24882
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024884
24885 /*-------------------------------------------------------------------------
24886 Extract response and send it to UMAC
24887 -------------------------------------------------------------------------*/
24888 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024889 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024890
24891 /*Notify UMAC*/
24892 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24893
Jeff Johnsone7245742012-09-05 17:12:55 -070024894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024895}/*WDI_ProcessSetRssiFilterRsp*/
24896
24897/**
24898 @brief Process Update Scan Params Rsp function (called when a
24899 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024900
24901 @param pWDICtx: pointer to the WLAN DAL context
24902 pEventData: pointer to the event information structure
24903
Jeff Johnson295189b2012-06-20 16:38:30 -070024904 @see
24905 @return Result of the function call
24906*/
24907WDI_Status
24908WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024909(
Jeff Johnson295189b2012-06-20 16:38:30 -070024910 WDI_ControlBlockType* pWDICtx,
24911 WDI_EventInfoType* pEventData
24912)
24913{
24914 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024915 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024916 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024917 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24919
24920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024922 -------------------------------------------------------------------------*/
24923 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24924 ( NULL == pEventData->pEventData ))
24925 {
24926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 }
24931
24932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024933 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024934
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024936
24937 /*-------------------------------------------------------------------------
24938 Extract response and send it to UMAC
24939 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24941 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024942 sizeof(halUpdScanParams.status));
24943
24944 uStatus = halUpdScanParams.status;
24945
24946 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024947 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024948
24949 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024950 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024951
Jeff Johnsone7245742012-09-05 17:12:55 -070024952 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024953
24954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024955 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024956 halUpdScanParams.status);
24957
24958 /*Notify UMAC*/
24959 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24960
Jeff Johnsone7245742012-09-05 17:12:55 -070024961 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024962}
24963#endif // FEATURE_WLAN_SCAN_PNO
24964
24965#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024966WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024967WDI_8023MulticastListReq
24968(
24969 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24970 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24971 void* pUserData
24972)
24973{
24974 WDI_EventInfoType wdiEventData;
24975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24976
24977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024978 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024979
24980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 ------------------------------------------------------------------------*/
24983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24984 {
24985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24986 "WDI API call before module is initialized - Fail request");
24987
Jeff Johnsone7245742012-09-05 17:12:55 -070024988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024989 }
24990
24991 /*------------------------------------------------------------------------
24992 Fill in Event data and post to the Main FSM
24993 ------------------------------------------------------------------------*/
24994 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 wdiEventData.pUserData = pUserData;
24999
25000 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25001}
25002
Jeff Johnsone7245742012-09-05 17:12:55 -070025003WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025004WDI_ReceiveFilterSetFilterReq
25005(
25006 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25007 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25008 void* pUserData
25009)
25010{
25011 WDI_EventInfoType wdiEventData;
25012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25013
25014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025015 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025016
25017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 ------------------------------------------------------------------------*/
25020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25021 {
25022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25023 "WDI API call before module is initialized - Fail request");
25024
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025026 }
25027
25028 /*------------------------------------------------------------------------
25029 Fill in Event data and post to the Main FSM
25030 ------------------------------------------------------------------------*/
25031 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25033 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025034 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25035 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025036 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 wdiEventData.pUserData = pUserData;
25038
25039
25040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25041}
25042
Jeff Johnsone7245742012-09-05 17:12:55 -070025043WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025044WDI_FilterMatchCountReq
25045(
25046 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25047 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25048 void* pUserData
25049)
25050{
25051 WDI_EventInfoType wdiEventData;
25052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25053
25054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025055 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025056
25057 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025059 ------------------------------------------------------------------------*/
25060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25061 {
25062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25063 "WDI API call before module is initialized - Fail request");
25064
Jeff Johnsone7245742012-09-05 17:12:55 -070025065 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 }
25067
25068 /*------------------------------------------------------------------------
25069 Fill in Event data and post to the Main FSM
25070 ------------------------------------------------------------------------*/
25071 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025072 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025074 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 wdiEventData.pUserData = pUserData;
25076
25077
25078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25079}
25080
Jeff Johnsone7245742012-09-05 17:12:55 -070025081WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025082WDI_ReceiveFilterClearFilterReq
25083(
25084 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25085 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25086 void* pUserData
25087)
25088{
25089 WDI_EventInfoType wdiEventData;
25090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25091
25092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025093 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025094
25095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025096 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025097 ------------------------------------------------------------------------*/
25098 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25099 {
25100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25101 "WDI API call before module is initialized - Fail request");
25102
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025104 }
25105
25106 /*------------------------------------------------------------------------
25107 Fill in Event data and post to the Main FSM
25108 ------------------------------------------------------------------------*/
25109 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025112 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025113 wdiEventData.pUserData = pUserData;
25114
25115
25116 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25117}
25118
25119/**
25120 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025121
25122 @param pWDICtx: pointer to the WLAN DAL context
25123 pEventData: pointer to the event information structure
25124
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 @see
25126 @return Result of the function call
25127*/
25128WDI_Status
25129WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025130(
Jeff Johnson295189b2012-06-20 16:38:30 -070025131 WDI_ControlBlockType* pWDICtx,
25132 WDI_EventInfoType* pEventData
25133)
25134{
25135 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25136 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025137 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025138 wpt_uint16 usDataOffset = 0;
25139 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025140 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 wpt_uint8 ucCurrentBSSSesIdx = 0;
25143 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025144
25145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025146 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025147
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025148 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25149 if( NULL == pRcvFltMcAddrListType )
25150 {
25151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25152 "Failed to alloc in WDI_Process8023MulticastListReq");
25153 return WDI_STATUS_E_FAILURE;
25154 }
25155
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 -------------------------------------------------------------------------*/
25159 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025162 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25164 {
25165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025166 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025167 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025169 return WDI_STATUS_E_FAILURE;
25170 }
25171
25172 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25173 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25174 &pBSSSes);
25175 if ( NULL == pBSSSes )
25176 {
25177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025178 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025179 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025181 }
25182
25183 /*-----------------------------------------------------------------------
25184 Get message buffer
25185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25187 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 sizeof(tHalRcvFltMcAddrListType),
25189 &pSendBuffer, &usDataOffset, &usSendSize))||
25190 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25191 {
25192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25193 "Unable to get send buffer in "
25194 "WDI_Process8023MulticastListReq() %x %x %x",
25195 pEventData, pwdiFltPktSetMcListReqParamsType,
25196 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025197 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 }
25201
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025202 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025203 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025204 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025206 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25208 sizeof(tSirMacAddr));
25209 }
25210
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025211 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025212 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025213 pRcvFltMcAddrListType,
25214 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025215
25216 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025217 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025218
25219
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025220 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025222 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025225 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025226 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025227}
25228
25229/**
25230 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025231
25232 @param pWDICtx: pointer to the WLAN DAL context
25233 pEventData: pointer to the event information structure
25234
Jeff Johnson295189b2012-06-20 16:38:30 -070025235 @see
25236 @return Result of the function call
25237*/
25238WDI_Status
25239WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025240(
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 WDI_ControlBlockType* pWDICtx,
25242 WDI_EventInfoType* pEventData
25243)
25244{
25245 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25246 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025247 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025248 wpt_uint16 usDataOffset = 0;
25249 wpt_uint16 usSendSize = 0;
25250 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025251 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025252 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025253 wpt_uint8 ucCurrentBSSSesIdx = 0;
25254 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025255 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25256 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025257
25258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025259 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025260
25261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025263 -------------------------------------------------------------------------*/
25264 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025265 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025266 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025267 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025268 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25269 {
25270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025271 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025273 return WDI_STATUS_E_FAILURE;
25274 }
25275
25276 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25277 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25278 &pBSSSes);
25279 if ( NULL == pBSSSes )
25280 {
25281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025282 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 }
25285
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025286 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25287 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025288
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025289 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25290 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25291 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25292
25293 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25294 usSessRcvPktFilterCfgSize);
25295
25296 if(NULL == pSessRcvPktFilterCfg)
25297 {
25298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25299 "%s: Failed to allocate memory for "
25300 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025301 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025302 WDI_ASSERT(0);
25303 return WDI_STATUS_E_FAILURE;
25304 }
25305
25306 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25307
25308 /*-----------------------------------------------------------------------
25309 Get message buffer
25310 -----------------------------------------------------------------------*/
25311
25312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25313 usSessRcvPktFilterCfgSize,
25314 &pSendBuffer, &usDataOffset, &usSendSize))||
25315 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25316 {
25317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25318 "Unable to get send buffer in "
25319 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25320 pEventData, pwdiSetRcvPktFilterReqInfo,
25321 wdiReceiveFilterSetFilterCb);
25322 WDI_ASSERT(0);
25323 wpalMemoryFree(pSessRcvPktFilterCfg);
25324 return WDI_STATUS_E_FAILURE;
25325 }
25326
25327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25328 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25329 usSendSize,pSessRcvPktFilterCfg);
25330
25331 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25332 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25333 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25334 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25335
25336 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25337
25338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25339 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25340 pSessRcvPktFilterCfg->filterType);
25341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25342 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25343 pSessRcvPktFilterCfg->coleasceTime);
25344
25345 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25346 {
25347 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25348 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25349 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25350 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25351 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25352 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25353 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25354 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25355
25356 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25357 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25358 8);
25359 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25360 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25361 8);
25362
25363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25364 "Out:Proto %d Comp Flag %d \n",
25365 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25366 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25367
25368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25369 "Data Offset %d Data Len %d\n",
25370 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25371 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25372
25373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25374 "CData: %d:%d:%d:%d:%d:%d\n",
25375 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25376 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25377 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25378 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25379 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25380 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25381
25382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25383 "MData: %d:%d:%d:%d:%d:%d\n",
25384 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25385 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25386 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25387 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25388 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25389 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25390 }
25391
25392 wpalMemoryCopy( pSendBuffer+usDataOffset,
25393 pSessRcvPktFilterCfg,
25394 usSessRcvPktFilterCfgSize);
25395
25396
25397 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25398 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25399
25400 wpalMemoryFree(pSessRcvPktFilterCfg);
25401
25402 }
25403 /*If SLM_SESSIONIZATION is not supported then do this */
25404 else
25405 {
25406 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25407 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25408 * sizeof(tHalRcvPktFilterParams));
25409
25410 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 usRcvPktFilterCfgSize);
25412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025413 if(NULL == pRcvPktFilterCfg)
25414 {
25415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25416 "%s: Failed to allocate memory for "
25417 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025418 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025419 WDI_ASSERT(0);
25420 return WDI_STATUS_E_FAILURE;
25421 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025422
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025423 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025424
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025425 /*-----------------------------------------------------------------------
25426 Get message buffer
25427 -----------------------------------------------------------------------*/
25428 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025429 usRcvPktFilterCfgSize,
25430 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025431 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25432 {
25433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 "Unable to get send buffer in "
25435 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25436 pEventData, pwdiSetRcvPktFilterReqInfo,
25437 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025438 WDI_ASSERT(0);
25439 wpalMemoryFree(pRcvPktFilterCfg);
25440 return WDI_STATUS_E_FAILURE;
25441 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025444 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 usSendSize,usRcvPktFilterCfgSize);
25446
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025447 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25448 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25449 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25450 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025451
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025453 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025457 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025458
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025459 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25460 {
25461 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25462 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25463 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25464 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25465 pRcvPktFilterCfg->paramsData[i].dataOffset =
25466 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25467 pRcvPktFilterCfg->paramsData[i].dataLength =
25468 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025469
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025470 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025471 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25472 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025473 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25475 8);
25476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025478 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025479 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25481
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25483 "Data Offset %d Data Len %d\n",
25484 pRcvPktFilterCfg->paramsData[i].dataOffset,
25485 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025486
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25488 "CData: %d:%d:%d:%d:%d:%d\n",
25489 pRcvPktFilterCfg->paramsData[i].compareData[0],
25490 pRcvPktFilterCfg->paramsData[i].compareData[1],
25491 pRcvPktFilterCfg->paramsData[i].compareData[2],
25492 pRcvPktFilterCfg->paramsData[i].compareData[3],
25493 pRcvPktFilterCfg->paramsData[i].compareData[4],
25494 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025495
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25497 "MData: %d:%d:%d:%d:%d:%d\n",
25498 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25499 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25500 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25501 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25502 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25503 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025505
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025506 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 pRcvPktFilterCfg,
25508 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025509
25510
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025511 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25512 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025513
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025515 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025516 wpalMemoryFree(pRcvPktFilterCfg);
25517 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025519 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025521 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025522 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025523 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025524}
25525
25526/**
25527 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025528
25529 @param pWDICtx: pointer to the WLAN DAL context
25530 pEventData: pointer to the event information structure
25531
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 @see
25533 @return Result of the function call
25534*/
25535WDI_Status
25536WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025537(
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 WDI_ControlBlockType* pWDICtx,
25539 WDI_EventInfoType* pEventData
25540)
25541{
25542 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25543 NULL;
25544 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25545 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025546 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 wpt_uint16 usDataOffset = 0;
25548 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025549 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25550 wpt_uint8 ucCurrentBSSSesIdx = 0;
25551 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025552
25553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025554 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025555
25556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 -------------------------------------------------------------------------*/
25559 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25564 {
25565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 }
25570
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025571 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25572 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25573 &pBSSSes);
25574 if ( NULL == pBSSSes )
25575 {
25576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025577 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025578 return WDI_STATUS_E_FAILURE;
25579 }
25580
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 /*-----------------------------------------------------------------------
25582 Get message buffer
25583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25585 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025586 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025588 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 {
25590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25591 "Unable to get send buffer in "
25592 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25593 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25594 wdiFilterMatchCountCb);
25595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 }
25598
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025599 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25600 wpalMemoryCopy( pSendBuffer+usDataOffset,
25601 &rcvFltPktMatchCntReqParam,
25602 sizeof(rcvFltPktMatchCntReqParam));
25603
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 //
25605 // Don't need to fill send buffer other than header
25606 //
25607 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025608 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025609
25610
25611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25615 wdiFilterMatchCountCb,
25616 pEventData->pUserData,
25617 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025618}
25619
25620/**
25621 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025622
25623 @param pWDICtx: pointer to the WLAN DAL context
25624 pEventData: pointer to the event information structure
25625
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 @see
25627 @return Result of the function call
25628*/
25629WDI_Status
25630WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025631(
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 WDI_ControlBlockType* pWDICtx,
25633 WDI_EventInfoType* pEventData
25634)
Jeff Johnsone7245742012-09-05 17:12:55 -070025635{
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
25637 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 wpt_uint16 usDataOffset = 0;
25640 wpt_uint16 usSendSize = 0;
25641 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025642 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025643 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025644
25645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025646 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025647
25648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025650 -------------------------------------------------------------------------*/
25651 if (( NULL == pEventData ) ||
25652 ( NULL == (pwdiRcvFltPktClearReqParamsType =
25653 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025654 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
25656 {
25657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 return WDI_STATUS_E_FAILURE;
25661 }
25662
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025663 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025664 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
25665 &pBSSSes);
25666 if ( NULL == pBSSSes )
25667 {
25668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025669 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025671 }
25672
25673 /*-----------------------------------------------------------------------
25674 Get message buffer
25675 -----------------------------------------------------------------------*/
25676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070025677 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 sizeof(tHalRcvFltPktClearParam),
25679 &pSendBuffer, &usDataOffset, &usSendSize))||
25680 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
25681 {
25682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25683 "Unable to get send buffer in "
25684 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
25685 pEventData, pwdiRcvFltPktClearReqParamsType,
25686 wdiRcvFltPktClearFilterCb);
25687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025689 }
25690
25691
25692 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070025696
Jeff Johnsone7245742012-09-05 17:12:55 -070025697 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
25698 wpalMemoryCopy( pSendBuffer+usDataOffset,
25699 &rcvFltPktClearParam,
25700 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070025701
25702 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025703 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025704
25705
25706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025707 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025710 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025711 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025712}
25713
25714/**
25715 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025716
25717 @param pWDICtx: pointer to the WLAN DAL context
25718 pEventData: pointer to the event information structure
25719
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 @see
25721 @return Result of the function call
25722*/
25723WDI_Status
25724WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025725(
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 WDI_ControlBlockType* pWDICtx,
25727 WDI_EventInfoType* pEventData
25728)
25729{
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 eHalStatus halStatus;
25731 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025732 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
25733 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25735
25736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025737 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025738
25739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 -------------------------------------------------------------------------*/
25742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25743 ( NULL == pEventData->pEventData ))
25744 {
25745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 }
25750
Jeff Johnsone7245742012-09-05 17:12:55 -070025751 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025752
25753 /*-------------------------------------------------------------------------
25754 Extract response and send it to UMAC
25755 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025756 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25757 {
25758 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
25759 pEventData->pEventData,
25760 sizeof(halRcvFltPktSetMcListRsp));
25761
25762 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
25763 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
25764 wdiRcvFltPktSetMcListRspInfo.bssIdx =
25765 halRcvFltPktSetMcListRsp.bssIdx;
25766 }
25767 else
25768 {
25769 halStatus = *((eHalStatus*)pEventData->pEventData);
25770 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25771 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025772
25773 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025774 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025775
Jeff Johnsone7245742012-09-05 17:12:55 -070025776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025777}
25778
25779/**
25780 @brief Process Set Rsp function (called when a
25781 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025782
25783 @param pWDICtx: pointer to the WLAN DAL context
25784 pEventData: pointer to the event information structure
25785
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 @see
25787 @return Result of the function call
25788*/
25789WDI_Status
25790WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025791(
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 WDI_ControlBlockType* pWDICtx,
25793 WDI_EventInfoType* pEventData
25794)
25795{
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 eHalStatus halStatus;
25797 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025798 tHalSetPktFilterRspParams halSetPktFilterRspParams;
25799 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25801
25802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025803 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025804
25805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 -------------------------------------------------------------------------*/
25808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25809 ( NULL == pEventData->pEventData ))
25810 {
25811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025815 }
25816
25817 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025818 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025819
25820 /*-------------------------------------------------------------------------
25821 Extract response and send it to UMAC
25822 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025823 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25824 {
25825 wpalMemoryCopy( &halSetPktFilterRspParams,
25826 pEventData->pEventData,
25827 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025828
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025829 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
25830 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
25831 }
25832 else
25833 {
25834 halStatus = *((eHalStatus*)pEventData->pEventData);
25835 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25836 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025838 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025839
Jeff Johnsone7245742012-09-05 17:12:55 -070025840 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025841}
25842
25843/**
25844 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025845
25846 @param pWDICtx: pointer to the WLAN DAL context
25847 pEventData: pointer to the event information structure
25848
Jeff Johnson295189b2012-06-20 16:38:30 -070025849 @see
25850 @return Result of the function call
25851*/
25852WDI_Status
25853WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025854(
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 WDI_ControlBlockType* pWDICtx,
25856 WDI_EventInfoType* pEventData
25857)
25858{
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025860 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025861 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
25862 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025863
25864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25865
25866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025867 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025868
25869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 -------------------------------------------------------------------------*/
25872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25873 ( NULL == pEventData->pEventData ))
25874 {
25875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 }
25880
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025882
25883 /*-------------------------------------------------------------------------
25884 Extract response and send it to UMAC
25885 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025886 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25887 {
25888 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25889 pEventData->pEventData,
25890 sizeof(halRcvFltrPktMatachRsp));
25891
25892 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25893 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25894 }
25895 else
25896 {
25897 halStatus = *((eHalStatus*)pEventData->pEventData);
25898 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25899 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025900
25901 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025902 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025903
Jeff Johnsone7245742012-09-05 17:12:55 -070025904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025905}
25906
25907/**
25908 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025909
25910 @param pWDICtx: pointer to the WLAN DAL context
25911 pEventData: pointer to the event information structure
25912
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 @see
25914 @return Result of the function call
25915*/
25916WDI_Status
25917WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025918(
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 WDI_ControlBlockType* pWDICtx,
25920 WDI_EventInfoType* pEventData
25921)
25922{
Jeff Johnson295189b2012-06-20 16:38:30 -070025923 eHalStatus halStatus;
25924 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025925 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25926 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25928
25929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025930 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025931
25932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 -------------------------------------------------------------------------*/
25935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25936 ( NULL == pEventData->pEventData ))
25937 {
25938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025942 }
25943
25944 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025945 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025946
25947 /*-------------------------------------------------------------------------
25948 Extract response and send it to UMAC
25949 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025950 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25951 {
25952 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25953 pEventData->pEventData,
25954 sizeof(halRcvFltPktClearRspMsg));
25955
25956 wdiRcvFltPktClearRspParamsType.wdiStatus =
25957 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25958 wdiRcvFltPktClearRspParamsType.bssIdx =
25959 halRcvFltPktClearRspMsg.bssIdx;
25960 }
25961 else
25962 {
25963 halStatus = *((eHalStatus*)pEventData->pEventData);
25964 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25965 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025966
25967 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025968 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025969
Jeff Johnsone7245742012-09-05 17:12:55 -070025970 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025971}
25972#endif // WLAN_FEATURE_PACKET_FILTERING
25973
25974/**
25975 @brief Process Shutdown Rsp function
25976 There is no shutdown response comming from HAL
25977 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025978
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025981
25982 @see
25983 @return Result of the function call
25984*/
25985WDI_Status
25986WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025987(
Jeff Johnson295189b2012-06-20 16:38:30 -070025988 WDI_ControlBlockType* pWDICtx,
25989 WDI_EventInfoType* pEventData
25990)
25991{
25992 /*There is no shutdown response comming from HAL - function just kept for
25993 simmetry */
25994 WDI_ASSERT(0);
25995 return WDI_STATUS_SUCCESS;
25996}/*WDI_ProcessShutdownRsp*/
25997
25998/**
25999 @brief WDI_SetPowerParamsReq
26000
Jeff Johnsone7245742012-09-05 17:12:55 -070026001 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026002 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026003
Jeff Johnson295189b2012-06-20 16:38:30 -070026004 wdiPowerParamsCb: callback for passing back the response
26005 of the Set Power Params operation received from the
26006 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026007
Jeff Johnson295189b2012-06-20 16:38:30 -070026008 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026009 callback
26010
Jeff Johnson295189b2012-06-20 16:38:30 -070026011 @return Result of the function call
26012*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026013WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026014WDI_SetPowerParamsReq
26015(
26016 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26017 WDI_SetPowerParamsCb wdiPowerParamsCb,
26018 void* pUserData
26019)
26020{
26021 WDI_EventInfoType wdiEventData;
26022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26023
26024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 ------------------------------------------------------------------------*/
26027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26028 {
26029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26030 "WDI API call before module is initialized - Fail request");
26031
Jeff Johnsone7245742012-09-05 17:12:55 -070026032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026033 }
26034
26035 /*------------------------------------------------------------------------
26036 Fill in Event data and post to the Main FSM
26037 ------------------------------------------------------------------------*/
26038 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026039 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026041 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026042 wdiEventData.pUserData = pUserData;
26043
26044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26045}/*WDI_SetPowerParamsReq*/
26046
26047/**
26048 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026049
26050 @param pWDICtx: pointer to the WLAN DAL context
26051 pEventData: pointer to the event information structure
26052
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 @see
26054 @return Result of the function call
26055*/
26056WDI_Status
26057WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026058(
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 WDI_ControlBlockType* pWDICtx,
26060 WDI_EventInfoType* pEventData
26061)
26062{
26063 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26064 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 wpt_uint16 usDataOffset = 0;
26067 wpt_uint16 usSendSize = 0;
26068 tSetPowerParamsType powerParams;
26069
26070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026072 -------------------------------------------------------------------------*/
26073 if (( NULL == pEventData ) ||
26074 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26075 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26076 {
26077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026081 }
26082
26083 /*-----------------------------------------------------------------------
26084 Get message buffer
26085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 sizeof(powerParams),
26088 &pSendBuffer, &usDataOffset, &usSendSize))||
26089 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26090 {
26091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26092 "Unable to get send buffer in Set PNO req %x %x %x",
26093 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 }
26097
26098 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026099 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026100 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26101
26102 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026103 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026104 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26105
26106 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026107 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026108 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26109
26110 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026111 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26113
26114 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26117
26118 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026119 powerParams.uBETInterval =
26120 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026121
Yue Ma0da19492013-05-13 17:01:29 -070026122 /* MAX LI for modulated DTIM */
26123 powerParams.uMaxLIModulatedDTIM =
26124 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026125
26126 wpalMemoryCopy( pSendBuffer+usDataOffset,
26127 &powerParams,
26128 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026129
26130 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026131 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026132
26133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026134 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26137 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026138}
26139
26140/**
26141 @brief Process Power Params Rsp function (called when a
26142 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026143
26144 @param pWDICtx: pointer to the WLAN DAL context
26145 pEventData: pointer to the event information structure
26146
Jeff Johnson295189b2012-06-20 16:38:30 -070026147 @see
26148 @return Result of the function call
26149*/
26150WDI_Status
26151WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026152(
Jeff Johnson295189b2012-06-20 16:38:30 -070026153 WDI_ControlBlockType* pWDICtx,
26154 WDI_EventInfoType* pEventData
26155)
26156{
26157 WDI_Status wdiStatus;
26158 eHalStatus halStatus;
26159 WDI_SetPowerParamsCb wdiPowerParamsCb;
26160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26161
26162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 -------------------------------------------------------------------------*/
26165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26166 ( NULL == pEventData->pEventData ))
26167 {
26168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 }
26173
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026175
26176 /*-------------------------------------------------------------------------
26177 Extract response and send it to UMAC
26178 -------------------------------------------------------------------------*/
26179 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026181
26182 /*Notify UMAC*/
26183 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26184
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186}/*WDI_ProcessSetPowerParamsRsp*/
26187
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026188/**
26189 @brief WDI_dhcpStartInd
26190 Host will send an event to the FW when DHCP is initiated
26191
26192 @param
26193 WDI_DHCPInd: DHCP Indication
26194 @see
26195 @return Result of the function call
26196*/
26197WDI_Status
26198WDI_dhcpStartInd
26199(
26200 WDI_DHCPInd *wdiDHCPInd
26201)
26202{
26203 WDI_EventInfoType wdiEventData;
26204
26205 /*------------------------------------------------------------------------
26206 Sanity Check
26207 ------------------------------------------------------------------------*/
26208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26209 {
26210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26211 "WDI API call before module is initialized - Fail request");
26212
26213 return WDI_STATUS_E_NOT_ALLOWED;
26214 }
26215
26216 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26217 wdiEventData.pEventData = wdiDHCPInd;
26218 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26219 wdiEventData.pCBfnc = NULL;
26220 wdiEventData.pUserData = NULL;
26221
26222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26223}
26224
26225
26226/**
26227 @brief WDI_dhcpStopInd
26228 Host will send an event to the FW when DHCP is completed
26229
26230 @param
26231 WDI_DHCPInd: DHCP Indication
26232 @see
26233 @return Result of the function call
26234*/
26235WDI_Status
26236WDI_dhcpStopInd
26237(
26238 WDI_DHCPInd *wdiDHCPInd
26239)
26240{
26241 WDI_EventInfoType wdiEventData;
26242
26243 /*------------------------------------------------------------------------
26244 Sanity Check
26245 ------------------------------------------------------------------------*/
26246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26247 {
26248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26249 "WDI API call before module is initialized - Fail request");
26250
26251 return WDI_STATUS_E_NOT_ALLOWED;
26252 }
26253
26254 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26255 wdiEventData.pEventData = wdiDHCPInd;
26256 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26257 wdiEventData.pCBfnc = NULL;
26258 wdiEventData.pUserData = NULL;
26259
26260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26261}
26262
26263
26264/**
26265 @brief Process DHCP Start Indication message and post it to HAL
26266
26267 @param pWDICtx: pointer to the WLAN DAL context
26268 pEventData: pointer to the event information structure
26269
26270 @see
26271 @return Result of the function call
26272*/
26273WDI_Status
26274WDI_ProcessDHCPStartInd
26275(
26276 WDI_ControlBlockType* pWDICtx,
26277 WDI_EventInfoType* pEventData
26278)
26279{
26280 wpt_uint8* pSendBuffer = NULL;
26281 wpt_uint16 usDataOffset = 0;
26282 wpt_uint16 usSendSize = 0;
26283 wpt_uint16 usLen = 0;
26284 WDI_DHCPInd* pwdiDHCPInd = NULL;
26285 tDHCPInfo* pDHCPInfo;
26286
26287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26288
26289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26290 "%s", __func__);
26291
26292 /*-------------------------------------------------------------------------
26293 Sanity check
26294 -------------------------------------------------------------------------*/
26295 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26296 {
26297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26298 "%s: Invalid parameters", __func__);
26299 WDI_ASSERT(0);
26300 return WDI_STATUS_E_FAILURE;
26301 }
26302 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26303 /*-----------------------------------------------------------------------
26304 Get message buffer
26305 -----------------------------------------------------------------------*/
26306
26307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26308 WDI_DHCP_START_IND,
26309 sizeof(tDHCPInfo),
26310 &pSendBuffer, &usDataOffset, &usSendSize))||
26311 ( usSendSize < (usDataOffset + usLen )))
26312 {
26313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26314 "Unable to get send buffer in DHCP Start req %p ",
26315 pEventData);
26316 WDI_ASSERT(0);
26317 return WDI_STATUS_E_FAILURE;
26318 }
26319
26320 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26321 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26322 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26323 WDI_MAC_ADDR_LEN);
26324
26325 pWDICtx->pReqStatusUserData = NULL;
26326 pWDICtx->pfncRspCB = NULL;
26327
26328 /*-------------------------------------------------------------------------
26329 Send DHCP Start Indication to HAL
26330 -------------------------------------------------------------------------*/
26331 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26332
26333}/*WDI_ProcessDHCPStartInd*/
26334
26335/**
26336 @brief Process DHCP Stop indication message and post it to HAL
26337
26338 @param pWDICtx: pointer to the WLAN DAL context
26339 pEventData: pointer to the event information structure
26340
26341 @see
26342 @return Result of the function call
26343*/
26344WDI_Status
26345WDI_ProcessDHCPStopInd
26346(
26347 WDI_ControlBlockType* pWDICtx,
26348 WDI_EventInfoType* pEventData
26349)
26350{
26351 wpt_uint8* pSendBuffer = NULL;
26352 wpt_uint16 usDataOffset = 0;
26353 wpt_uint16 usSendSize = 0;
26354 wpt_uint16 usLen = 0;
26355 WDI_DHCPInd* pwdiDHCPInd = NULL;
26356 tDHCPInfo* pDHCPInfo;
26357
26358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26359
26360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26361 "%s", __func__);
26362
26363 /*-------------------------------------------------------------------------
26364 Sanity check
26365 -------------------------------------------------------------------------*/
26366
26367 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26368 {
26369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26370 "%s: Invalid parameters", __func__);
26371 WDI_ASSERT(0);
26372 return WDI_STATUS_E_FAILURE;
26373 }
26374 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26375 /*-----------------------------------------------------------------------
26376 Get message buffer
26377 -----------------------------------------------------------------------*/
26378
26379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26380 WDI_DHCP_STOP_IND,
26381 sizeof(tDHCPInfo),
26382 &pSendBuffer, &usDataOffset, &usSendSize))||
26383 ( usSendSize < (usDataOffset + usLen )))
26384 {
26385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26386 "Unable to get send buffer in DHCP Start req %p ",
26387 pEventData);
26388 WDI_ASSERT(0);
26389 return WDI_STATUS_E_FAILURE;
26390 }
26391
26392 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26393 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26394 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26395 WDI_MAC_ADDR_LEN);
26396
26397 pWDICtx->pReqStatusUserData = NULL;
26398 pWDICtx->pfncRspCB = NULL;
26399 /*-------------------------------------------------------------------------
26400 Send DHCP Stop indication to HAL
26401 -------------------------------------------------------------------------*/
26402 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26403
26404}/*WDI_ProcessDHCPStopInd*/
26405
26406
Jeff Johnson295189b2012-06-20 16:38:30 -070026407#ifdef WLAN_FEATURE_GTK_OFFLOAD
26408/**
26409 @brief WDI_GTKOffloadReq will be called when the upper MAC
26410 wants to set GTK Rekey Counter while in power save. Upon
26411 the call of this API the WLAN DAL will pack and send a
26412 HAL GTK offload request message to the lower RIVA
26413 sub-system if DAL is in state STARTED.
26414
26415 In state BUSY this request will be queued. Request won't
26416 be allowed in any other state.
26417
26418 WDI_PostAssocReq must have been called.
26419
26420 @param pwdiGtkOffloadParams: the GTK offload as specified
26421 by the Device Interface
26422
26423 wdiGtkOffloadCb: callback for passing back the response
26424 of the GTK offload operation received from the device
26425
26426 pUserData: user data will be passed back with the
26427 callback
26428
26429 @see WDI_PostAssocReq
26430 @return Result of the function call
26431*/
26432WDI_Status
26433WDI_GTKOffloadReq
26434(
26435 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26436 WDI_GtkOffloadCb wdiGtkOffloadCb,
26437 void* pUserData
26438)
26439{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026440 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26442
26443 /*------------------------------------------------------------------------
26444 Sanity Check
26445 ------------------------------------------------------------------------*/
26446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26447 {
26448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26449 "WDI API call before module is initialized - Fail request");
26450
26451 return WDI_STATUS_E_NOT_ALLOWED;
26452 }
26453
26454 /*------------------------------------------------------------------------
26455 Fill in Event data and post to the Main FSM
26456 ------------------------------------------------------------------------*/
26457 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26458 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026459 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26461 wdiEventData.pUserData = pUserData;
26462
26463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26464}
26465
26466
26467/**
26468 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26469 MAC wants to get GTK Rekey Counter while in power save.
26470 Upon the call of this API the WLAN DAL will pack and
26471 send a HAL GTK offload request message to the lower RIVA
26472 sub-system if DAL is in state STARTED.
26473
26474 In state BUSY this request will be queued. Request won't
26475 be allowed in any other state.
26476
26477 WDI_PostAssocReq must have been called.
26478
26479 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26480 Information Message as specified by the
26481 Device Interface
26482
26483 wdiGtkOffloadGetInfoCb: callback for passing back the
26484 response of the GTK offload operation received from the
26485 device
26486
26487 pUserData: user data will be passed back with the
26488 callback
26489
26490 @see WDI_PostAssocReq
26491 @return Result of the function call
26492*/
26493WDI_Status
26494WDI_GTKOffloadGetInfoReq
26495(
26496 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26497 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26498 void* pUserData
26499)
26500{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026501 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26503
26504 /*------------------------------------------------------------------------
26505 Sanity Check
26506 ------------------------------------------------------------------------*/
26507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26508 {
26509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26510 "WDI API call before module is initialized - Fail request");
26511
26512 return WDI_STATUS_E_NOT_ALLOWED;
26513 }
26514
26515 /*------------------------------------------------------------------------
26516 Fill in Event data and post to the Main FSM
26517 ------------------------------------------------------------------------*/
26518 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26519 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26520 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26521 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26522 wdiEventData.pUserData = pUserData;
26523
26524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26525}
26526
26527
26528/**
26529 @brief Process set GTK Offload Request function
26530
26531 @param pWDICtx: pointer to the WLAN DAL context
26532 pEventData: pointer to the event information structure
26533
26534 @see
26535 @return Result of the function call
26536*/
26537WDI_Status
26538WDI_ProcessGTKOffloadReq
26539(
26540 WDI_ControlBlockType* pWDICtx,
26541 WDI_EventInfoType* pEventData
26542)
26543{
26544 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26545 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26546 wpt_uint8* pSendBuffer = NULL;
26547 wpt_uint16 usDataOffset = 0;
26548 wpt_uint16 usSendSize = 0;
26549 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026550 wpt_uint8 ucCurrentSessionId = 0;
26551 WDI_BSSSessionType* pBSSSes = NULL;
26552
Jeff Johnson295189b2012-06-20 16:38:30 -070026553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26554
26555 /*-------------------------------------------------------------------------
26556 Sanity check
26557 -------------------------------------------------------------------------*/
26558 if (( NULL == pEventData ) ||
26559 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26560 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26561 {
26562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026563 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026564 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026565 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026566 }
26567
26568 /*-----------------------------------------------------------------------
26569 Get message buffer
26570 -----------------------------------------------------------------------*/
26571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26572 sizeof(gtkOffloadReqParams),
26573 &pSendBuffer, &usDataOffset, &usSendSize))||
26574 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26575 {
26576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26577 "Unable to get send buffer in GTK offload req %x %x %x",
26578 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26579 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026580 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 }
26582
26583 //
26584 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26585 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026586 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26587 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26588 &pBSSSes);
26589 if ( NULL == pBSSSes )
26590 {
26591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026592 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026593 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026594 }
26595
26596 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26597
Jeff Johnson295189b2012-06-20 16:38:30 -070026598 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26599 // Copy KCK
26600 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26601 // Copy KEK
26602 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26603 // Copy KeyReplayCounter
26604 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26605
26606 wpalMemoryCopy( pSendBuffer+usDataOffset,
26607 &gtkOffloadReqParams,
26608 sizeof(gtkOffloadReqParams));
26609
26610 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26611 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26612
26613 /*-------------------------------------------------------------------------
26614 Send Get STA Request to HAL
26615 -------------------------------------------------------------------------*/
26616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26617 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026618
26619fail:
26620 // Release the message buffer so we don't leak
26621 wpalMemoryFree(pSendBuffer);
26622
26623failRequest:
26624 //WDA should have failure check to avoid the memory leak
26625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026626}
26627
26628
26629/**
26630 @brief Process GTK Offload Get Information Request function
26631
26632 @param pWDICtx: pointer to the WLAN DAL context
26633 pEventData: pointer to the event information structure
26634
26635 @see
26636 @return Result of the function call
26637*/
26638WDI_Status
26639WDI_ProcessGTKOffloadGetInfoReq
26640(
26641 WDI_ControlBlockType* pWDICtx,
26642 WDI_EventInfoType* pEventData
26643)
26644{
26645 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
26646 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
26647 wpt_uint8* pSendBuffer = NULL;
26648 wpt_uint16 usDataOffset = 0;
26649 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026650 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
26651 wpt_uint8 ucCurrentSessionId = 0;
26652 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026653
26654 /*-------------------------------------------------------------------------
26655 Sanity check
26656 -------------------------------------------------------------------------*/
26657 if (( NULL == pEventData ) ||
26658 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
26659 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
26660 {
26661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026662 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026663 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026664 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026665 }
26666
26667 /*-----------------------------------------------------------------------
26668 Get message buffer
26669 -----------------------------------------------------------------------*/
26670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026671 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026672 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026673 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026674 {
26675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26676 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
26677 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
26678 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026679 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026680 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026681 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26682 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
26683 &pBSSSes);
26684 if ( NULL == pBSSSes )
26685 {
26686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026687 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026688 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026689 }
26690 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026691
26692 //
26693 // Don't need to fill send buffer other than header
26694 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026695 wpalMemoryCopy( pSendBuffer+usDataOffset,
26696 &halGtkOffloadGetInfoReqParams,
26697 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026698
26699 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
26700 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
26701
26702 /*-------------------------------------------------------------------------
26703 Send Get STA Request to HAL
26704 -------------------------------------------------------------------------*/
26705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26706 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026707fail:
26708 // Release the message buffer so we don't leak
26709 wpalMemoryFree(pSendBuffer);
26710
26711failRequest:
26712 //WDA should have failure check to avoid the memory leak
26713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026714}
26715
26716/**
26717 @brief Process host offload Rsp function (called when a
26718 response is being received over the bus from HAL)
26719
26720 @param pWDICtx: pointer to the WLAN DAL context
26721 pEventData: pointer to the event information structure
26722
26723 @see
26724 @return Result of the function call
26725*/
26726WDI_Status
26727WDI_ProcessGtkOffloadRsp
26728(
26729 WDI_ControlBlockType* pWDICtx,
26730 WDI_EventInfoType* pEventData
26731)
26732{
Jeff Johnson295189b2012-06-20 16:38:30 -070026733 eHalStatus halStatus;
26734 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026735 tHalGtkOffloadRspParams halGtkOffloadRspParams;
26736 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26738
26739 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
26740
26741 /*-------------------------------------------------------------------------
26742 Sanity check
26743 -------------------------------------------------------------------------*/
26744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26745 ( NULL == pEventData->pEventData))
26746 {
26747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026749 WDI_ASSERT(0);
26750 return WDI_STATUS_E_FAILURE;
26751 }
26752
26753 /*-------------------------------------------------------------------------
26754 Extract response and send it to UMAC
26755 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026756 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26757 {
26758 wpalMemoryCopy( &halGtkOffloadRspParams,
26759 pEventData->pEventData,
26760 sizeof(halGtkOffloadRspParams));
26761
26762 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026763 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026764 wdiGtkOffloadRsparams.bssIdx =
26765 halGtkOffloadRspParams.bssIdx;
26766 }
26767 else
26768 {
26769 halStatus = *((eHalStatus*)pEventData->pEventData);
26770 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26771 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026772
26773 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026774 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026775
26776 return WDI_STATUS_SUCCESS;
26777}
26778
26779/**
26780 @brief Process GTK Offload Get Information Response function
26781
26782 @param pWDICtx: pointer to the WLAN DAL context
26783 pEventData: pointer to the event information structure
26784
26785 @see
26786 @return Result of the function call
26787*/
26788WDI_Status
26789WDI_ProcessGTKOffloadGetInfoRsp
26790(
26791 WDI_ControlBlockType* pWDICtx,
26792 WDI_EventInfoType* pEventData
26793)
26794{
Jeff Johnson295189b2012-06-20 16:38:30 -070026795 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026797 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
26798 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026799 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026800
26801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26802
26803 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
26804
26805 /*-------------------------------------------------------------------------
26806 Sanity check
26807 -------------------------------------------------------------------------*/
26808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26809 ( NULL == pEventData->pEventData ))
26810 {
26811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026813 WDI_ASSERT(0);
26814 return WDI_STATUS_E_FAILURE;
26815 }
26816
26817 /*-------------------------------------------------------------------------
26818 Extract response and send it to UMAC
26819 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026820 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26821 {
26822 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
26823 pEventData->pEventData,
26824 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026825
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026826 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026827 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026828 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
26829 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
26830 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
26831 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
26832 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
26833 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
26834 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
26835 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026836
26837 wpalMutexAcquire(&pWDICtx->wptMutex);
26838 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
26839 &pBSSSes);
26840
26841 if ( NULL == pBSSSes )
26842 {
26843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26844 "Association sequence for this BSS does not exist or "
26845 "association no longer in progress - mysterious HAL response");
26846 wpalMutexRelease(&pWDICtx->wptMutex);
26847 return WDI_STATUS_E_NOT_ALLOWED;
26848 }
26849
26850 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
26851 sizeof (wpt_macAddr));
26852 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026853 }
26854 else
26855 {
26856 halStatus = *((eHalStatus*)pEventData->pEventData);
26857 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26858 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026859 /*Notify UMAC*/
26860 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26861 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026862 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026863
26864 return WDI_STATUS_SUCCESS;
26865}
26866#endif // WLAN_FEATURE_GTK_OFFLOAD
26867
26868#ifdef WLAN_WAKEUP_EVENTS
26869WDI_Status
26870WDI_ProcessWakeReasonInd
26871(
26872 WDI_ControlBlockType* pWDICtx,
26873 WDI_EventInfoType* pEventData
26874)
26875{
26876 WDI_LowLevelIndType *pWdiInd;
26877 tpWakeReasonParams pWakeReasonParams;
26878 wpt_uint32 allocSize = 0;
26879
26880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026881 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026882
26883 /*-------------------------------------------------------------------------
26884 Sanity check
26885 -------------------------------------------------------------------------*/
26886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26887 ( NULL == pEventData->pEventData ))
26888 {
26889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026891 WDI_ASSERT( 0 );
26892 return WDI_STATUS_E_FAILURE;
26893 }
26894
26895 /*-------------------------------------------------------------------------
26896 Extract indication and send it to UMAC
26897 -------------------------------------------------------------------------*/
26898 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
26899
26900 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
26901
26902 //Allocate memory for WDI_WakeReasonIndType structure
26903 pWdiInd = wpalMemoryAllocate(allocSize) ;
26904
26905 if(NULL == pWdiInd)
26906 {
26907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26908 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026909 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026910 WDI_ASSERT(0);
26911 return WDI_STATUS_E_FAILURE;
26912 }
26913
26914 wpalMemoryZero(pWdiInd, allocSize);
26915
26916 /* Fill in the indication parameters*/
26917 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
26918 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
26919 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
26920 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
26921 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
26922 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
26923 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
26924 &(pWakeReasonParams->aDataStart[0]),
26925 pWakeReasonParams->ulStoredDataLen);
26926
ltimariu034f7d62013-01-24 18:54:33 -080026927
26928 if ( pWDICtx->wdiLowLevelIndCB )
26929 {
26930 /*Notify UMAC*/
26931 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
26932 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026933
26934 //Free memory allocated for WDI_WakeReasonIndType structure
26935 wpalMemoryFree(pWdiInd);
26936
26937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026938 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026939
26940 return WDI_STATUS_SUCCESS;
26941}
26942#endif // WLAN_WAKEUP_EVENTS
26943
26944void WDI_GetWcnssCompiledApiVersion
26945(
26946 WDI_WlanVersionType *pWcnssApiVersion
26947)
26948{
26949 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
26950 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
26951 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
26952 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
26953}
26954
26955/**
26956 @brief Process Set TM Level Rsp function (called when a
26957 response is being received over the bus from HAL)
26958
26959 @param pWDICtx: pointer to the WLAN DAL context
26960 pEventData: pointer to the event information structure
26961
26962 @see
26963 @return Result of the function call
26964*/
26965WDI_Status
26966WDI_ProcessSetTmLevelRsp
26967(
26968 WDI_ControlBlockType* pWDICtx,
26969 WDI_EventInfoType* pEventData
26970)
26971{
26972 WDI_Status wdiStatus;
26973 eHalStatus halStatus;
26974 WDI_SetTmLevelCb wdiSetTmLevelCb;
26975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26976
26977 /*-------------------------------------------------------------------------
26978 Sanity check
26979 -------------------------------------------------------------------------*/
26980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26981 ( NULL == pEventData->pEventData ))
26982 {
26983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026985 WDI_ASSERT(0);
26986 return WDI_STATUS_E_FAILURE;
26987 }
26988
26989 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
26990
26991 /*-------------------------------------------------------------------------
26992 Extract response and send it to UMAC
26993 -------------------------------------------------------------------------*/
26994 halStatus = *((eHalStatus*)pEventData->pEventData);
26995 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26996
26997 /*Notify UMAC*/
26998 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
26999
27000 return WDI_STATUS_SUCCESS;
27001}/*WDI_ProcessSetTmLevelRsp*/
27002
27003/**
27004 @brief Process Set Thermal Mitigation level Changed request
27005
27006 @param pWDICtx: pointer to the WLAN DAL context
27007 pEventData: pointer to the event information structure
27008
27009 @see
27010 @return Result of the function call
27011*/
27012WDI_Status
27013WDI_ProcessSetTmLevelReq
27014(
27015 WDI_ControlBlockType* pWDICtx,
27016 WDI_EventInfoType* pEventData
27017)
27018{
27019 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27020 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27021 wpt_uint8* pSendBuffer = NULL;
27022 wpt_uint16 usDataOffset = 0;
27023 wpt_uint16 usSendSize = 0;
27024 tSetThermalMitgationType halTmMsg;
27025
27026 /*-------------------------------------------------------------------------
27027 Sanity check
27028 -------------------------------------------------------------------------*/
27029 if (( NULL == pEventData ) ||
27030 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27031 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27032 {
27033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027035 WDI_ASSERT(0);
27036 return WDI_STATUS_E_FAILURE;
27037 }
27038
27039 /*-----------------------------------------------------------------------
27040 Get message buffer
27041 -----------------------------------------------------------------------*/
27042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27043 sizeof(halTmMsg),
27044 &pSendBuffer, &usDataOffset, &usSendSize))||
27045 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27046 {
27047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27048 "Unable to get send buffer in Set PNO req %x %x %x",
27049 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27050 WDI_ASSERT(0);
27051 return WDI_STATUS_E_FAILURE;
27052 }
27053
27054 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27055 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27056
27057 wpalMemoryCopy( pSendBuffer+usDataOffset,
27058 &halTmMsg,
27059 sizeof(halTmMsg));
27060
27061 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27062 pWDICtx->pfncRspCB = NULL;
27063 /*-------------------------------------------------------------------------
27064 Send Get STA Request to HAL
27065 -------------------------------------------------------------------------*/
27066 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27067 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27068}
27069
27070/* Fill the value from the global features enabled array to the global capabilities
27071 * bitmap struct
27072 */
27073static void
27074FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27075{
27076 wpt_int8 i;
27077 for (i=0; i<len; i++)
27078 {
27079 setFeatCaps(fCaps, enabledFeat[i]);
27080 }
27081}
27082
27083/**
27084 @brief WDI_featureCapsExchangeReq
27085 Post feature capability bitmap exchange event.
27086 Host will send its own capability to FW in this req and
27087 expect FW to send its capability back as a bitmap in Response
27088
27089 @param
27090
27091 wdiFeatureCapsExchangeCb: callback called on getting the response.
27092 It is kept to mantain similarity between WDI reqs and if needed, can
27093 be used in future. Currently, It is set to NULL
27094
27095 pUserData: user data will be passed back with the
27096 callback
27097
27098 @see
27099 @return Result of the function call
27100*/
27101WDI_Status
27102WDI_featureCapsExchangeReq
27103(
27104 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27105 void* pUserData
27106)
27107{
27108 WDI_EventInfoType wdiEventData;
27109 wpt_int32 fCapsStructSize;
27110
27111 /*------------------------------------------------------------------------
27112 Sanity Check
27113 ------------------------------------------------------------------------*/
27114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27115 {
27116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27117 "WDI API call before module is initialized - Fail request");
27118
27119 return WDI_STATUS_E_NOT_ALLOWED;
27120 }
27121
27122 /* Allocate memory separately for global variable carrying FW caps */
27123 fCapsStructSize = sizeof(tWlanFeatCaps);
27124 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27125 if ( NULL == gpHostWlanFeatCaps )
27126 {
27127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27128 "Cannot allocate memory for host capability info\n");
27129 WDI_ASSERT(0);
27130 return WDI_STATUS_MEM_FAILURE;
27131 }
27132
27133 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27134
27135 /*------------------------------------------------------------------------
27136 Fill in Event data and post to the Main FSM
27137 ------------------------------------------------------------------------*/
27138 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27139 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027141 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027142 gpHostWlanFeatCaps->featCaps[0],
27143 gpHostWlanFeatCaps->featCaps[1],
27144 gpHostWlanFeatCaps->featCaps[2],
27145 gpHostWlanFeatCaps->featCaps[3]
27146 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27148 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27150 wdiEventData.pEventData = gpHostWlanFeatCaps;
27151 wdiEventData.uEventDataSize = fCapsStructSize;
27152 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27153 wdiEventData.pUserData = pUserData;
27154
27155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27156}
27157
27158/**
Yathishd8713192012-12-10 14:21:35 -080027159 @brief Disable Active mode offload in Host
27160
27161 @param void
27162 @see
27163 @return void
27164*/
27165void
27166WDI_disableCapablityFeature(wpt_uint8 feature_index)
27167{
27168 supportEnabledFeatures[feature_index] = 0;
27169 return;
27170}
27171
27172/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027173 @brief Process Host-FW Capability Exchange Request function
27174
27175 @param pWDICtx: pointer to the WLAN DAL context
27176 pEventData: pointer to the event information structure
27177
27178 @see
27179 @return Result of the function call
27180*/
27181WDI_Status
27182WDI_ProcessFeatureCapsExchangeReq
27183(
27184 WDI_ControlBlockType* pWDICtx,
27185 WDI_EventInfoType* pEventData
27186)
27187{
27188 wpt_uint8* pSendBuffer = NULL;
27189 wpt_uint16 usDataOffset = 0;
27190 wpt_uint16 usSendSize = 0;
27191 wpt_uint16 usLen = 0;
27192
27193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27194
27195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027196 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027197
27198 /*-------------------------------------------------------------------------
27199 Sanity check
27200 -------------------------------------------------------------------------*/
27201 /* Call back function is NULL since not required for cap exchange req */
27202 if (( NULL == pEventData ) ||
27203 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27204 {
27205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027207 WDI_ASSERT(0);
27208 return WDI_STATUS_E_FAILURE;
27209 }
27210
27211 /*-----------------------------------------------------------------------
27212 Get message buffer
27213 -----------------------------------------------------------------------*/
27214 usLen = sizeof(tWlanFeatCaps);
27215
27216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27217 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27218 usLen,
27219 &pSendBuffer, &usDataOffset, &usSendSize))||
27220 ( usSendSize < (usDataOffset + usLen )))
27221 {
27222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27223 "Unable to get send buffer in feat caps exchange req %x %x",
27224 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27225 WDI_ASSERT(0);
27226 return WDI_STATUS_E_FAILURE;
27227 }
27228
27229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027230 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027231 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27232 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27233 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27234 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27235 );
27236
27237 /* Copy host caps after the offset in the send buffer */
27238 wpalMemoryCopy( pSendBuffer+usDataOffset,
27239 (tWlanFeatCaps *)pEventData->pEventData,
27240 usLen);
27241
27242 /*-------------------------------------------------------------------------
27243 Send Start Request to HAL
27244 -------------------------------------------------------------------------*/
27245 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27246 (WDI_StartRspCb)pEventData->pCBfnc,
27247 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27248
27249}/*WDI_ProcessFeatureCapsExchangeReq*/
27250
27251/**
27252 @brief Process Host-FW Capability Exchange Response function
27253
27254 @param pWDICtx: pointer to the WLAN DAL context
27255 pEventData: pointer to the event information structure
27256
27257 @see
27258 @return Result of the function call
27259*/
27260WDI_Status
27261WDI_ProcessFeatureCapsExchangeRsp
27262(
27263 WDI_ControlBlockType* pWDICtx,
27264 WDI_EventInfoType* pEventData
27265)
27266{
27267 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27268 wpt_int32 fCapsStructSize;
27269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27270
27271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027272 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027273
27274 /*-------------------------------------------------------------------------
27275 Sanity check
27276 -------------------------------------------------------------------------*/
27277 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27278 ( NULL == pEventData->pEventData ))
27279 {
27280 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 WDI_ASSERT(0);
27284 return WDI_STATUS_E_FAILURE;
27285 }
27286
27287 /* Allocate memory separately for global variable carrying FW caps */
27288 fCapsStructSize = sizeof(tWlanFeatCaps);
27289 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27290 if ( NULL == gpFwWlanFeatCaps )
27291 {
27292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27293 "Cannot allocate memory for host capability info\n");
27294 WDI_ASSERT(0);
27295 return WDI_STATUS_MEM_FAILURE;
27296 }
27297
27298 /*-------------------------------------------------------------------------
27299 Unpack HAL Response Message - the header was already extracted by the
27300 main Response Handling procedure
27301 -------------------------------------------------------------------------*/
27302 /*-------------------------------------------------------------------------
27303 Extract response and send it to UMAC
27304 -------------------------------------------------------------------------*/
27305
27306 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27307 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 gpFwWlanFeatCaps->featCaps[0],
27311 gpFwWlanFeatCaps->featCaps[1],
27312 gpFwWlanFeatCaps->featCaps[2],
27313 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027314 );
27315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27316 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027317 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27318
27319 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27320 if (wdiFeatureCapsExchangeCb != NULL)
27321 wdiFeatureCapsExchangeCb(NULL, NULL);
27322
27323 return WDI_STATUS_SUCCESS;
27324}
27325
Mohit Khanna4a70d262012-09-11 16:30:12 -070027326#ifdef WLAN_FEATURE_11AC
27327WDI_Status
27328WDI_ProcessUpdateVHTOpModeRsp
27329(
27330 WDI_ControlBlockType* pWDICtx,
27331 WDI_EventInfoType* pEventData
27332)
27333{
27334 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27335 WDI_Status wdiStatus;
27336 eHalStatus halStatus;
27337
27338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27339
27340 /*-------------------------------------------------------------------------
27341 Sanity check
27342 -------------------------------------------------------------------------*/
27343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27344 ( NULL == pEventData->pEventData))
27345 {
27346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027347 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027348 WDI_ASSERT(0);
27349 return WDI_STATUS_E_FAILURE;
27350 }
27351 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27352
27353 /*-------------------------------------------------------------------------
27354 Extract response and send it to UMAC
27355 -------------------------------------------------------------------------*/
27356 halStatus = *((eHalStatus*)pEventData->pEventData);
27357 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27358
27359 /*Notify UMAC*/
27360 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27361
27362 return WDI_STATUS_SUCCESS;
27363}
27364#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027365/**
27366 @brief WDI_getHostWlanFeatCaps
27367 WDI API that returns whether the feature passed to it as enum value in
27368 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27369 variable storing host capability bitmap to find this. This can be used by
27370 other moduels to decide certain things like call different APIs based on
27371 whether a particular feature is supported.
27372
27373 @param
27374
27375 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27376
27377 @see
27378 @return
27379 0 - if the feature is NOT supported in host
27380 any non-zero value - if the feature is SUPPORTED in host.
27381*/
27382wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27383{
27384 wpt_uint8 featSupported = 0;
27385 if (gpHostWlanFeatCaps != NULL)
27386 {
27387 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27388 }
27389 else
27390 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027392 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 }
27394 return featSupported;
27395}
27396
27397/**
27398 @brief WDI_getFwWlanFeatCaps
27399 WDI API that returns whether the feature passed to it as enum value in
27400 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27401 variable storing host capability bitmap to find this. This can be used by
27402 other moduels to decide certain things like call different APIs based on
27403 whether a particular feature is supported.
27404
27405 @param
27406
27407 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27408 in wlan_hal_msg.h.
27409
27410 @see
27411 @return
27412 0 - if the feature is NOT supported in FW
27413 any non-zero value - if the feature is SUPPORTED in FW.
27414*/
27415wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27416{
27417 wpt_uint8 featSupported = 0;
27418 if (gpFwWlanFeatCaps != NULL)
27419 {
27420 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27421 }
27422 else
27423 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027425 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027426 }
27427 return featSupported;
27428}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027429
27430#ifdef WLAN_FEATURE_11AC
27431WDI_Status
27432WDI_ProcessUpdateVHTOpModeReq
27433(
27434 WDI_ControlBlockType* pWDICtx,
27435 WDI_EventInfoType* pEventData
27436)
27437{
27438 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27439 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27440 wpt_uint8* pSendBuffer = NULL;
27441 wpt_uint16 usDataOffset = 0;
27442 wpt_uint16 usSendSize = 0;
27443
27444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27445
27446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027447 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027448
27449 /*-------------------------------------------------------------------------
27450 Sanity check
27451 -------------------------------------------------------------------------*/
27452 if (( NULL == pEventData ) ||
27453 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27454 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27455 {
27456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027457 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027458 WDI_ASSERT(0);
27459 return WDI_STATUS_E_FAILURE;
27460 }
27461
27462 /*-----------------------------------------------------------------------
27463 Get message buffer
27464 -----------------------------------------------------------------------*/
27465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27466 sizeof(WDI_UpdateVHTOpMode),
27467 &pSendBuffer, &usDataOffset, &usSendSize))||
27468 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27469 {
27470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27471 "Unable to get send buffer in update vht opMode req");
27472 WDI_ASSERT(0);
27473 return WDI_STATUS_E_FAILURE;
27474 }
27475
27476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27477 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27478
27479 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27480 sizeof(WDI_UpdateVHTOpMode));
27481
27482 /*-------------------------------------------------------------------------
27483 Send Start Request to HAL
27484 -------------------------------------------------------------------------*/
27485 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27486 wdiVHTOpModeCb,
27487 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27488
27489}
27490
27491WDI_Status
27492WDI_UpdateVHTOpModeReq
27493(
27494 WDI_UpdateVHTOpMode *pData,
27495 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27496 void* pUserData
27497)
27498{
27499 WDI_EventInfoType wdiEventData;
27500
27501 /*------------------------------------------------------------------------
27502 Sanity Check
27503 ------------------------------------------------------------------------*/
27504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27505 {
27506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27507 "WDI API call before module is initialized - Fail request");
27508
27509 return WDI_STATUS_E_NOT_ALLOWED;
27510 }
27511
27512 /*------------------------------------------------------------------------
27513 Fill in Event data and post to the Main FSM
27514 ------------------------------------------------------------------------*/
27515 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27516 wdiEventData.pEventData = pData;
27517 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27518 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27519 wdiEventData.pUserData = pUserData;
27520
27521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27522 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27523
27524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27525
27526}
27527#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027528
27529/**
27530 @brief WDI_TransportChannelDebug -
27531 Display DXE Channel debugging information
27532 User may request to display DXE channel snapshot
27533 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027534
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027535 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027536 @param enableStallDetect : Enable stall detect feature
27537 This feature will take effect to data performance
27538 Not integrate till fully verification
27539 @see
27540 @return none
27541*/
27542void WDI_TransportChannelDebug
27543(
27544 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027545 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027546)
27547{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027548 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027549 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027550}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027551/**
27552 @brief WDI_SsrTimerCB
27553 Callback function for SSR timer, if this is called then the graceful
27554 shutdown for Riva did not happen.
27555
27556 @param pUserData : user data to timer
27557
27558 @see
27559 @return none
27560*/
27561void
27562WDI_SsrTimerCB
27563(
27564 void *pUserData
27565)
27566{
27567 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27569
27570 if (NULL == pWDICtx )
27571 {
27572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027573 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027574 WDI_ASSERT(0);
27575 return;
27576 }
27577 wpalRivaSubystemRestart();
27578
27579 return;
27580
27581}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027582
27583/**
27584 @brief WDI_SetEnableSSR -
27585 This API is called to enable/disable SSR on WDI timeout.
27586
27587 @param enableSSR : enable/disable SSR
27588
27589 @see
27590 @return none
27591*/
27592void WDI_SetEnableSSR(wpt_boolean enableSSR)
27593{
27594 gWDICb.bEnableSSR = enableSSR;
27595}