blob: 068d0919c89d258a6dddd5726791697c5980ffe6 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-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"
Srikant Kuppa64eae792013-08-29 15:27:56 -0700106#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
108/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700109 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700110 ===========================================================================*/
111#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
112
Jeff Johnsone7245742012-09-05 17:12:55 -0700113#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
114#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
115
Yue Mad8cac142013-03-28 11:33:46 -0700116#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700117
118#ifdef FEATURE_WLAN_SCAN_PNO
119#define WDI_PNO_VERSION_MASK 0x8000
120#endif
121
122/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700123static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700124/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700125static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700126/* array of features supported. Need to add a new feature
127 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
128 */
129static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800130 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800131#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700132 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800136#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700137 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800138#else
139 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800140#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700141 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800142#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700143 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800144#else
145 ,FEATURE_NOT_SUPPORTED
146#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700147 ,FEATURE_NOT_SUPPORTED //9
148 ,FEATURE_NOT_SUPPORTED //10
149 ,FEATURE_NOT_SUPPORTED //11
150 ,FEATURE_NOT_SUPPORTED //12
151 ,FEATURE_NOT_SUPPORTED //13
152 ,FEATURE_NOT_SUPPORTED //14
153 ,FEATURE_NOT_SUPPORTED //15
154 ,FEATURE_NOT_SUPPORTED //16
155 ,FEATURE_NOT_SUPPORTED //17
156 ,FEATURE_NOT_SUPPORTED //18
157 ,FEATURE_NOT_SUPPORTED //19
158 ,FEATURE_NOT_SUPPORTED //20
159 ,FEATURE_NOT_SUPPORTED //21
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700160#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700161 ,WLAN_ROAM_SCAN_OFFLOAD //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700162#else
163 ,FEATURE_NOT_SUPPORTED
164#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700165 ,FEATURE_NOT_SUPPORTED //23
166 ,FEATURE_NOT_SUPPORTED //24
167 ,FEATURE_NOT_SUPPORTED //25
168 ,IBSS_HEARTBEAT_OFFLOAD //26
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800169 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700170
171/*--------------------------------------------------------------------------
172 WLAN DAL State Machine
173 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700174WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700175{
176 /*WDI_INIT_ST*/
177 {{
178 WDI_MainStart, /*WDI_START_EVENT*/
179 NULL, /*WDI_STOP_EVENT*/
180 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
181 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
182 WDI_MainClose, /*WDI_CLOSE_EVENT*/
183 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
184 }},
185
186 /*WDI_STARTED_ST*/
187 {{
188 WDI_MainStartStarted, /*WDI_START_EVENT*/
189 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
190 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
191 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
192 NULL, /*WDI_CLOSE_EVENT*/
193 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
194 }},
195
196 /*WDI_STOPPED_ST*/
197 {{
198 WDI_MainStart, /*WDI_START_EVENT*/
199 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
200 NULL, /*WDI_REQUEST_EVENT*/
201 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
202 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700203 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700204 }},
205
206 /*WDI_BUSY_ST*/
207 {{
208 WDI_MainStartBusy, /*WDI_START_EVENT*/
209 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
210 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
211 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
212 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
213 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
214 }}
215};
216
Jeff Johnsone7245742012-09-05 17:12:55 -0700217/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700218 DAL Request Processing Array - the functions in this table will only be
219 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700220 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700221 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700222WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700223{
224 /*INIT*/
225 WDI_ProcessStartReq, /* WDI_START_REQ */
226 WDI_ProcessStopReq, /* WDI_STOP_REQ */
227 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
228
229 /*SCAN*/
230 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
231 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
232 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
233 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
234
235 /*ASSOCIATION*/
236 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
237 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
238 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
239 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
240 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
241
242 /* Security */
243 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
244 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
245 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
246 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
247
248 /* QoS and BA APIs */
249 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
250 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
251 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
252 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
253 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
254
255 /* Miscellaneous Control APIs */
256 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
257 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
258 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
259 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
260 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
261
262 /*BA APIs*/
263 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
264 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
265
266 /*Beacon processing APIs*/
267 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
268 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
269
270 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
271 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
272 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
273 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700275 /* PowerSave APIs */
276 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
277 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
278 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
279 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
280 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
281 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
282 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
283 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
284 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
285 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
286 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
287 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
288 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
289 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
290 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
291 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
292 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
293 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
294 /*NV Download APIs*/
295 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
296 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
297 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
298#ifdef WLAN_FEATURE_VOWIFI_11R
299 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
300#else
301 NULL,
302#endif /* WLAN_FEATURE_VOWIFI_11R */
303 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
304 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700305 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700306
307#ifdef FEATURE_OEM_DATA_SUPPORT
308 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
309#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700310 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700311#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700313
314 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700315
316#ifdef FEATURE_WLAN_SCAN_PNO
317 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
318 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
319 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
320#else
321 NULL,
322 NULL,
323 NULL,
324#endif /* FEATURE_WLAN_SCAN_PNO */
325
326 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700327
Jeff Johnson295189b2012-06-20 16:38:30 -0700328#ifdef WLAN_FEATURE_PACKET_FILTERING
329 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700330 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700331 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700332 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700333 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700335 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700336 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700337#else
338 NULL,
339 NULL,
340 NULL,
341 NULL,
342#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700343 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700344 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
345 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
346
347 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
348#ifdef FEATURE_WLAN_CCX
349 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
350#else
351 NULL,
352#endif
353
354#ifdef WLAN_FEATURE_GTK_OFFLOAD
355 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
356 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
357#else
358 NULL,
359 NULL,
360#endif // WLAN_FEATURE_GTK_OFFLOAD
361
362 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
363 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700364#ifdef WLAN_FEATURE_11AC
365 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800366#else
367 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700368#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800369#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
370 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
371#else
schang86c22c42013-03-13 18:41:24 -0700372 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800373#endif
schang86c22c42013-03-13 18:41:24 -0700374 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700375#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700376 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700377#else
378 NULL,
379#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530380#ifdef FEATURE_WLAN_TDLS
381 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
382#else
383 NULL,
384#endif
Leo Chang9056f462013-08-01 19:21:11 -0700385#ifdef FEATURE_WLAN_LPHB
386 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
387#else
388 NULL,
389#endif /* FEATURE_WLAN_LPHB */
schang86c22c42013-03-13 18:41:24 -0700390 /*-------------------------------------------------------------------------
391 Indications
392 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700393 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800394 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530395 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
396 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700397#ifdef WLAN_FEATURE_11W
398 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
399#else
400 NULL,
401#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700402 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
403 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700404};
405
406
Jeff Johnsone7245742012-09-05 17:12:55 -0700407/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 DAL Request Processing Array - the functions in this table will only be
409 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700410 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700411 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700412WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700413{
414 /*INIT*/
415 WDI_ProcessStartRsp, /* WDI_START_RESP */
416 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
417 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
418
419 /*SCAN*/
420 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
421 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
422 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
423 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
424
425 /* ASSOCIATION*/
426 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
427 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
428 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
429 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
430 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
431
432 /* Security */
433 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
434 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
435 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
436 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
437
438 /* QoS and BA APIs */
439 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
440 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
441 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
442 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
443 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
444
445 /* Miscellaneous Control APIs */
446 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
447 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
448 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
449 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
450 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
451
452 /* BA APIs*/
453 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
454 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700455
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 /* IBSS APIs*/
457 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
458 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
459
460 /*Soft AP APIs*/
461 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
462 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
463 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
464 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
465
466 /* PowerSave APIs */
467 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
468 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
469 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
470 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
471 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
472 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
473 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
474 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
475 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
476 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
477 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
478 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
479 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
480 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
481 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
482 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
483 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
484 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700485
Jeff Johnson295189b2012-06-20 16:38:30 -0700486
487 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
488
489 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
490 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
491#ifdef WLAN_FEATURE_VOWIFI_11R
492 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
493#else
494 NULL,
495#endif /* WLAN_FEATURE_VOWIFI_11R */
496 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
497 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700498#ifdef FEATURE_OEM_DATA_SUPPORT
499 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
500#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700501 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700502#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700503 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
504
Jeff Johnson295189b2012-06-20 16:38:30 -0700505 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700506
Jeff Johnson295189b2012-06-20 16:38:30 -0700507 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
Jeff Johnsone7245742012-09-05 17:12:55 -0700509 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
510
Jeff Johnson295189b2012-06-20 16:38:30 -0700511#ifdef FEATURE_WLAN_SCAN_PNO
512 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
513 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
514 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
515#else
516 NULL,
517 NULL,
518 NULL,
519#endif // FEATURE_WLAN_SCAN_PNO
520
521 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
522
523 /*---------------------------------------------------------------------
524 Indications
525 ---------------------------------------------------------------------*/
526#ifdef WLAN_FEATURE_PACKET_FILTERING
527 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700528 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700530 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700531 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700532 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700533 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700534 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700535#else
536 NULL,
537 NULL,
538 NULL,
539 NULL,
540#endif // WLAN_FEATURE_PACKET_FILTERING
541
542 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
543 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
544
545 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
546#ifdef FEATURE_WLAN_CCX
547 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
548#else
549 NULL,
550#endif
551
552#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700553 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
554 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700555#else
556 NULL,
557 NULL,
558#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700559 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
560 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700561#ifdef WLAN_FEATURE_11AC
562 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700563#else
564 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700565#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800566#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
567 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
568#else
569 NULL,
570#endif
schang86c22c42013-03-13 18:41:24 -0700571 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700572#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700573 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700574#else
575 NULL,
576#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530577#ifdef FEATURE_WLAN_TDLS
578 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
579#else
580 NULL,
581#endif
Leo Chang9056f462013-08-01 19:21:11 -0700582#ifdef FEATURE_WLAN_LPHB
583 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
584#else
585 NULL,
586#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700587 /*---------------------------------------------------------------------
588 Indications
589 ---------------------------------------------------------------------*/
590 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
591 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
592 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
593 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
594 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
595 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
596
597 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
598
599 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
600
Jeff Johnson295189b2012-06-20 16:38:30 -0700601 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700602
603#ifdef FEATURE_WLAN_SCAN_PNO
604 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
605#else
606 NULL,
607#endif // FEATURE_WLAN_SCAN_PNO
608
609#ifdef WLAN_WAKEUP_EVENTS
610 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
611#else // WLAN_WAKEUP_EVENTS
612 NULL,
613#endif // WLAN_WAKEUP_EVENTS
614
615 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800616
Viral Modid86bde22012-12-10 13:09:21 -0800617 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530618#ifdef FEATURE_WLAN_TDLS
619 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
620#else
621 NULL,
622#endif
Leo Chang9056f462013-08-01 19:21:11 -0700623
624#ifdef FEATURE_WLAN_LPHB
625 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
626#else
627 NULL,
628#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700629
630 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700631
632 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700633};
634
635
Jeff Johnsone7245742012-09-05 17:12:55 -0700636/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700637 WLAN DAL Global Control Block
638 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700639WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700640static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
641
Jeff Johnsone7245742012-09-05 17:12:55 -0700642const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700643
644/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700645WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700646void* WDI_GET_PAL_CTX( void )
647{
Jeff Johnsone7245742012-09-05 17:12:55 -0700648 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700649}/*WDI_GET_PAL_CTX*/
650
Jeff Johnsone7245742012-09-05 17:12:55 -0700651/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700652 Helper inline converters
653 ============================================================================*/
654/*Convert WDI driver type into HAL driver type*/
655WPT_STATIC WPT_INLINE WDI_Status
656WDI_HAL_2_WDI_STATUS
657(
658 eHalStatus halStatus
659);
660
661/*Convert WDI request type into HAL request type*/
662WPT_STATIC WPT_INLINE tHalHostMsgType
663WDI_2_HAL_REQ_TYPE
664(
665 WDI_RequestEnumType wdiReqType
666);
667
668/*Convert WDI response type into HAL response type*/
669WPT_STATIC WPT_INLINE WDI_ResponseEnumType
670HAL_2_WDI_RSP_TYPE
671(
672 tHalHostMsgType halMsg
673);
674
675/*Convert WDI driver type into HAL driver type*/
676WPT_STATIC WPT_INLINE tDriverType
677WDI_2_HAL_DRV_TYPE
678(
679 WDI_DriverType wdiDriverType
680);
681
682/*Convert WDI stop reason into HAL stop reason*/
683WPT_STATIC WPT_INLINE tHalStopType
684WDI_2_HAL_STOP_REASON
685(
686 WDI_StopType wdiStopType
687);
688
689/*Convert WDI scan mode type into HAL scan mode type*/
690WPT_STATIC WPT_INLINE eHalSysMode
691WDI_2_HAL_SCAN_MODE
692(
693 WDI_ScanMode wdiScanMode
694);
695
696/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700697WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700698WDI_2_HAL_SEC_CH_OFFSET
699(
700 WDI_HTSecondaryChannelOffset wdiSecChOffset
701);
702
703/*Convert WDI BSS type into HAL BSS type*/
704WPT_STATIC WPT_INLINE tSirBssType
705WDI_2_HAL_BSS_TYPE
706(
707 WDI_BssType wdiBSSType
708);
709
710/*Convert WDI NW type into HAL NW type*/
711WPT_STATIC WPT_INLINE tSirNwType
712WDI_2_HAL_NW_TYPE
713(
714 WDI_NwType wdiNWType
715);
716
717/*Convert WDI chanel bonding type into HAL cb type*/
718WPT_STATIC WPT_INLINE ePhyChanBondState
719WDI_2_HAL_CB_STATE
720(
721 WDI_PhyChanBondState wdiCbState
722);
723
724/*Convert WDI chanel bonding type into HAL cb type*/
725WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
726WDI_2_HAL_HT_OPER_MODE
727(
728 WDI_HTOperatingMode wdiHTOperMode
729);
730
731/*Convert WDI mimo PS type into HAL mimo PS type*/
732WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
733WDI_2_HAL_MIMO_PS
734(
735 WDI_HTMIMOPowerSaveState wdiHTOperMode
736);
737
738/*Convert WDI ENC type into HAL ENC type*/
739WPT_STATIC WPT_INLINE tAniEdType
740WDI_2_HAL_ENC_TYPE
741(
742 WDI_EncryptType wdiEncType
743);
744
745/*Convert WDI WEP type into HAL WEP type*/
746WPT_STATIC WPT_INLINE tAniWepType
747WDI_2_HAL_WEP_TYPE
748(
749 WDI_WepType wdiWEPType
750);
751
752/*Convert WDI Link State into HAL Link State*/
753WPT_STATIC WPT_INLINE tSirLinkState
754WDI_2_HAL_LINK_STATE
755(
756 WDI_LinkStateType wdiLinkState
757);
758
Jeff Johnsone7245742012-09-05 17:12:55 -0700759/*Translate a STA Context from WDI into HAL*/
760WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700761void
762WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700763(
Jeff Johnson295189b2012-06-20 16:38:30 -0700764 tConfigStaParams* phalConfigSta,
765 WDI_ConfigStaReqInfoType* pwdiConfigSta
766);
Jeff Johnsone7245742012-09-05 17:12:55 -0700767
768/*Translate a Rate set info from WDI into HAL*/
769WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700770WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700771(
Jeff Johnson295189b2012-06-20 16:38:30 -0700772 tSirMacRateSet* pHalRateSet,
773 WDI_RateSet* pwdiRateSet
774);
775
776/*Translate an EDCA Parameter Record from WDI into HAL*/
777WPT_STATIC WPT_INLINE void
778WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700779(
Jeff Johnson295189b2012-06-20 16:38:30 -0700780 tSirMacEdcaParamRecord* phalEdcaParam,
781 WDI_EdcaParamRecord* pWDIEdcaParam
782);
783
784/*Copy a management frame header from WDI fmt into HAL fmt*/
785WPT_STATIC WPT_INLINE void
786WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
787(
788 tSirMacMgmtHdr* pmacMgmtHdr,
789 WDI_MacMgmtHdr* pwdiMacMgmtHdr
790);
791
792/*Copy config bss parameters from WDI fmt into HAL fmt*/
793WPT_STATIC WPT_INLINE void
794WDI_CopyWDIConfigBSSToHALConfigBSS
795(
796 tConfigBssParams* phalConfigBSS,
797 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
798);
799
Jeff Johnsone7245742012-09-05 17:12:55 -0700800/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700801 pointed to by user data */
802WPT_STATIC WPT_INLINE void
803WDI_ExtractRequestCBFromEvent
804(
805 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700806 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700807 void** ppUserData
808);
809
810wpt_uint8
811WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700812(
Jeff Johnson295189b2012-06-20 16:38:30 -0700813 WDI_ControlBlockType* pWDICtx,
814 WDI_BSSSessionType** ppSession
815);
816
817void
818WDI_AddBcastSTAtoSTATable
819(
820 WDI_ControlBlockType* pWDICtx,
821 WDI_AddStaParams * staParams,
822 wpt_uint16 usBcastStaIdx
823);
824
825WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700826(
Jeff Johnson295189b2012-06-20 16:38:30 -0700827 WDI_ControlBlockType* pWDICtx,
828 WDI_EventInfoType* pEventData
829);
830
831void
832WDI_SetPowerStateCb
833(
834 wpt_status status,
835 unsigned int dxePhyAddr,
836 void *pContext
837);
838
839#define CASE_RETURN_STRING( str ) \
840 case ( ( str ) ): return( #str ); break \
841
842/**
843 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700844
845 @param wdiReqMsgId: WDI Message request Id
846
847 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700848 @return Result of the function call
849*/
850static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
851{
852 switch (wdiReqMsgId)
853 {
854 CASE_RETURN_STRING( WDI_START_REQ );
855 CASE_RETURN_STRING( WDI_STOP_REQ );
856 CASE_RETURN_STRING( WDI_CLOSE_REQ );
857 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
858 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
859 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
860 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
861 CASE_RETURN_STRING( WDI_JOIN_REQ );
862 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
863 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
864 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
865 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
866 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
867 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
868 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
869 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
870 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
871 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
872 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
873 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
874 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
875 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
876 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
877 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
878 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
879 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
880 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
881 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
882 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
883 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
884 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
885 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
886 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
887 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
888 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530889#ifdef FEATURE_WLAN_TDLS
890 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
891#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700892 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
893 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
894 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
895 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
896 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
897 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
898 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
899 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
900 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
901 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
902 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
903 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
904 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
905 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
906 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
907 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
908 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
909 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
910 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
911 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
912 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
913 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
914 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
915 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
916 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700917 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700918 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
919 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
920 #ifdef FEATURE_WLAN_SCAN_PNO
921 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
922 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
923 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
924 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700925#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700926 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700927#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700928 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
929 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
930 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
931 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
932 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
933 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
934 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
935 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
936 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800937 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800938 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700939#ifdef WLAN_FEATURE_11W
940 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
941#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700942 default:
943 return "Unknown WDI MessageId";
944 }
945}
946
947
948
949/**
950 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700951
952 @param wdiRespMsgId: WDI Message response Id
953
954 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700955 @return Result of the function call
956*/
957static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
958{
959 switch (wdiRespMsgId)
960 {
961 CASE_RETURN_STRING( WDI_START_RESP );
962 CASE_RETURN_STRING( WDI_STOP_RESP );
963 CASE_RETURN_STRING( WDI_CLOSE_RESP );
964 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
965 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
966 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
967 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
968 CASE_RETURN_STRING( WDI_JOIN_RESP );
969 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
970 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
971 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
972 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
973 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
974 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
975 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
976 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
977 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
978 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
979 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
980 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
981 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
982 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
983 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
984 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
985 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
986 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
987 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
988 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
989 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
990 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
991 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
992 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
993 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
994 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
995 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530996#ifdef FEATURE_WLAN_TDLS
997 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
998 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
999#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001000 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1001 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1002 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1003 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1004 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1005 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1006 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1007 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1008 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1009 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1010 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1011 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1012 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1013 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1014 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1015 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1016 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1017 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1018 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1019 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1020 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1021 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1022 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1023 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1024 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001025 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001026 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1027 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1028 #ifdef FEATURE_WLAN_SCAN_PNO
1029 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1030 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1031 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1032 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001033#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001034 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001035#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001036 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1037 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1038 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1039 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1040 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1041 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1042 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1043 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001044 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001045 default:
1046 return "Unknown WDI MessageId";
1047 }
1048}
1049
1050/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301051 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1052 Capability bitmap array.
1053 @param capabilityBitmap - Base address of Bitmap array
1054 @see
1055 @returns None
1056 */
1057void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1058{
1059 int i;
1060 char capStr[512];
1061 char *pCapStr = capStr;
1062 for (i = 0; i < 32; i++) {
1063 if ((*(capabilityBitmap + 0) & (1 << i))) {
1064 switch(i) {
1065 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1066 pCapStr += strlen("MCC");
1067 break;
1068 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1069 pCapStr += strlen("P2P");
1070 break;
1071 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1072 pCapStr += strlen("DOT11AC");
1073 break;
1074 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1075 pCapStr += strlen("SLM_SESSIONIZATION");
1076 break;
1077 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1078 pCapStr += strlen("DOT11AC_OPMODE");
1079 break;
1080 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1081 pCapStr += strlen("SAP32STA");
1082 break;
1083 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1084 pCapStr += strlen("TDLS");
1085 break;
1086 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1087 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1088 break;
1089 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1090 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1091 break;
1092 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1093 pCapStr += strlen("BEACON_OFFLOAD");
1094 break;
1095 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1096 pCapStr += strlen("SCAN_OFFLOAD");
1097 break;
1098 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1099 pCapStr += strlen("ROAM_OFFLOAD");
1100 break;
1101 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1102 pCapStr += strlen("BCN_MISS_OFFLOAD");
1103 break;
1104 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1105 pCapStr += strlen("STA_POWERSAVE");
1106 break;
1107 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1108 pCapStr += strlen("AP_UAPSD");
1109 break;
1110 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1111 pCapStr += strlen("AP_DFS");
1112 break;
1113 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1114 pCapStr += strlen("BLOCKACK");
1115 break;
1116 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1117 pCapStr += strlen("PHY_ERR");
1118 break;
1119 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1120 pCapStr += strlen("BCN_FILTER");
1121 break;
1122 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1123 pCapStr += strlen("RTT");
1124 break;
1125 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1126 pCapStr += strlen("RATECTRL");
1127 break;
1128 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1129 pCapStr += strlen("WOW");
1130 break;
1131 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1132 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1133 break;
1134 }
1135 *pCapStr++ = ',';
1136 *pCapStr++ = ' ';
1137 }
1138 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301139 pCapStr -= 2;
1140 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301141 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301143}
1144
1145/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001147
1148 @param halStatusId: HAL status Id
1149
1150 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001151 @return Result of the function call
1152*/
1153static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1154{
1155 switch (halStatusId)
1156 {
1157 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1158 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1159 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1160 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1161 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1162 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1163 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1164 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1165 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1166 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1167 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1168 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1169 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1170 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1171 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1172 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1173 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1174 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1175 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1176 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1177 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1178 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1179 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1180 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1181 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1182 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1183 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1184 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1185 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1186 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1187 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1188 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1189 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1190 default:
1191 return "Unknown HAL status";
1192 }
1193}
1194
Jeff Johnsone7245742012-09-05 17:12:55 -07001195/*========================================================================
1196
Jeff Johnson295189b2012-06-20 16:38:30 -07001197 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001198
Jeff Johnson295189b2012-06-20 16:38:30 -07001199==========================================================================*/
1200
1201/**
1202 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001203
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 DAL will allocate all the resources it needs. It will open PAL, it will also
1205 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001206 DXE/SMD or any other drivers that they need.
1207
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 @param pOSContext: pointer to the OS context provided by the UMAC
1209 will be passed on to PAL on Open
1210 ppWDIGlobalCtx: output pointer of Global Context
1211 pWdiDevCapability: output pointer of device capability
1212
1213 @return Result of the function call
1214*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001215WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001216WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001217(
Jeff Johnson295189b2012-06-20 16:38:30 -07001218 void* pOSContext,
1219 void** ppWDIGlobalCtx,
1220 WDI_DeviceCapabilityType* pWdiDevCapability,
1221 unsigned int driverType
1222)
1223{
1224 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001225 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001226 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001227 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1229
1230 /*---------------------------------------------------------------------
1231 Sanity check
1232 ---------------------------------------------------------------------*/
1233 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1234 {
1235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1236 "Invalid input parameters in WDI_Init");
1237
Jeff Johnsone7245742012-09-05 17:12:55 -07001238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001239 }
1240
1241 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001242 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 ---------------------------------------------------------------------*/
1244 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1245 {
1246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1247 "WDI module already initialized - return");
1248
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 }
1251
1252 /*Module is now initialized - this flag is to ensure the fact that multiple
1253 init will not happen on WDI
1254 !! - potential race does exist because read and set are not atomic,
1255 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001256 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001257
1258 /*Setup the control block */
1259 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001260 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001261
1262 /*Setup the STA Table*/
1263 wdiStatus = WDI_STATableInit(&gWDICb);
1264 if ( WDI_STATUS_SUCCESS != wdiStatus )
1265 {
1266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1267 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001268 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 goto fail_STATableInit;
1270 }
1271
1272 /*------------------------------------------------------------------------
1273 Open the PAL
1274 ------------------------------------------------------------------------*/
1275 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1276 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1277 {
1278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1279 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001280 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 goto fail_wpalOpen;
1282 }
1283
1284 /*Initialize main synchro mutex - it will be used to ensure integrity of
1285 the main WDI Control Block*/
1286 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1287 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1288 {
1289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1290 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001291 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001292 goto fail_mutex;
1293 }
1294
1295 /*Initialize the response timer - it will be used to time all messages
1296 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001297 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1298 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001299 &gWDICb);
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 response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001304 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001305 goto fail_timer;
1306 }
1307
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001308 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1309 WDI_SsrTimerCB,
1310 &gWDICb);
1311 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1312 {
1313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1314 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001315 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001316 goto fail_timer2;
1317 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001318 /* Initialize the WDI Pending Request Queue*/
1319 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1320 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1321 {
1322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1323 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001324 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 goto fail_pend_queue;
1326 }
1327
1328 /*Init WDI Pending Assoc Id Queue */
1329 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1330 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1331 {
1332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1333 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001334 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 goto fail_assoc_queue;
1336 }
1337
1338 /*Initialize the BSS sessions pending Queue */
1339 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1340 {
1341 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1342 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1343 {
1344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1345 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001346 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 goto fail_bss_queue;
1348 }
1349 }
1350
1351 /*Indicate the control block is sufficiently initialized for callbacks*/
1352 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1353
1354 /*------------------------------------------------------------------------
1355 Initialize the Data Path Utility Module
1356 ------------------------------------------------------------------------*/
1357 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1358 if ( WDI_STATUS_SUCCESS != wdiStatus )
1359 {
1360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1361 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001362 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001363 goto fail_dp_util_init;
1364 }
1365
1366 /* Init Set power state event */
1367 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001368 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 {
1370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1371 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001372 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001373 goto fail_power_event;
1374 }
1375
1376 /* Init WCTS action event */
1377 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001378 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001379 {
1380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1381 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001382 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 goto fail_wcts_event;
1384 }
1385
1386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001387 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001388 ------------------------------------------------------------------------*/
1389 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1390 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001391 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001392 wctsCBs.wctsRxMsgCBData = &gWDICb;
1393
Jeff Johnsone7245742012-09-05 17:12:55 -07001394 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001396 WDI_CT_CHANNEL_SIZE,
1397 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001398
1399 if ( NULL == gWDICb.wctsHandle )
1400 {
1401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001402 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 goto fail_wcts_open;
1404 }
1405
1406 gWDICb.driverMode = (tDriverType)driverType;
1407 /* FTM mode not need to open Transport Driver */
1408 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001409 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 /*------------------------------------------------------------------------
1411 Open the Data Transport
1412 ------------------------------------------------------------------------*/
1413 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1414 {
1415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001416 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001417 goto fail_wdts_open;
1418 }
1419 }
1420
1421 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001422 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001423
1424 /*Send the context as a ptr to the global WDI Control Block*/
1425 *ppWDIGlobalCtx = &gWDICb;
1426
1427 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001428 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001429 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1430 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1431 return WDI_STATUS_SUCCESS;
1432
1433 /* ERROR handlers
1434 Undo everything that completed successfully */
1435
1436 fail_wdts_open:
1437 {
1438 wpt_status eventStatus;
1439
1440 /* Closing WCTS in this scenario is tricky since it has to close
1441 the SMD channel and then we get notified asynchronously when
1442 the channel has been closed. So we take some of the logic from
1443 the "normal" close procedure in WDI_Close()
1444 */
1445
1446 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001447 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 {
1449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001450 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 }
1452
1453 WCTS_CloseTransport(gWDICb.wctsHandle);
1454
1455 /* Wait for WCTS to close the control transport. If we were able
1456 to reset the event flag, then we'll wait for the event,
1457 otherwise we'll wait for a maximum amount of time required for
1458 the channel to be closed */
1459 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1460 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001461 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001462 WDI_WCTS_ACTION_TIMEOUT);
1463 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1464 {
1465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001466 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001467 }
1468 }
1469 else
1470 {
1471 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1472 }
1473 }
1474 fail_wcts_open:
1475 wpalEventDelete(&gWDICb.wctsActionEvent);
1476 fail_wcts_event:
1477 wpalEventDelete(&gWDICb.setPowerStateEvent);
1478 fail_power_event:
1479 WDI_DP_UtilsExit(&gWDICb);
1480 fail_dp_util_init:
1481 gWDICb.magic = 0;
1482 fail_bss_queue:
1483 /* entries 0 thru i-1 were successfully initialized */
1484 while (0 < i)
1485 {
1486 i--;
1487 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1488 }
1489 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1490 fail_assoc_queue:
1491 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1492 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001493 wpalTimerDelete(&gWDICb.ssrTimer);
1494 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001495 wpalTimerDelete(&gWDICb.wptResponseTimer);
1496 fail_timer:
1497 wpalMutexDelete(&gWDICb.wptMutex);
1498 fail_mutex:
1499 wpalClose(gWDICb.pPALContext);
1500 fail_wpalOpen:
1501 WDI_STATableClose(&gWDICb);
1502 fail_STATableInit:
1503 gWDIInitialized = eWLAN_PAL_FALSE;
1504
1505 return WDI_STATUS_E_FAILURE;
1506
1507}/*WDI_Init*/;
1508
1509/**
1510 @brief WDI_Start will be called when the upper MAC is ready to
1511 commence operation with the WLAN Device. Upon the call
1512 of this API the WLAN DAL will pack and send a HAL Start
1513 message to the lower RIVA sub-system if the SMD channel
1514 has been fully opened and the RIVA subsystem is up.
1515
1516 If the RIVA sub-system is not yet up and running DAL
1517 will queue the request for Open and will wait for the
1518 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001519 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001520
1521 WDI_Init must have been called.
1522
Jeff Johnsone7245742012-09-05 17:12:55 -07001523 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001525
Jeff Johnson295189b2012-06-20 16:38:30 -07001526 wdiStartRspCb: callback for passing back the response of
1527 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001528
Jeff Johnson295189b2012-06-20 16:38:30 -07001529 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001530 callback
1531
Jeff Johnson295189b2012-06-20 16:38:30 -07001532 @see WDI_Start
1533 @return Result of the function call
1534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001536WDI_Start
1537(
1538 WDI_StartReqParamsType* pwdiStartParams,
1539 WDI_StartRspCb wdiStartRspCb,
1540 void* pUserData
1541)
1542{
1543 WDI_EventInfoType wdiEventData;
1544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1545
1546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001548 ------------------------------------------------------------------------*/
1549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1550 {
1551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1552 "WDI API call before module is initialized - Fail request");
1553
Jeff Johnsone7245742012-09-05 17:12:55 -07001554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 }
1556
1557 /*------------------------------------------------------------------------
1558 Fill in Event data and post to the Main FSM
1559 ------------------------------------------------------------------------*/
1560 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001561 wdiEventData.pEventData = pwdiStartParams;
1562 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1563 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 wdiEventData.pUserData = pUserData;
1565
1566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1567
1568}/*WDI_Start*/
1569
1570/**
1571 @brief WDI_Stop will be called when the upper MAC is ready to
1572 stop any operation with the WLAN Device. Upon the call
1573 of this API the WLAN DAL will pack and send a HAL Stop
1574 message to the lower RIVA sub-system if the DAL Core is
1575 in started state.
1576
1577 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001578
1579 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001580
1581 WDI_Start must have been called.
1582
Jeff Johnsone7245742012-09-05 17:12:55 -07001583 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001585
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 wdiStopRspCb: callback for passing back the response of
1587 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001588
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 callback
1591
Jeff Johnson295189b2012-06-20 16:38:30 -07001592 @see WDI_Start
1593 @return Result of the function call
1594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001596WDI_Stop
1597(
1598 WDI_StopReqParamsType* pwdiStopParams,
1599 WDI_StopRspCb wdiStopRspCb,
1600 void* pUserData
1601)
1602{
1603 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001604 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1606
1607 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 ------------------------------------------------------------------------*/
1610 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1611 {
1612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1613 "WDI API call before module is initialized - Fail request");
1614
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001616 }
1617
Jeff Johnson43971f52012-07-17 12:26:56 -07001618 /*Access to the global state must be locked before cleaning */
1619 wpalMutexAcquire(&pWDICtx->wptMutex);
1620
1621 /*Clear all pending request*/
1622 WDI_ClearPendingRequests(pWDICtx);
1623
1624 /*We have completed cleaning unlock now*/
1625 wpalMutexRelease(&pWDICtx->wptMutex);
1626
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 /* Free the global variables */
1628 wpalMemoryFree(gpHostWlanFeatCaps);
1629 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001630 gpHostWlanFeatCaps = NULL;
1631 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001632
1633 /*------------------------------------------------------------------------
1634 Fill in Event data and post to the Main FSM
1635 ------------------------------------------------------------------------*/
1636 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001637 wdiEventData.pEventData = pwdiStopParams;
1638 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1639 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001640 wdiEventData.pUserData = pUserData;
1641
1642 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1643
1644}/*WDI_Stop*/
1645
1646
1647
1648/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001649 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001650 needs to interact with DAL. DAL will free its control
1651 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001652
1653 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001654
1655 WDI_Stop must have been called.
1656
1657 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001658
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 @see WDI_Stop
1660 @return Result of the function call
1661*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001662WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001663WDI_Close
1664(
1665 void
1666)
1667{
1668 wpt_uint8 i;
1669 WDI_EventInfoType wdiEventData;
1670 wpt_status wptStatus;
1671 wpt_status eventStatus;
1672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1673
1674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001676 ------------------------------------------------------------------------*/
1677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1678 {
1679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1680 "WDI API call before module is initialized - Fail request");
1681
Jeff Johnsone7245742012-09-05 17:12:55 -07001682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001683 }
1684
1685 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1686 (the control transport will be closed by the FSM and we'll want
1687 to wait until that completes)*/
1688 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001689 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 {
1691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001692 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001693 /* fall through and try to finish closing via the FSM */
1694 }
1695
1696 /*------------------------------------------------------------------------
1697 Fill in Event data and post to the Main FSM
1698 ------------------------------------------------------------------------*/
1699 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001700 wdiEventData.pEventData = NULL;
1701 wdiEventData.uEventDataSize = 0;
1702 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 wdiEventData.pUserData = NULL;
1704
1705 gWDIInitialized = eWLAN_PAL_FALSE;
1706
1707 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1708
1709 /*Wait for WCTS to close the control transport
1710 (but only if we were able to reset the event flag*/
1711 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1712 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001713 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 WDI_WCTS_ACTION_TIMEOUT);
1715 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1716 {
1717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001718 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 }
1720 }
1721
1722 /* Destroy the WCTS action event */
1723 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1724 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1725 {
1726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1727 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001728 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001729 }
1730
1731 /* Destroy the Set Power State event */
1732 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1733 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1734 {
1735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1736 "WDI Close failed to destroy an event");
1737
Jeff Johnsone7245742012-09-05 17:12:55 -07001738 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 }
1740
1741 /*------------------------------------------------------------------------
1742 Closes the Data Path Utility Module
1743 ------------------------------------------------------------------------*/
1744 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1745 {
1746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1747 "WDI Init failed to close the DP Util Module");
1748
Jeff Johnsone7245742012-09-05 17:12:55 -07001749 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001750 }
1751
1752 /*destroy the BSS sessions pending Queue */
1753 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1754 {
1755 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1756 }
1757
1758 /* destroy the WDI Pending Assoc Id Request Queue*/
1759 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1760
1761 /* destroy the WDI Pending Request Queue*/
1762 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001763
Jeff Johnson295189b2012-06-20 16:38:30 -07001764 /*destroy the response timer */
1765 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1766
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001767 /*destroy the SSR timer */
1768 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1769
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 /*invalidate the main synchro mutex */
1771 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1772 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1775 "Failed to delete mutex %d", wptStatus);
1776 WDI_ASSERT(0);
1777 }
1778
1779 /*Clear control block. note that this will clear the "magic"
1780 which will inhibit all asynchronous callbacks*/
1781 WDI_CleanCB(&gWDICb);
1782
1783 return wptStatus;
1784
1785}/*WDI_Close*/
1786
1787/**
1788 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1789 This will do most of the WDI stop & close
1790 operations without doing any handshake with Riva
1791
1792 This will also make sure that the control transport
1793 will NOT be closed.
1794
1795 This request will not be queued.
1796
1797
1798 WDI_Start must have been called.
1799
1800 @param closeTransport: Close control channel if this is set
1801
1802 @return Result of the function call
1803*/
1804WDI_Status
1805WDI_Shutdown
1806(
1807 wpt_boolean closeTransport
1808)
1809{
1810 WDI_EventInfoType wdiEventData;
1811 wpt_status wptStatus;
1812 int i = 0;
1813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1814
1815 /*------------------------------------------------------------------------
1816 Sanity Check
1817 ------------------------------------------------------------------------*/
1818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1819 {
1820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1821 "WDI API call before module is initialized - Fail request");
1822
1823 return WDI_STATUS_E_NOT_ALLOWED;
1824 }
1825
1826 /*------------------------------------------------------------------------
1827 Fill in Event data and post to the Main FSM
1828 ------------------------------------------------------------------------*/
1829 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1830 wdiEventData.pEventData = NULL;
1831 wdiEventData.uEventDataSize = 0;
1832
1833 /* Shutdown will not be queued, if the state is busy timer will be
1834 * stopped & this message will be processed.*/
1835 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1836 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1837 {
1838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001839 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001840 }
1841 /* Destroy the Set Power State event */
1842 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1843 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1844 {
1845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1846 "WDI Close failed to destroy an event");
1847
1848 WDI_ASSERT(0);
1849 }
1850 /*------------------------------------------------------------------------
1851 Closes the Data Path Utility Module
1852 ------------------------------------------------------------------------*/
1853 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1854 {
1855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1856 "WDI Init failed to close the DP Util Module");
1857
1858 WDI_ASSERT(0);
1859 }
1860 if ( closeTransport )
1861 {
1862 /* Close control transport, called from module unload */
1863 WCTS_CloseTransport(gWDICb.wctsHandle);
1864 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001865 else
1866 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001867 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001868 the pending messages in the transport queue */
1869 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1870 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001871 /*destroy the BSS sessions pending Queue */
1872 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1873 {
1874 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1875 }
1876
1877 /* destroy the WDI Pending Assoc Id Request Queue*/
1878 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1879 /* destroy the WDI Pending Request Queue*/
1880 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1881 /*destroy the response timer */
1882 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001883 /*destroy the SSR timer */
1884 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001885
1886 /*invalidate the main synchro mutex */
1887 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1888 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1889 {
1890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001891 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 WDI_ASSERT(0);
1893 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001894 /* Free the global variables */
1895 wpalMemoryFree(gpHostWlanFeatCaps);
1896 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001897 gpHostWlanFeatCaps = NULL;
1898 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 /*Clear control block. note that this will clear the "magic"
1900 which will inhibit all asynchronous callbacks*/
1901 WDI_CleanCB(&gWDICb);
1902 return wptStatus;
1903
1904}/*WDI_Shutdown*/
1905
1906
Jeff Johnsone7245742012-09-05 17:12:55 -07001907/*========================================================================
1908
Jeff Johnson295189b2012-06-20 16:38:30 -07001909 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001910
Jeff Johnson295189b2012-06-20 16:38:30 -07001911==========================================================================*/
1912
1913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001914 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 the WLAN Device to get ready for a scan procedure. Upon
1916 the call of this API the WLAN DAL will pack and send a
1917 HAL Init Scan request message to the lower RIVA
1918 sub-system if DAL is in state STARTED.
1919
1920 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001921 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001922
1923 WDI_Start must have been called.
1924
1925 @param wdiInitScanParams: the init scan parameters as specified
1926 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001927
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 wdiInitScanRspCb: callback for passing back the response
1929 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001930
Jeff Johnson295189b2012-06-20 16:38:30 -07001931 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001932 callback
1933
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 @see WDI_Start
1935 @return Result of the function call
1936*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001937WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001938WDI_InitScanReq
1939(
1940 WDI_InitScanReqParamsType* pwdiInitScanParams,
1941 WDI_InitScanRspCb wdiInitScanRspCb,
1942 void* pUserData
1943)
1944{
1945 WDI_EventInfoType wdiEventData;
1946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1947
1948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 ------------------------------------------------------------------------*/
1951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1952 {
1953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1954 "WDI API call before module is initialized - Fail request");
1955
Jeff Johnsone7245742012-09-05 17:12:55 -07001956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 }
1958
1959 /*------------------------------------------------------------------------
1960 Fill in Event data and post to the Main FSM
1961 ------------------------------------------------------------------------*/
1962 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001963 wdiEventData.pEventData = pwdiInitScanParams;
1964 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1965 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001966 wdiEventData.pUserData = pUserData;
1967
1968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1969
1970}/*WDI_InitScanReq*/
1971
1972/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001973 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 wishes to change the Scan channel on the WLAN Device.
1975 Upon the call of this API the WLAN DAL will pack and
1976 send a HAL Start Scan request message to the lower RIVA
1977 sub-system if DAL is in state STARTED.
1978
1979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001981
1982 WDI_InitScanReq must have been called.
1983
Jeff Johnsone7245742012-09-05 17:12:55 -07001984 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001985 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001986
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 wdiStartScanRspCb: callback for passing back the
1988 response of the start scan operation received from the
1989 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001990
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 callback
1993
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 @see WDI_InitScanReq
1995 @return Result of the function call
1996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001998WDI_StartScanReq
1999(
2000 WDI_StartScanReqParamsType* pwdiStartScanParams,
2001 WDI_StartScanRspCb wdiStartScanRspCb,
2002 void* pUserData
2003)
2004{
2005 WDI_EventInfoType wdiEventData;
2006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007
2008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 ------------------------------------------------------------------------*/
2011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2012 {
2013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2014 "WDI API call before module is initialized - Fail request");
2015
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 }
2018
2019 /*------------------------------------------------------------------------
2020 Fill in Event data and post to the Main FSM
2021 ------------------------------------------------------------------------*/
2022 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 wdiEventData.pEventData = pwdiStartScanParams;
2024 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2025 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002026 wdiEventData.pUserData = pUserData;
2027
2028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2029
2030}/*WDI_StartScanReq*/
2031
2032
2033/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 wants to end scanning for a particular channel that it
2036 had set before by calling Scan Start on the WLAN Device.
2037 Upon the call of this API the WLAN DAL will pack and
2038 send a HAL End Scan request message to the lower RIVA
2039 sub-system if DAL is in state STARTED.
2040
2041 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002042 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002043
2044 WDI_StartScanReq must have been called.
2045
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002047 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002048
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 wdiEndScanRspCb: callback for passing back the response
2050 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002051
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 callback
2054
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 @see WDI_StartScanReq
2056 @return Result of the function call
2057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002059WDI_EndScanReq
2060(
2061 WDI_EndScanReqParamsType* pwdiEndScanParams,
2062 WDI_EndScanRspCb wdiEndScanRspCb,
2063 void* pUserData
2064)
2065{
2066 WDI_EventInfoType wdiEventData;
2067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2068
2069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 ------------------------------------------------------------------------*/
2072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2073 {
2074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2075 "WDI API call before module is initialized - Fail request");
2076
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 }
2079
2080 /*------------------------------------------------------------------------
2081 Fill in Event data and post to the Main FSM
2082 ------------------------------------------------------------------------*/
2083 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 wdiEventData.pEventData = pwdiEndScanParams;
2085 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2086 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002087 wdiEventData.pUserData = pUserData;
2088
2089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2090
2091}/*WDI_EndScanReq*/
2092
2093
2094/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002096 completed the scan process on the WLAN Device. Upon the
2097 call of this API the WLAN DAL will pack and send a HAL
2098 Finish Scan Request request message to the lower RIVA
2099 sub-system if DAL is in state STARTED.
2100
2101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002103
2104 WDI_InitScanReq must have been called.
2105
Jeff Johnsone7245742012-09-05 17:12:55 -07002106 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002108
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 wdiFinishScanRspCb: callback for passing back the
2110 response of the finish scan operation received from the
2111 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002112
Jeff Johnson295189b2012-06-20 16:38:30 -07002113 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002114 callback
2115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 @see WDI_InitScanReq
2117 @return Result of the function call
2118*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002119WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002120WDI_FinishScanReq
2121(
2122 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2123 WDI_FinishScanRspCb wdiFinishScanRspCb,
2124 void* pUserData
2125)
2126{
2127 WDI_EventInfoType wdiEventData;
2128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2129
2130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002131 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002132 ------------------------------------------------------------------------*/
2133 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2134 {
2135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2136 "WDI API call before module is initialized - Fail request");
2137
Jeff Johnsone7245742012-09-05 17:12:55 -07002138 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 }
2140
2141 /*------------------------------------------------------------------------
2142 Fill in Event data and post to the Main FSM
2143 ------------------------------------------------------------------------*/
2144 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002145 wdiEventData.pEventData = pwdiFinishScanParams;
2146 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2147 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002148 wdiEventData.pUserData = pUserData;
2149
2150 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2151
2152}/*WDI_FinishScanReq*/
2153
Jeff Johnsone7245742012-09-05 17:12:55 -07002154/*========================================================================
2155
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002157
Jeff Johnson295189b2012-06-20 16:38:30 -07002158==========================================================================*/
2159
2160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 to start an association procedure to a BSS. Upon the
2163 call of this API the WLAN DAL will pack and send a HAL
2164 Join request message to the lower RIVA sub-system if
2165 DAL is in state STARTED.
2166
2167 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002169
2170 WDI_Start must have been called.
2171
Jeff Johnsone7245742012-09-05 17:12:55 -07002172 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002173 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002174
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 wdiJoinRspCb: callback for passing back the response of
2176 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002177
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002179 callback
2180
Jeff Johnson295189b2012-06-20 16:38:30 -07002181 @see WDI_Start
2182 @return Result of the function call
2183*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002185WDI_JoinReq
2186(
2187 WDI_JoinReqParamsType* pwdiJoinParams,
2188 WDI_JoinRspCb wdiJoinRspCb,
2189 void* pUserData
2190)
2191{
2192 WDI_EventInfoType wdiEventData;
2193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2194
2195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 ------------------------------------------------------------------------*/
2198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2199 {
2200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2201 "WDI API call before module is initialized - Fail request");
2202
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 }
2205
2206 /*------------------------------------------------------------------------
2207 Fill in Event data and post to the Main FSM
2208 ------------------------------------------------------------------------*/
2209 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 wdiEventData.pEventData = pwdiJoinParams;
2211 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2212 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 wdiEventData.pUserData = pUserData;
2214
2215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2216
2217}/*WDI_JoinReq*/
2218
2219/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002220 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 wishes to configure the newly acquired or in process of
2222 being acquired BSS to the HW . Upon the call of this API
2223 the WLAN DAL will pack and send a HAL Config BSS request
2224 message to the lower RIVA sub-system if DAL is in state
2225 STARTED.
2226
2227 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002228 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002229
2230 WDI_JoinReq must have been called.
2231
Jeff Johnsone7245742012-09-05 17:12:55 -07002232 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002233 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002234
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 wdiConfigBSSRspCb: callback for passing back the
2236 response of the config BSS operation received from the
2237 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002238
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 callback
2241
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 @see WDI_JoinReq
2243 @return Result of the function call
2244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002246WDI_ConfigBSSReq
2247(
2248 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2249 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2250 void* pUserData
2251)
2252{
2253 WDI_EventInfoType wdiEventData;
2254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2255
2256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 ------------------------------------------------------------------------*/
2259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2260 {
2261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2262 "WDI API call before module is initialized - Fail request");
2263
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 }
2266
2267 /*------------------------------------------------------------------------
2268 Fill in Event data and post to the Main FSM
2269 ------------------------------------------------------------------------*/
2270 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 wdiEventData.pEventData = pwdiConfigBSSParams;
2272 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2273 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 wdiEventData.pUserData = pUserData;
2275
2276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2277
2278}/*WDI_ConfigBSSReq*/
2279
2280/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 disassociating from the BSS and wishes to notify HW.
2283 Upon the call of this API the WLAN DAL will pack and
2284 send a HAL Del BSS request message to the lower RIVA
2285 sub-system if DAL is in state STARTED.
2286
2287 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002289
2290 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2291
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002294
Jeff Johnson295189b2012-06-20 16:38:30 -07002295 wdiDelBSSRspCb: callback for passing back the response
2296 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002297
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002299 callback
2300
2301 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 @return Result of the function call
2303*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002304WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002305WDI_DelBSSReq
2306(
2307 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2308 WDI_DelBSSRspCb wdiDelBSSRspCb,
2309 void* pUserData
2310)
2311{
2312 WDI_EventInfoType wdiEventData;
2313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2314
2315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002316 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002317 ------------------------------------------------------------------------*/
2318 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2319 {
2320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2321 "WDI API call before module is initialized - Fail request");
2322
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 }
2325
2326 /*------------------------------------------------------------------------
2327 Fill in Event data and post to the Main FSM
2328 ------------------------------------------------------------------------*/
2329 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 wdiEventData.pEventData = pwdiDelBSSParams;
2331 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2332 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002333 wdiEventData.pUserData = pUserData;
2334
2335 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2336
2337}/*WDI_DelBSSReq*/
2338
2339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002340 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 associated to a BSS and wishes to configure HW for
2342 associated state. Upon the call of this API the WLAN DAL
2343 will pack and send a HAL Post Assoc request message to
2344 the lower RIVA sub-system if DAL is in state STARTED.
2345
2346 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002347 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002348
2349 WDI_JoinReq must have been called.
2350
2351 @param wdiPostAssocReqParams: the assoc parameters as specified
2352 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002353
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 wdiPostAssocRspCb: callback for passing back the
2355 response of the post assoc operation received from the
2356 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002357
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 callback
2360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 @see WDI_JoinReq
2362 @return Result of the function call
2363*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002364WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002365WDI_PostAssocReq
2366(
2367 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2368 WDI_PostAssocRspCb wdiPostAssocRspCb,
2369 void* pUserData
2370)
2371{
2372 WDI_EventInfoType wdiEventData;
2373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2374
2375 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002376 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 ------------------------------------------------------------------------*/
2378 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2379 {
2380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2381 "WDI API call before module is initialized - Fail request");
2382
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 }
2385
2386 /*------------------------------------------------------------------------
2387 Fill in Event data and post to the Main FSM
2388 ------------------------------------------------------------------------*/
2389 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 wdiEventData.pEventData = pwdiPostAssocReqParams;
2391 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2392 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 wdiEventData.pUserData = pUserData;
2394
2395 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2396
2397}/*WDI_PostAssocReq*/
2398
2399/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002400 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 association with another STA has ended and the station
2402 must be deleted from HW. Upon the call of this API the
2403 WLAN DAL will pack and send a HAL Del STA request
2404 message to the lower RIVA sub-system if DAL is in state
2405 STARTED.
2406
2407 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002409
2410 WDI_PostAssocReq must have been called.
2411
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 wdiDelSTARspCb: callback for passing back the response
2416 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002417
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 callback
2420
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 @see WDI_PostAssocReq
2422 @return Result of the function call
2423*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002425WDI_DelSTAReq
2426(
2427 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2428 WDI_DelSTARspCb wdiDelSTARspCb,
2429 void* pUserData
2430)
2431{
2432 WDI_EventInfoType wdiEventData;
2433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2434
2435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 ------------------------------------------------------------------------*/
2438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2439 {
2440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2441 "WDI API call before module is initialized - Fail request");
2442
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 }
2445
2446 /*------------------------------------------------------------------------
2447 Fill in Event data and post to the Main FSM
2448 ------------------------------------------------------------------------*/
2449 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 wdiEventData.pEventData = pwdiDelSTAParams;
2451 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2452 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 wdiEventData.pUserData = pUserData;
2454
2455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2456
2457}/*WDI_DelSTAReq*/
2458
Jeff Johnsone7245742012-09-05 17:12:55 -07002459/*========================================================================
2460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002462
Jeff Johnson295189b2012-06-20 16:38:30 -07002463==========================================================================*/
2464
2465/**
2466 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2467 install a BSS encryption key on the HW. Upon the call of this
2468 API the WLAN DAL will pack and send a Set BSS Key request
2469 message to the lower RIVA sub-system if DAL is in state
2470 STARTED.
2471
2472 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002474
2475 WDI_PostAssocReq must have been called.
2476
Jeff Johnsone7245742012-09-05 17:12:55 -07002477 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002479
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 wdiSetBSSKeyRspCb: callback for passing back the
2481 response of the set BSS Key operation received from the
2482 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002483
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002485 callback
2486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 @see WDI_PostAssocReq
2488 @return Result of the function call
2489*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002490WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002491WDI_SetBSSKeyReq
2492(
2493 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2494 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2495 void* pUserData
2496)
2497{
2498 WDI_EventInfoType wdiEventData;
2499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2500
2501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 ------------------------------------------------------------------------*/
2504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2505 {
2506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2507 "WDI API call before module is initialized - Fail request");
2508
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 }
2511
2512 /*------------------------------------------------------------------------
2513 Fill in Event data and post to the Main FSM
2514 ------------------------------------------------------------------------*/
2515 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002516 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2517 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2518 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 wdiEventData.pUserData = pUserData;
2520
2521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2522
2523}/*WDI_SetBSSKeyReq*/
2524
2525/**
2526 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2527 uninstall a BSS key from HW. Upon the call of this API the
2528 WLAN DAL will pack and send a HAL Remove BSS Key request
2529 message to the lower RIVA sub-system if DAL is in state
2530 STARTED.
2531
2532 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002533 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002534
2535 WDI_SetBSSKeyReq must have been called.
2536
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 wdiRemoveBSSKeyRspCb: callback for passing back the
2541 response of the remove BSS key operation received from
2542 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002543
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 callback
2546
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 @see WDI_SetBSSKeyReq
2548 @return Result of the function call
2549*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002550WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002551WDI_RemoveBSSKeyReq
2552(
2553 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2554 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2555 void* pUserData
2556)
2557{
2558 WDI_EventInfoType wdiEventData;
2559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2560
2561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 ------------------------------------------------------------------------*/
2564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2565 {
2566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2567 "WDI API call before module is initialized - Fail request");
2568
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 }
2571
2572 /*------------------------------------------------------------------------
2573 Fill in Event data and post to the Main FSM
2574 ------------------------------------------------------------------------*/
2575 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2577 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2578 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002579 wdiEventData.pUserData = pUserData;
2580
2581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2582
2583}/*WDI_RemoveBSSKeyReq*/
2584
2585
2586/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 ready to install a STA(ast) encryption key in HW. Upon
2589 the call of this API the WLAN DAL will pack and send a
2590 HAL Set STA Key request message to the lower RIVA
2591 sub-system if DAL is in state STARTED.
2592
2593 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002595
2596 WDI_PostAssocReq must have been called.
2597
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 wdiSetSTAKeyRspCb: callback for passing back the
2602 response of the set STA key operation received from the
2603 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002604
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 callback
2607
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 @see WDI_PostAssocReq
2609 @return Result of the function call
2610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002612WDI_SetSTAKeyReq
2613(
2614 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2615 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2616 void* pUserData
2617)
2618{
2619 WDI_EventInfoType wdiEventData;
2620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2621
2622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 ------------------------------------------------------------------------*/
2625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2626 {
2627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2628 "WDI API call before module is initialized - Fail request");
2629
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002631 }
2632
2633 /*------------------------------------------------------------------------
2634 Fill in Event data and post to the Main FSM
2635 ------------------------------------------------------------------------*/
2636 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2638 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2639 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002640 wdiEventData.pUserData = pUserData;
2641
2642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2643
2644}/*WDI_SetSTAKeyReq*/
2645
2646
2647/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 wants to uninstall a previously set STA key in HW. Upon
2650 the call of this API the WLAN DAL will pack and send a
2651 HAL Remove STA Key request message to the lower RIVA
2652 sub-system if DAL is in state STARTED.
2653
2654 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002656
2657 WDI_SetSTAKeyReq must have been called.
2658
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 wdiRemoveSTAKeyRspCb: callback for passing back the
2663 response of the remove STA key operation received from
2664 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002665
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 callback
2668
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 @see WDI_SetSTAKeyReq
2670 @return Result of the function call
2671*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002672WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002673WDI_RemoveSTAKeyReq
2674(
2675 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2676 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2677 void* pUserData
2678)
2679{
2680 WDI_EventInfoType wdiEventData;
2681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2682
2683 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 ------------------------------------------------------------------------*/
2686 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2687 {
2688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2689 "WDI API call before module is initialized - Fail request");
2690
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 }
2693
2694 /*------------------------------------------------------------------------
2695 Fill in Event data and post to the Main FSM
2696 ------------------------------------------------------------------------*/
2697 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002698 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2699 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2700 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002701 wdiEventData.pUserData = pUserData;
2702
2703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2704
2705}/*WDI_RemoveSTAKeyReq*/
2706
2707
2708/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 wants to install a STA Bcast encryption key on the HW.
2711 Upon the call of this API the WLAN DAL will pack and
2712 send a HAL Start request message to the lower RIVA
2713 sub-system if DAL is in state STARTED.
2714
2715 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002717
2718 WDI_PostAssocReq must have been called.
2719
Jeff Johnsone7245742012-09-05 17:12:55 -07002720 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002722
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 wdiSetSTABcastKeyRspCb: callback for passing back the
2724 response of the set BSS Key operation received from the
2725 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002726
Jeff Johnson295189b2012-06-20 16:38:30 -07002727 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 callback
2729
Jeff Johnson295189b2012-06-20 16:38:30 -07002730 @see WDI_PostAssocReq
2731 @return Result of the function call
2732*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002734WDI_SetSTABcastKeyReq
2735(
2736 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2737 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2738 void* pUserData
2739)
2740
2741{
2742 WDI_EventInfoType wdiEventData;
2743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2744
2745 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 ------------------------------------------------------------------------*/
2748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2749 {
2750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2751 "WDI API call before module is initialized - Fail request");
2752
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 }
2755
2756 /*------------------------------------------------------------------------
2757 Fill in Event data and post to the Main FSM
2758 ------------------------------------------------------------------------*/
2759 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2761 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2762 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 wdiEventData.pUserData = pUserData;
2764
2765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2766
2767}/*WDI_SetSTABcastKeyReq*/
2768
2769/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 MAC wants to uninstall a STA Bcast key from HW. Upon the
2772 call of this API the WLAN DAL will pack and send a HAL
2773 Remove STA Bcast Key request message to the lower RIVA
2774 sub-system if DAL is in state STARTED.
2775
2776 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002777 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002778
2779 WDI_SetSTABcastKeyReq must have been called.
2780
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 parameters as specified by the Device
2783 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002784
Jeff Johnson295189b2012-06-20 16:38:30 -07002785 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2786 response of the remove STA Bcast key operation received
2787 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002788
Jeff Johnson295189b2012-06-20 16:38:30 -07002789 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 callback
2791
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 @see WDI_SetSTABcastKeyReq
2793 @return Result of the function call
2794*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002795WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002796WDI_RemoveSTABcastKeyReq
2797(
2798 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2799 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2800 void* pUserData
2801)
2802{
2803 WDI_EventInfoType wdiEventData;
2804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2805
2806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002807 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 ------------------------------------------------------------------------*/
2809 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2810 {
2811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2812 "WDI API call before module is initialized - Fail request");
2813
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 }
2816
2817 /*------------------------------------------------------------------------
2818 Fill in Event data and post to the Main FSM
2819 ------------------------------------------------------------------------*/
2820 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2822 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2823 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 wdiEventData.pUserData = pUserData;
2825
2826 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2827
2828}/*WDI_RemoveSTABcastKeyReq*/
2829
2830/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 MAC wants to set Max Tx Power to HW. Upon the
2833 call of this API the WLAN DAL will pack and send a HAL
2834 Remove STA Bcast Key request message to the lower RIVA
2835 sub-system if DAL is in state STARTED.
2836
2837 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002838 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002839
2840 WDI_SetSTABcastKeyReq must have been called.
2841
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 parameters as specified by the Device
2844 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2847 response of the remove STA Bcast key operation received
2848 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002849
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 callback
2852
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 @see WDI_SetMaxTxPowerReq
2854 @return Result of the function call
2855*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002856WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002857WDI_SetMaxTxPowerReq
2858(
2859 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2860 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2861 void* pUserData
2862)
2863{
2864 WDI_EventInfoType wdiEventData;
2865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2866
2867 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 ------------------------------------------------------------------------*/
2870 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2871 {
2872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2873 "WDI API call before module is initialized - Fail request");
2874
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 }
2877
2878 /*------------------------------------------------------------------------
2879 Fill in Event data and post to the Main FSM
2880 ------------------------------------------------------------------------*/
2881 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2883 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2884 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 wdiEventData.pUserData = pUserData;
2886
2887 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2888}
2889
schang86c22c42013-03-13 18:41:24 -07002890/**
2891 @brief WDI_SetTxPowerReq will be called when the upper
2892 MAC wants to set Tx Power to HW.
2893 In state BUSY this request will be queued. Request won't
2894 be allowed in any other state.
2895
2896
2897 @param pwdiSetTxPowerParams: set TS Power parameters
2898 BSSID and target TX Power with dbm included
2899
2900 wdiReqStatusCb: callback for passing back the response
2901
2902 pUserData: user data will be passed back with the
2903 callback
2904
2905 @return Result of the function call
2906*/
2907WDI_Status
2908WDI_SetTxPowerReq
2909(
2910 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2911 WDA_SetTxPowerRspCb wdiReqStatusCb,
2912 void* pUserData
2913)
2914{
2915 WDI_EventInfoType wdiEventData;
2916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2917
2918 /*------------------------------------------------------------------------
2919 Sanity Check
2920 ------------------------------------------------------------------------*/
2921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2922 {
2923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2924 "WDI API call before module is initialized - Fail request");
2925
2926 return WDI_STATUS_E_NOT_ALLOWED;
2927 }
2928
2929 /*------------------------------------------------------------------------
2930 Fill in Event data and post to the Main FSM
2931 ------------------------------------------------------------------------*/
2932 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2933 wdiEventData.pEventData = pwdiSetTxPowerParams;
2934 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2935 wdiEventData.pCBfnc = wdiReqStatusCb;
2936 wdiEventData.pUserData = pUserData;
2937
2938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2939}
2940
Jeff Johnson295189b2012-06-20 16:38:30 -07002941#ifdef FEATURE_WLAN_CCX
2942WDI_Status
2943WDI_TSMStatsReq
2944(
2945 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2946 WDI_TsmRspCb wdiReqStatusCb,
2947 void* pUserData
2948)
2949{
2950 WDI_EventInfoType wdiEventData;
2951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002952 /*------------------------------------------------------------------------
2953 Sanity Check
2954 ------------------------------------------------------------------------*/
2955 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2956 {
2957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2958 "WDI API call before module is initialized - Fail request");
2959
2960 return WDI_STATUS_E_NOT_ALLOWED;
2961 }
2962
2963 /*------------------------------------------------------------------------
2964 Fill in Event data and post to the Main FSM
2965 ------------------------------------------------------------------------*/
2966 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2967 wdiEventData.pEventData = pwdiTsmReqParams;
2968 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2969 wdiEventData.pCBfnc = wdiReqStatusCb;
2970 wdiEventData.pUserData = pUserData;
2971
2972 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2973
2974}
2975#endif
2976
2977/*========================================================================
2978
2979 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002980
Jeff Johnson295189b2012-06-20 16:38:30 -07002981==========================================================================*/
2982
2983/**
2984 @brief WDI_AddTSReq will be called when the upper MAC to inform
2985 the device of a successful add TSpec negotiation. HW
2986 needs to receive the TSpec Info from the UMAC in order
2987 to configure properly the QoS data traffic. Upon the
2988 call of this API the WLAN DAL will pack and send a HAL
2989 Add TS request message to the lower RIVA sub-system if
2990 DAL is in state STARTED.
2991
2992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002994
2995 WDI_PostAssocReq must have been called.
2996
2997 @param wdiAddTsReqParams: the add TS parameters as specified by
2998 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002999
Jeff Johnson295189b2012-06-20 16:38:30 -07003000 wdiAddTsRspCb: callback for passing back the response of
3001 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003002
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003004 callback
3005
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 @see WDI_PostAssocReq
3007 @return Result of the function call
3008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003010WDI_AddTSReq
3011(
3012 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3013 WDI_AddTsRspCb wdiAddTsRspCb,
3014 void* pUserData
3015)
3016{
3017 WDI_EventInfoType wdiEventData;
3018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3019
3020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 ------------------------------------------------------------------------*/
3023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3024 {
3025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3026 "WDI API call before module is initialized - Fail request");
3027
Jeff Johnsone7245742012-09-05 17:12:55 -07003028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 }
3030
3031 /*------------------------------------------------------------------------
3032 Fill in Event data and post to the Main FSM
3033 ------------------------------------------------------------------------*/
3034 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003035 wdiEventData.pEventData = pwdiAddTsReqParams;
3036 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3037 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003038 wdiEventData.pUserData = pUserData;
3039
3040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3041
3042}/*WDI_AddTSReq*/
3043
3044
3045
3046/**
3047 @brief WDI_DelTSReq will be called when the upper MAC has ended
3048 admission on a specific AC. This is to inform HW that
3049 QoS traffic parameters must be rest. Upon the call of
3050 this API the WLAN DAL will pack and send a HAL Del TS
3051 request message to the lower RIVA sub-system if DAL is
3052 in state STARTED.
3053
3054 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003055 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003056
3057 WDI_AddTSReq must have been called.
3058
3059 @param wdiDelTsReqParams: the del TS parameters as specified by
3060 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003061
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 wdiDelTsRspCb: callback for passing back the response of
3063 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003064
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003066 callback
3067
Jeff Johnson295189b2012-06-20 16:38:30 -07003068 @see WDI_AddTSReq
3069 @return Result of the function call
3070*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003071WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003072WDI_DelTSReq
3073(
3074 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3075 WDI_DelTsRspCb wdiDelTsRspCb,
3076 void* pUserData
3077)
3078{
3079 WDI_EventInfoType wdiEventData;
3080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3081
3082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003084 ------------------------------------------------------------------------*/
3085 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3086 {
3087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3088 "WDI API call before module is initialized - Fail request");
3089
Jeff Johnsone7245742012-09-05 17:12:55 -07003090 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 }
3092
3093 /*------------------------------------------------------------------------
3094 Fill in Event data and post to the Main FSM
3095 ------------------------------------------------------------------------*/
3096 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003097 wdiEventData.pEventData = pwdiDelTsReqParams;
3098 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3099 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003100 wdiEventData.pUserData = pUserData;
3101
3102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3103
3104}/*WDI_DelTSReq*/
3105
3106
3107
3108/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003109 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 wishes to update the EDCA parameters used by HW for QoS
3111 data traffic. Upon the call of this API the WLAN DAL
3112 will pack and send a HAL Update EDCA Params request
3113 message to the lower RIVA sub-system if DAL is in state
3114 STARTED.
3115
3116 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003117 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003118
3119 WDI_PostAssocReq must have been called.
3120
Jeff Johnsone7245742012-09-05 17:12:55 -07003121 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003123
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 wdiUpdateEDCAParamsRspCb: callback for passing back the
3125 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003126
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 callback
3129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 @see WDI_PostAssocReq
3131 @return Result of the function call
3132*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003133WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003134WDI_UpdateEDCAParams
3135(
3136 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3137 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3138 void* pUserData
3139)
3140{
3141 WDI_EventInfoType wdiEventData;
3142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3143
3144 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003145 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 ------------------------------------------------------------------------*/
3147 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3148 {
3149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3150 "WDI API call before module is initialized - Fail request");
3151
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 }
3154
3155 /*------------------------------------------------------------------------
3156 Fill in Event data and post to the Main FSM
3157 ------------------------------------------------------------------------*/
3158 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3160 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3161 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003162 wdiEventData.pUserData = pUserData;
3163
3164 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3165
3166}/*WDI_UpdateEDCAParams*/
3167
3168
3169/**
3170 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3171 successfully a BA session and needs to notify the HW for
3172 the appropriate settings to take place. Upon the call of
3173 this API the WLAN DAL will pack and send a HAL Add BA
3174 request message to the lower RIVA sub-system if DAL is
3175 in state STARTED.
3176
3177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003179
3180 WDI_PostAssocReq must have been called.
3181
3182 @param wdiAddBAReqParams: the add BA parameters as specified by
3183 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003184
Jeff Johnson295189b2012-06-20 16:38:30 -07003185 wdiAddBARspCb: callback for passing back the response of
3186 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003187
Jeff Johnson295189b2012-06-20 16:38:30 -07003188 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003189 callback
3190
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 @see WDI_PostAssocReq
3192 @return Result of the function call
3193*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003194WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003195WDI_AddBASessionReq
3196(
3197 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3198 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3199 void* pUserData
3200)
3201{
3202 WDI_EventInfoType wdiEventData;
3203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3204
3205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 ------------------------------------------------------------------------*/
3208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3209 {
3210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3211 "WDI API call before module is initialized - Fail request");
3212
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003214 }
3215
3216 /*------------------------------------------------------------------------
3217 Fill in Event data and post to the Main FSM
3218 ------------------------------------------------------------------------*/
3219 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3221 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3222 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003223 wdiEventData.pUserData = pUserData;
3224
3225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3226
3227}/*WDI_AddBASessionReq*/
3228
3229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 inform HW that it has deleted a previously created BA
3232 session. Upon the call of this API the WLAN DAL will
3233 pack and send a HAL Del BA request message to the lower
3234 RIVA sub-system if DAL is in state STARTED.
3235
3236 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003237 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003238
3239 WDI_AddBAReq must have been called.
3240
3241 @param wdiDelBAReqParams: the del BA parameters as specified by
3242 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003243
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 wdiDelBARspCb: callback for passing back the response of
3245 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003246
Jeff Johnson295189b2012-06-20 16:38:30 -07003247 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003248 callback
3249
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 @see WDI_AddBAReq
3251 @return Result of the function call
3252*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003253WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003254WDI_DelBAReq
3255(
3256 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3257 WDI_DelBARspCb wdiDelBARspCb,
3258 void* pUserData
3259)
3260{
3261 WDI_EventInfoType wdiEventData;
3262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3263
3264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 ------------------------------------------------------------------------*/
3267 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3268 {
3269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3270 "WDI API call before module is initialized - Fail request");
3271
Jeff Johnsone7245742012-09-05 17:12:55 -07003272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003273 }
3274
3275 /*------------------------------------------------------------------------
3276 Fill in Event data and post to the Main FSM
3277 ------------------------------------------------------------------------*/
3278 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003279 wdiEventData.pEventData = pwdiDelBAReqParams;
3280 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3281 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003282 wdiEventData.pUserData = pUserData;
3283
3284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3285
3286}/*WDI_DelBAReq*/
3287
Jeff Johnsone7245742012-09-05 17:12:55 -07003288/*========================================================================
3289
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292==========================================================================*/
3293
3294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 wants to set the power save related configurations of
3297 the WLAN Device. Upon the call of this API the WLAN DAL
3298 will pack and send a HAL Update CFG request message to
3299 the lower RIVA sub-system if DAL is in state STARTED.
3300
3301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003303
3304 WDI_Start must have been called.
3305
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 wdiSetPwrSaveCfgCb: callback for passing back the
3310 response of the set power save cfg operation received
3311 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003312
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003314 callback
3315
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 @return Result of the function call
3318*/
3319WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003320WDI_SetPwrSaveCfgReq
3321(
3322 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3323 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3324 void* pUserData
3325)
3326{
3327 WDI_EventInfoType wdiEventData;
3328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3329
3330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003331 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003332 ------------------------------------------------------------------------*/
3333 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3334 {
3335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3336 "WDI API call before module is initialized - Fail request");
3337
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 }
3340
3341 /*------------------------------------------------------------------------
3342 Fill in Event data and post to the Main FSM
3343 ------------------------------------------------------------------------*/
3344 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003345 wdiEventData.pEventData = pwdiPowerSaveCfg;
3346 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3347 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 wdiEventData.pUserData = pUserData;
3349
3350 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3351
3352}/*WDI_SetPwrSaveCfgReq*/
3353
3354/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003355 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003356 request the device to get into IMPS power state. Upon
3357 the call of this API the WLAN DAL will send a HAL Enter
3358 IMPS request message to the lower RIVA sub-system if DAL
3359 is in state STARTED.
3360
3361 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003362 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003363
Jeff Johnsone7245742012-09-05 17:12:55 -07003364
3365 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003366 response of the Enter IMPS operation received from the
3367 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003368
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003370 callback
3371
Jeff Johnson295189b2012-06-20 16:38:30 -07003372 @see WDI_Start
3373 @return Result of the function call
3374*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003375WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003376WDI_EnterImpsReq
3377(
3378 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3379 void* pUserData
3380)
3381{
3382 WDI_EventInfoType wdiEventData;
3383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3384
3385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 ------------------------------------------------------------------------*/
3388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3389 {
3390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3391 "WDI API call before module is initialized - Fail request");
3392
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 }
3395
3396 /*------------------------------------------------------------------------
3397 Fill in Event data and post to the Main FSM
3398 ------------------------------------------------------------------------*/
3399 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 wdiEventData.pEventData = NULL;
3401 wdiEventData.uEventDataSize = 0;
3402 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 wdiEventData.pUserData = pUserData;
3404
3405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3406
3407}/*WDI_EnterImpsReq*/
3408
3409/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 request the device to get out of IMPS power state. Upon
3412 the call of this API the WLAN DAL will send a HAL Exit
3413 IMPS request message to the lower RIVA sub-system if DAL
3414 is in state STARTED.
3415
3416 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419
Jeff Johnsone7245742012-09-05 17:12:55 -07003420
3421 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003422 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003423
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 callback
3426
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 @see WDI_Start
3428 @return Result of the function call
3429*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003431WDI_ExitImpsReq
3432(
3433 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3434 void* pUserData
3435)
3436{
3437 WDI_EventInfoType wdiEventData;
3438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3439
3440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 ------------------------------------------------------------------------*/
3443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3444 {
3445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3446 "WDI API call before module is initialized - Fail request");
3447
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003449 }
3450
3451 /*------------------------------------------------------------------------
3452 Fill in Event data and post to the Main FSM
3453 ------------------------------------------------------------------------*/
3454 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003455 wdiEventData.pEventData = NULL;
3456 wdiEventData.uEventDataSize = 0;
3457 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 wdiEventData.pUserData = pUserData;
3459
3460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3461
3462}/*WDI_ExitImpsReq*/
3463
3464/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 request the device to get into BMPS power state. Upon
3467 the call of this API the WLAN DAL will pack and send a
3468 HAL Enter BMPS request message to the lower RIVA
3469 sub-system if DAL is in state STARTED.
3470
3471 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003473
3474 WDI_PostAssocReq must have been called.
3475
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003478
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 wdiEnterBmpsRspCb: callback for passing back the
3480 response of the Enter BMPS operation received from the
3481 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003482
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 callback
3485
Jeff Johnson295189b2012-06-20 16:38:30 -07003486 @see WDI_PostAssocReq
3487 @return Result of the function call
3488*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003490WDI_EnterBmpsReq
3491(
3492 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3493 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3494 void* pUserData
3495)
3496{
3497 WDI_EventInfoType wdiEventData;
3498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3499
3500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003502 ------------------------------------------------------------------------*/
3503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3504 {
3505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3506 "WDI API call before module is initialized - Fail request");
3507
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 }
3510
3511 /*------------------------------------------------------------------------
3512 Fill in Event data and post to the Main FSM
3513 ------------------------------------------------------------------------*/
3514 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3516 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3517 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003518 wdiEventData.pUserData = pUserData;
3519
3520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3521
3522}/*WDI_EnterBmpsReq*/
3523
3524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 request the device to get out of BMPS power state. Upon
3527 the call of this API the WLAN DAL will pack and send a
3528 HAL Exit BMPS request message to the lower RIVA
3529 sub-system if DAL is in state STARTED.
3530
3531 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003532 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003533
3534 WDI_PostAssocReq must have been called.
3535
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003538
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 wdiExitBmpsRspCb: callback for passing back the response
3540 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003541
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 callback
3544
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 @see WDI_PostAssocReq
3546 @return Result of the function call
3547*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003549WDI_ExitBmpsReq
3550(
3551 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3552 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3553 void* pUserData
3554)
3555{
3556 WDI_EventInfoType wdiEventData;
3557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3558
3559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 ------------------------------------------------------------------------*/
3562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3563 {
3564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3565 "WDI API call before module is initialized - Fail request");
3566
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 }
3569
3570 /*------------------------------------------------------------------------
3571 Fill in Event data and post to the Main FSM
3572 ------------------------------------------------------------------------*/
3573 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003574 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3575 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3576 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 wdiEventData.pUserData = pUserData;
3578
3579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3580
3581}/*WDI_ExitBmpsReq*/
3582
3583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 request the device to get into UAPSD power state. Upon
3586 the call of this API the WLAN DAL will pack and send a
3587 HAL Enter UAPSD request message to the lower RIVA
3588 sub-system if DAL is in state STARTED.
3589
3590 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003592
3593 WDI_PostAssocReq must have been called.
3594 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003595
3596 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 wdiEnterUapsdRspCb: callback for passing back the
3600 response of the Enter UAPSD operation received from the
3601 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003602
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 callback
3605
Jeff Johnson295189b2012-06-20 16:38:30 -07003606 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3607 @return Result of the function call
3608*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003609WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003610WDI_EnterUapsdReq
3611(
3612 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3613 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3614 void* pUserData
3615)
3616{
3617 WDI_EventInfoType wdiEventData;
3618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3619
3620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 ------------------------------------------------------------------------*/
3623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3624 {
3625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3626 "WDI API call before module is initialized - Fail request");
3627
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 }
3630
3631 /*------------------------------------------------------------------------
3632 Fill in Event data and post to the Main FSM
3633 ------------------------------------------------------------------------*/
3634 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3636 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3637 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 wdiEventData.pUserData = pUserData;
3639
3640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3641
3642}/*WDI_EnterUapsdReq*/
3643
3644/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003645 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 request the device to get out of UAPSD power state. Upon
3647 the call of this API the WLAN DAL will send a HAL Exit
3648 UAPSD request message to the lower RIVA sub-system if
3649 DAL is in state STARTED.
3650
3651 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003653
3654 WDI_PostAssocReq must have been called.
3655
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 response of the Exit UAPSD operation received from the
3658 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003661 callback
3662
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 @see WDI_PostAssocReq
3664 @return Result of the function call
3665*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003666WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003667WDI_ExitUapsdReq
3668(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003669 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3671 void* pUserData
3672)
3673{
3674 WDI_EventInfoType wdiEventData;
3675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3676
3677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 ------------------------------------------------------------------------*/
3680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3681 {
3682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3683 "WDI API call before module is initialized - Fail request");
3684
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 }
3687
3688 /*------------------------------------------------------------------------
3689 Fill in Event data and post to the Main FSM
3690 ------------------------------------------------------------------------*/
3691 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003692 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3693 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 wdiEventData.pUserData = pUserData;
3696
3697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3698
3699}/*WDI_ExitUapsdReq*/
3700
3701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 MAC wants to set the UAPSD related configurations
3704 of an associated STA (while acting as an AP) to the WLAN
3705 Device. Upon the call of this API the WLAN DAL will pack
3706 and send a HAL Update UAPSD params request message to
3707 the lower RIVA sub-system if DAL is in state STARTED.
3708
3709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003711
3712 WDI_ConfigBSSReq must have been called.
3713
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiUpdateUapsdParamsCb: callback for passing back the
3718 response of the update UAPSD params operation received
3719 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 callback
3723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 @see WDI_ConfigBSSReq
3725 @return Result of the function call
3726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003728WDI_UpdateUapsdParamsReq
3729(
3730 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3731 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3732 void* pUserData
3733)
3734{
3735 WDI_EventInfoType wdiEventData;
3736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3737
3738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 ------------------------------------------------------------------------*/
3741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3742 {
3743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3744 "WDI API call before module is initialized - Fail request");
3745
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 }
3748
3749 /*------------------------------------------------------------------------
3750 Fill in Event data and post to the Main FSM
3751 ------------------------------------------------------------------------*/
3752 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003754 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 wdiEventData.pUserData = pUserData;
3757
3758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3759
3760}/*WDI_UpdateUapsdParamsReq*/
3761
3762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 MAC wants to set the UAPSD related configurations before
3765 requesting for enter UAPSD power state to the WLAN
3766 Device. Upon the call of this API the WLAN DAL will pack
3767 and send a HAL Set UAPSD params request message to
3768 the lower RIVA sub-system if DAL is in state STARTED.
3769
3770 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003772
3773 WDI_PostAssocReq must have been called.
3774
3775 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3776 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003777
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 wdiSetUapsdAcParamsCb: callback for passing back the
3779 response of the set UAPSD params operation received from
3780 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003781
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003783 callback
3784
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 @see WDI_PostAssocReq
3786 @return Result of the function call
3787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003789WDI_SetUapsdAcParamsReq
3790(
3791 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3792 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3793 void* pUserData
3794)
3795{
3796 WDI_EventInfoType wdiEventData;
3797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3798
3799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 ------------------------------------------------------------------------*/
3802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3803 {
3804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3805 "WDI API call before module is initialized - Fail request");
3806
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 }
3809
3810 /*------------------------------------------------------------------------
3811 Fill in Event data and post to the Main FSM
3812 ------------------------------------------------------------------------*/
3813 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 wdiEventData.pEventData = pwdiUapsdInfo;
3815 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3816 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 wdiEventData.pUserData = pUserData;
3818
3819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3820
3821}/*WDI_SetUapsdAcParamsReq*/
3822
3823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 MAC wants to set/reset the RXP filters for received pkts
3826 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3827 and send a HAL configure RXP filter request message to
3828 the lower RIVA sub-system.
3829
3830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003832
Jeff Johnsone7245742012-09-05 17:12:55 -07003833
3834 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003835 filter as specified by the Device
3836 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003837
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 wdiConfigureRxpFilterCb: callback for passing back the
3839 response of the configure RXP filter operation received
3840 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003841
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 callback
3844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 @return Result of the function call
3846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003848WDI_ConfigureRxpFilterReq
3849(
3850 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3851 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3852 void* pUserData
3853)
3854{
3855 WDI_EventInfoType wdiEventData;
3856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3857
3858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 ------------------------------------------------------------------------*/
3861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3862 {
3863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3864 "WDI API call before module is initialized - Fail request");
3865
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 }
3868
3869 /*------------------------------------------------------------------------
3870 Fill in Event data and post to the Main FSM
3871 ------------------------------------------------------------------------*/
3872 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003873 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3874 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3875 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 wdiEventData.pUserData = pUserData;
3877
3878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3879}/*WDI_ConfigureRxpFilterReq*/
3880
3881/**
3882 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3883 wants to set the beacon filters while in power save.
3884 Upon the call of this API the WLAN DAL will pack and
3885 send a Beacon filter request message to the
3886 lower RIVA sub-system.
3887
3888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003890
Jeff Johnsone7245742012-09-05 17:12:55 -07003891
3892 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 filter as specified by the Device
3894 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003895
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 wdiBeaconFilterCb: callback for passing back the
3897 response of the set beacon filter operation received
3898 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003899
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003901 callback
3902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 @return Result of the function call
3904*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003906WDI_SetBeaconFilterReq
3907(
3908 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3909 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3910 void* pUserData
3911)
3912{
3913 WDI_EventInfoType wdiEventData;
3914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3915
3916 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 ------------------------------------------------------------------------*/
3919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3920 {
3921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3922 "WDI API call before module is initialized - Fail request");
3923
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 }
3926
3927 /*------------------------------------------------------------------------
3928 Fill in Event data and post to the Main FSM
3929 ------------------------------------------------------------------------*/
3930 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003932 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 wdiEventData.pUserData = pUserData;
3935
3936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3937}/*WDI_SetBeaconFilterReq*/
3938
3939/**
3940 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3941 wants to remove the beacon filter for particular IE
3942 while in power save. Upon the call of this API the WLAN
3943 DAL will pack and send a remove Beacon filter request
3944 message to the lower RIVA sub-system.
3945
3946 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003948
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
3950 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003951 filter as specified by the Device
3952 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003953
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 wdiBeaconFilterCb: callback for passing back the
3955 response of the remove beacon filter operation received
3956 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003957
Jeff Johnson295189b2012-06-20 16:38:30 -07003958 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 callback
3960
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 @return Result of the function call
3962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003964WDI_RemBeaconFilterReq
3965(
3966 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3967 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3968 void* pUserData
3969)
3970{
3971 WDI_EventInfoType wdiEventData;
3972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3973
3974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003976 ------------------------------------------------------------------------*/
3977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3978 {
3979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3980 "WDI API call before module is initialized - Fail request");
3981
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 }
3984
3985 /*------------------------------------------------------------------------
3986 Fill in Event data and post to the Main FSM
3987 ------------------------------------------------------------------------*/
3988 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003990 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 wdiEventData.pUserData = pUserData;
3993
3994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3995}/*WDI_RemBeaconFilterReq*/
3996
3997/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 MAC wants to set the RSSI thresholds related
4000 configurations while in power save. Upon the call of
4001 this API the WLAN DAL will pack and send a HAL Set RSSI
4002 thresholds request message to the lower RIVA
4003 sub-system if DAL is in state STARTED.
4004
4005 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004006 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004007
4008 WDI_PostAssocReq must have been called.
4009
4010 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4011 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 wdiSetUapsdAcParamsCb: callback for passing back the
4014 response of the set UAPSD params operation received from
4015 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004016
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 callback
4019
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 @see WDI_PostAssocReq
4021 @return Result of the function call
4022*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004023WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004024WDI_SetRSSIThresholdsReq
4025(
4026 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4027 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4028 void* pUserData
4029)
4030{
4031 WDI_EventInfoType wdiEventData;
4032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4033
4034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 ------------------------------------------------------------------------*/
4037 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4038 {
4039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4040 "WDI API call before module is initialized - Fail request");
4041
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 }
4044
4045 /*------------------------------------------------------------------------
4046 Fill in Event data and post to the Main FSM
4047 ------------------------------------------------------------------------*/
4048 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004050 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 wdiEventData.pUserData = pUserData;
4053
4054 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4055}/* WDI_SetRSSIThresholdsReq*/
4056
4057/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 wants to set the filter to minimize unnecessary host
4060 wakeup due to broadcast traffic while in power save.
4061 Upon the call of this API the WLAN DAL will pack and
4062 send a HAL host offload request message to the
4063 lower RIVA sub-system if DAL is in state STARTED.
4064
4065 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004067
4068 WDI_PostAssocReq must have been called.
4069
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 wdiHostOffloadCb: callback for passing back the response
4074 of the host offload operation received from the
4075 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004076
Jeff Johnson295189b2012-06-20 16:38:30 -07004077 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 callback
4079
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 @see WDI_PostAssocReq
4081 @return Result of the function call
4082*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004083WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004084WDI_HostOffloadReq
4085(
4086 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4087 WDI_HostOffloadCb wdiHostOffloadCb,
4088 void* pUserData
4089)
4090{
4091 WDI_EventInfoType wdiEventData;
4092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4093
4094 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 ------------------------------------------------------------------------*/
4097 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4098 {
4099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4100 "WDI API call before module is initialized - Fail request");
4101
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 }
4104
4105 /*------------------------------------------------------------------------
4106 Fill in Event data and post to the Main FSM
4107 ------------------------------------------------------------------------*/
4108 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004110 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 wdiEventData.pUserData = pUserData;
4113
4114 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4115}/*WDI_HostOffloadReq*/
4116
4117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 @brief WDI_KeepAliveReq will be called when the upper MAC
4119 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 and minimize unnecessary host wakeups due to while in power save.
4121 Upon the call of this API the WLAN DAL will pack and
4122 send a HAL Keep Alive request message to the
4123 lower RIVA sub-system if DAL is in state STARTED.
4124
4125 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004126 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004127
4128 WDI_PostAssocReq must have been called.
4129
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004132
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 wdiKeepAliveCb: callback for passing back the response
4134 of the Keep Alive operation received from the
4135 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004136
Jeff Johnson295189b2012-06-20 16:38:30 -07004137 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 callback
4139
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 @see WDI_PostAssocReq
4141 @return Result of the function call
4142*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004143WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004144WDI_KeepAliveReq
4145(
4146 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4147 WDI_KeepAliveCb wdiKeepAliveCb,
4148 void* pUserData
4149)
4150{
4151 WDI_EventInfoType wdiEventData;
4152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4153
4154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 ------------------------------------------------------------------------*/
4157 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4158 {
4159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4160 "WDI_KeepAliveReq: WDI API call before module "
4161 "is initialized - Fail request");
4162
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 }
4165
4166 /*------------------------------------------------------------------------
4167 Fill in Event data and post to the Main FSM
4168 ------------------------------------------------------------------------*/
4169 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 wdiEventData.pEventData = pwdiKeepAliveParams;
4171 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4172 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 wdiEventData.pUserData = pUserData;
4174
4175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4176}/*WDI_KeepAliveReq*/
4177
4178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wants to set the Wowl Bcast ptrn to minimize unnecessary
4181 host wakeup due to broadcast traffic while in power
4182 save. Upon the call of this API the WLAN DAL will pack
4183 and send a HAL Wowl Bcast ptrn request message to the
4184 lower RIVA sub-system if DAL is in state STARTED.
4185
4186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004188
4189 WDI_PostAssocReq must have been called.
4190
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004193
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 wdiWowlAddBcPtrnCb: callback for passing back the
4195 response of the add Wowl bcast ptrn operation received
4196 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 callback
4200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 @see WDI_PostAssocReq
4202 @return Result of the function call
4203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004205WDI_WowlAddBcPtrnReq
4206(
4207 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4208 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4209 void* pUserData
4210)
4211{
4212 WDI_EventInfoType wdiEventData;
4213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4214
4215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 ------------------------------------------------------------------------*/
4218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4219 {
4220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4221 "WDI API call before module is initialized - Fail request");
4222
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 }
4225
4226 /*------------------------------------------------------------------------
4227 Fill in Event data and post to the Main FSM
4228 ------------------------------------------------------------------------*/
4229 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004231 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 wdiEventData.pUserData = pUserData;
4234
4235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4236}/*WDI_WowlAddBcPtrnReq*/
4237
4238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 wants to clear the Wowl Bcast ptrn. Upon the call of
4241 this API the WLAN DAL will pack and send a HAL delete
4242 Wowl Bcast ptrn request message to the lower RIVA
4243 sub-system if DAL is in state STARTED.
4244
4245 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004246 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004247
4248 WDI_WowlAddBcPtrnReq must have been called.
4249
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004252
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 wdiWowlDelBcPtrnCb: callback for passing back the
4254 response of the del Wowl bcast ptrn operation received
4255 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004256
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 callback
4259
Jeff Johnson295189b2012-06-20 16:38:30 -07004260 @see WDI_WowlAddBcPtrnReq
4261 @return Result of the function call
4262*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004263WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004264WDI_WowlDelBcPtrnReq
4265(
4266 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4267 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4268 void* pUserData
4269)
4270{
4271 WDI_EventInfoType wdiEventData;
4272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4273
4274 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004275 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 ------------------------------------------------------------------------*/
4277 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4278 {
4279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4280 "WDI API call before module is initialized - Fail request");
4281
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 }
4284
4285 /*------------------------------------------------------------------------
4286 Fill in Event data and post to the Main FSM
4287 ------------------------------------------------------------------------*/
4288 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004290 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004292 wdiEventData.pUserData = pUserData;
4293
4294 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4295}/*WDI_WowlDelBcPtrnReq*/
4296
4297/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 wants to enter the Wowl state to minimize unnecessary
4300 host wakeup while in power save. Upon the call of this
4301 API the WLAN DAL will pack and send a HAL Wowl enter
4302 request message to the lower RIVA sub-system if DAL is
4303 in state STARTED.
4304
4305 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004306 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004307
4308 WDI_PostAssocReq must have been called.
4309
Jeff Johnsone7245742012-09-05 17:12:55 -07004310 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004311 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004312
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 wdiWowlEnterReqCb: callback for passing back the
4314 response of the enter Wowl operation received from the
4315 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004316
Jeff Johnson295189b2012-06-20 16:38:30 -07004317 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004318 callback
4319
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 @see WDI_PostAssocReq
4321 @return Result of the function call
4322*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004323WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004324WDI_WowlEnterReq
4325(
4326 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4327 WDI_WowlEnterReqCb wdiWowlEnterCb,
4328 void* pUserData
4329)
4330{
4331 WDI_EventInfoType wdiEventData;
4332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4333
4334 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 ------------------------------------------------------------------------*/
4337 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4338 {
4339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4340 "WDI API call before module is initialized - Fail request");
4341
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 }
4344
4345 /*------------------------------------------------------------------------
4346 Fill in Event data and post to the Main FSM
4347 ------------------------------------------------------------------------*/
4348 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004350 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 wdiEventData.pUserData = pUserData;
4353
4354 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4355}/*WDI_WowlEnterReq*/
4356
4357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004358 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 wants to exit the Wowl state. Upon the call of this API
4360 the WLAN DAL will pack and send a HAL Wowl exit request
4361 message to the lower RIVA sub-system if DAL is in state
4362 STARTED.
4363
4364 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004366
4367 WDI_WowlEnterReq must have been called.
4368
Jeff Johnsone7245742012-09-05 17:12:55 -07004369 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004370 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004371
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 wdiWowlExitReqCb: callback for passing back the response
4373 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004374
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004376 callback
4377
Jeff Johnson295189b2012-06-20 16:38:30 -07004378 @see WDI_WowlEnterReq
4379 @return Result of the function call
4380*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004381WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004382WDI_WowlExitReq
4383(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004384 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004385 WDI_WowlExitReqCb wdiWowlExitCb,
4386 void* pUserData
4387)
4388{
4389 WDI_EventInfoType wdiEventData;
4390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4391
4392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004394 ------------------------------------------------------------------------*/
4395 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4396 {
4397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4398 "WDI API call before module is initialized - Fail request");
4399
Jeff Johnsone7245742012-09-05 17:12:55 -07004400 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004401 }
4402
4403 /*------------------------------------------------------------------------
4404 Fill in Event data and post to the Main FSM
4405 ------------------------------------------------------------------------*/
4406 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004407 wdiEventData.pEventData = pwdiWowlExitParams;
4408 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 wdiEventData.pUserData = pUserData;
4411
4412 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4413}/*WDI_WowlExitReq*/
4414
4415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 the upper MAC wants to dynamically adjusts the listen
4418 interval based on the WLAN/MSM activity. Upon the call
4419 of this API the WLAN DAL will pack and send a HAL
4420 configure Apps Cpu Wakeup State request message to the
4421 lower RIVA sub-system.
4422
4423 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004425
Jeff Johnsone7245742012-09-05 17:12:55 -07004426
4427 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 Apps Cpu Wakeup State as specified by the
4429 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004430
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4432 back the response of the configure Apps Cpu Wakeup State
4433 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004434
Jeff Johnson295189b2012-06-20 16:38:30 -07004435 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004436 callback
4437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 @return Result of the function call
4439*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004440WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004441WDI_ConfigureAppsCpuWakeupStateReq
4442(
4443 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4444 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4445 void* pUserData
4446)
4447{
4448 WDI_EventInfoType wdiEventData;
4449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4450
4451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 ------------------------------------------------------------------------*/
4454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4455 {
4456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4457 "WDI API call before module is initialized - Fail request");
4458
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 }
4461
4462 /*------------------------------------------------------------------------
4463 Fill in Event data and post to the Main FSM
4464 ------------------------------------------------------------------------*/
4465 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4467 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4468 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004469 wdiEventData.pUserData = pUserData;
4470
4471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4472}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4473/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 to to perform a flush operation on a given AC. Upon the
4476 call of this API the WLAN DAL will pack and send a HAL
4477 Flush AC request message to the lower RIVA sub-system if
4478 DAL is in state STARTED.
4479
4480 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004482
4483 WDI_AddBAReq must have been called.
4484
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004487
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 wdiFlushAcRspCb: callback for passing back the response
4489 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004490
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 callback
4493
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 @see WDI_AddBAReq
4495 @return Result of the function call
4496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004498WDI_FlushAcReq
4499(
4500 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4501 WDI_FlushAcRspCb wdiFlushAcRspCb,
4502 void* pUserData
4503)
4504{
4505 WDI_EventInfoType wdiEventData;
4506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4507
4508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 ------------------------------------------------------------------------*/
4511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4512 {
4513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4514 "WDI API call before module is initialized - Fail request");
4515
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 }
4518
4519 /*------------------------------------------------------------------------
4520 Fill in Event data and post to the Main FSM
4521 ------------------------------------------------------------------------*/
4522 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 wdiEventData.pEventData = pwdiFlushAcReqParams;
4524 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4525 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 wdiEventData.pUserData = pUserData;
4527
4528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4529
4530}/*WDI_FlushAcReq*/
4531
4532/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 wants to notify the lower mac on a BT AMP event. This is
4535 to inform BTC-SLM that some BT AMP event occurred. Upon
4536 the call of this API the WLAN DAL will pack and send a
4537 HAL BT AMP event request message to the lower RIVA
4538 sub-system if DAL is in state STARTED.
4539
4540 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004542
Jeff Johnsone7245742012-09-05 17:12:55 -07004543
4544 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004545 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004546
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 wdiBtAmpEventRspCb: callback for passing back the
4548 response of the BT AMP event operation received from the
4549 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004550
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 callback
4553
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 @return Result of the function call
4555*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004556WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004557WDI_BtAmpEventReq
4558(
4559 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4560 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4561 void* pUserData
4562)
4563{
4564 WDI_EventInfoType wdiEventData;
4565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4566
4567 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004568 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 ------------------------------------------------------------------------*/
4570 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4571 {
4572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4573 "WDI API call before module is initialized - Fail request");
4574
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 }
4577
4578 /*------------------------------------------------------------------------
4579 Fill in Event data and post to the Main FSM
4580 ------------------------------------------------------------------------*/
4581 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004582 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4583 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4584 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 wdiEventData.pUserData = pUserData;
4586
4587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4588
4589}/*WDI_BtAmpEventReq*/
4590
Jeff Johnsone7245742012-09-05 17:12:55 -07004591#ifdef FEATURE_OEM_DATA_SUPPORT
4592/**
4593 @brief WDI_Start Oem Data Req will be called when the upper MAC
4594 wants to notify the lower mac on a oem data Req event.Upon
4595 the call of this API the WLAN DAL will pack and send a
4596 HAL OEM Data Req event request message to the lower RIVA
4597 sub-system if DAL is in state STARTED.
4598
4599 In state BUSY this request will be queued. Request won't
4600 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004601
4602
Jeff Johnsone7245742012-09-05 17:12:55 -07004603
4604 @param pwdiOemDataReqParams: the Oem Data Req as
4605 specified by the Device Interface
4606
4607 wdiStartOemDataRspCb: callback for passing back the
4608 response of the Oem Data Req received from the
4609 device
4610
4611 pUserData: user data will be passed back with the
4612 callback
4613
4614 @return Result of the function call
4615*/
4616WDI_Status
4617WDI_StartOemDataReq
4618(
4619 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4620 WDI_oemDataRspCb wdiOemDataRspCb,
4621 void* pUserData
4622)
4623{
4624 WDI_EventInfoType wdiEventData;
4625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4626
4627 /*------------------------------------------------------------------------
4628 Sanity Check
4629 ------------------------------------------------------------------------*/
4630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4631 {
4632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4633 "WDI API call before module is initialized - Fail request");
4634
4635 return WDI_STATUS_E_NOT_ALLOWED;
4636 }
4637
4638 /*------------------------------------------------------------------------
4639 Fill in Event data and post to the Main FSM
4640 ------------------------------------------------------------------------*/
4641 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4642 wdiEventData.pEventData = pwdiOemDataReqParams;
4643 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4644 wdiEventData.pCBfnc = wdiOemDataRspCb;
4645 wdiEventData.pUserData = pUserData;
4646
4647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4648
4649
4650}
4651
4652#endif
4653
4654
4655/*========================================================================
4656
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004658
Jeff Johnson295189b2012-06-20 16:38:30 -07004659==========================================================================*/
4660/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 the WLAN HW to change the current channel of operation.
4663 Upon the call of this API the WLAN DAL will pack and
4664 send a HAL Start request message to the lower RIVA
4665 sub-system if DAL is in state STARTED.
4666
4667 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004668 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004669
4670 WDI_Start must have been called.
4671
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 wdiSwitchChRspCb: callback for passing back the response
4676 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004677
Jeff Johnson295189b2012-06-20 16:38:30 -07004678 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 callback
4680
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 @see WDI_Start
4682 @return Result of the function call
4683*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004684WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004685WDI_SwitchChReq
4686(
4687 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4688 WDI_SwitchChRspCb wdiSwitchChRspCb,
4689 void* pUserData
4690)
4691{
4692 WDI_EventInfoType wdiEventData;
4693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4694
4695 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 ------------------------------------------------------------------------*/
4698 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4699 {
4700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4701 "WDI API call before module is initialized - Fail request");
4702
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004704 }
4705
4706 /*------------------------------------------------------------------------
4707 Fill in Event data and post to the Main FSM
4708 ------------------------------------------------------------------------*/
4709 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004710 wdiEventData.pEventData = pwdiSwitchChReqParams;
4711 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4712 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004713 wdiEventData.pUserData = pUserData;
4714
4715 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4716
4717}/*WDI_SwitchChReq*/
4718
4719
4720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004721 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 wishes to add or update a STA in HW. Upon the call of
4723 this API the WLAN DAL will pack and send a HAL Start
4724 message request message to the lower RIVA sub-system if
4725 DAL is in state STARTED.
4726
4727 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004728 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004729
4730 WDI_Start must have been called.
4731
Jeff Johnsone7245742012-09-05 17:12:55 -07004732 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004733 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004734
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 wdiConfigSTARspCb: callback for passing back the
4736 response of the config STA operation received from the
4737 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004738
Jeff Johnson295189b2012-06-20 16:38:30 -07004739 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 callback
4741
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 @see WDI_Start
4743 @return Result of the function call
4744*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004745WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004746WDI_ConfigSTAReq
4747(
4748 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4749 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4750 void* pUserData
4751)
4752{
4753 WDI_EventInfoType wdiEventData;
4754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4755
4756 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 ------------------------------------------------------------------------*/
4759 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4760 {
4761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4762 "WDI API call before module is initialized - Fail request");
4763
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 }
4766
4767 /*------------------------------------------------------------------------
4768 Fill in Event data and post to the Main FSM
4769 ------------------------------------------------------------------------*/
4770 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4772 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4773 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 wdiEventData.pUserData = pUserData;
4775
4776 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4777
4778}/*WDI_ConfigSTAReq*/
4779
4780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004781 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004782 wants to change the state of an ongoing link. Upon the
4783 call of this API the WLAN DAL will pack and send a HAL
4784 Start message request message to the lower RIVA
4785 sub-system if DAL is in state STARTED.
4786
4787 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004788 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004789
4790 WDI_JoinStartReq must have been called.
4791
Jeff Johnsone7245742012-09-05 17:12:55 -07004792 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004794
Jeff Johnson295189b2012-06-20 16:38:30 -07004795 wdiSetLinkStateRspCb: callback for passing back the
4796 response of the set link state operation received from
4797 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004798
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 callback
4801
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 @see WDI_JoinStartReq
4803 @return Result of the function call
4804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004806WDI_SetLinkStateReq
4807(
4808 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4809 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4810 void* pUserData
4811)
4812{
4813 WDI_EventInfoType wdiEventData;
4814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4815
4816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 ------------------------------------------------------------------------*/
4819 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4820 {
4821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4822 "WDI API call before module is initialized - Fail request");
4823
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 }
4826
4827 /*------------------------------------------------------------------------
4828 Fill in Event data and post to the Main FSM
4829 ------------------------------------------------------------------------*/
4830 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4832 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4833 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiEventData.pUserData = pUserData;
4835
4836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4837
4838}/*WDI_SetLinkStateReq*/
4839
4840
4841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 to get statistics (MIB counters) from the device. Upon
4844 the call of this API the WLAN DAL will pack and send a
4845 HAL Start request message to the lower RIVA sub-system
4846 if DAL is in state STARTED.
4847
4848 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004850
4851 WDI_Start must have been called.
4852
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiGetStatsRspCb: callback for passing back the response
4857 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004858
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 callback
4861
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 @see WDI_Start
4863 @return Result of the function call
4864*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004865WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004866WDI_GetStatsReq
4867(
4868 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4869 WDI_GetStatsRspCb wdiGetStatsRspCb,
4870 void* pUserData
4871)
4872{
4873 WDI_EventInfoType wdiEventData;
4874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4875
4876 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 ------------------------------------------------------------------------*/
4879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4880 {
4881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4882 "WDI API call before module is initialized - Fail request");
4883
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 }
4886
4887 /*------------------------------------------------------------------------
4888 Fill in Event data and post to the Main FSM
4889 ------------------------------------------------------------------------*/
4890 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 wdiEventData.pEventData = pwdiGetStatsReqParams;
4892 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4893 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004894 wdiEventData.pUserData = pUserData;
4895
4896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4897
4898}/*WDI_GetStatsReq*/
4899
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08004900#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4901/**
4902 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4903 to get roam rssi from the device. Upon
4904 the call of this API the WLAN DAL will pack and send a
4905 HAL Start request message to the lower RIVA sub-system
4906 if DAL is in state STARTED.
4907
4908 In state BUSY this request will be queued. Request won't
4909 be allowed in any other state.
4910
4911 WDI_Start must have been called.
4912
4913 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4914 specified by the Device Interface
4915
4916 wdiGetRoamRssiRspCb: callback for passing back the response
4917 of the get stats operation received from the device
4918
4919 pUserData: user data will be passed back with the
4920 callback
4921
4922 @see WDI_Start
4923 @return Result of the function call
4924*/
4925WDI_Status
4926WDI_GetRoamRssiReq
4927(
4928 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4929 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4930 void* pUserData
4931)
4932{
4933 WDI_EventInfoType wdiEventData;
4934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4935
4936 /*------------------------------------------------------------------------
4937 Sanity Check
4938 ------------------------------------------------------------------------*/
4939 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4940 {
4941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4942 "WDI API call before module is initialized - Fail request");
4943
4944 return WDI_STATUS_E_NOT_ALLOWED;
4945 }
4946 /*------------------------------------------------------------------------
4947 Fill in Event data and post to the Main FSM
4948 ------------------------------------------------------------------------*/
4949 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4950 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4951 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4952 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4953 wdiEventData.pUserData = pUserData;
4954
4955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4956
4957}/*WDI_GetRoamRssiReq*/
4958#endif
4959
Jeff Johnson295189b2012-06-20 16:38:30 -07004960
4961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 it wishes to change the configuration of the WLAN
4964 Device. Upon the call of this API the WLAN DAL will pack
4965 and send a HAL Update CFG request message to the lower
4966 RIVA sub-system if DAL is in state STARTED.
4967
4968 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004970
4971 WDI_Start must have been called.
4972
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004975
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 wdiUpdateCfgsRspCb: callback for passing back the
4977 response of the update cfg operation received from the
4978 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004979
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004981 callback
4982
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 @see WDI_Start
4984 @return Result of the function call
4985*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004986WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004987WDI_UpdateCfgReq
4988(
4989 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4990 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4991 void* pUserData
4992)
4993{
4994 WDI_EventInfoType wdiEventData;
4995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4996
4997 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004998 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 ------------------------------------------------------------------------*/
5000 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5001 {
5002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5003 "WDI API call before module is initialized - Fail request");
5004
Jeff Johnsone7245742012-09-05 17:12:55 -07005005 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 }
5007
5008 /*------------------------------------------------------------------------
5009 Fill in Event data and post to the Main FSM
5010 ------------------------------------------------------------------------*/
5011 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005012 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5013 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5014 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005015 wdiEventData.pUserData = pUserData;
5016
5017 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5018
5019}/*WDI_UpdateCfgReq*/
5020
5021
5022
5023/**
5024 @brief WDI_AddBAReq will be called when the upper MAC has setup
5025 successfully a BA session and needs to notify the HW for
5026 the appropriate settings to take place. Upon the call of
5027 this API the WLAN DAL will pack and send a HAL Add BA
5028 request message to the lower RIVA sub-system if DAL is
5029 in state STARTED.
5030
5031 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005032 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005033
5034 WDI_PostAssocReq must have been called.
5035
5036 @param wdiAddBAReqParams: the add BA parameters as specified by
5037 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005038
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 wdiAddBARspCb: callback for passing back the response of
5040 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005041
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 callback
5044
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 @see WDI_PostAssocReq
5046 @return Result of the function call
5047*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005048WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005049WDI_AddBAReq
5050(
5051 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5052 WDI_AddBARspCb wdiAddBARspCb,
5053 void* pUserData
5054)
5055{
5056 WDI_EventInfoType wdiEventData;
5057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5058
5059 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 ------------------------------------------------------------------------*/
5062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5063 {
5064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5065 "WDI API call before module is initialized - Fail request");
5066
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 }
5069
5070 /*------------------------------------------------------------------------
5071 Fill in Event data and post to the Main FSM
5072 ------------------------------------------------------------------------*/
5073 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 wdiEventData.pEventData = pwdiAddBAReqParams;
5075 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5076 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 wdiEventData.pUserData = pUserData;
5078
5079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5080
5081}/*WDI_AddBAReq*/
5082
5083
5084/**
5085 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5086 successfully a BA session and needs to notify the HW for
5087 the appropriate settings to take place. Upon the call of
5088 this API the WLAN DAL will pack and send a HAL Add BA
5089 request message to the lower RIVA sub-system if DAL is
5090 in state STARTED.
5091
5092 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005094
5095 WDI_PostAssocReq must have been called.
5096
5097 @param wdiAddBAReqParams: the add BA parameters as specified by
5098 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005099
Jeff Johnson295189b2012-06-20 16:38:30 -07005100 wdiAddBARspCb: callback for passing back the response of
5101 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005102
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 callback
5105
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 @see WDI_PostAssocReq
5107 @return Result of the function call
5108*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005109WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005110WDI_TriggerBAReq
5111(
5112 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5113 WDI_TriggerBARspCb wdiTriggerBARspCb,
5114 void* pUserData
5115)
5116{
5117 WDI_EventInfoType wdiEventData;
5118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5119
5120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 ------------------------------------------------------------------------*/
5123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5124 {
5125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5126 "WDI API call before module is initialized - Fail request");
5127
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 }
5130
5131 /*------------------------------------------------------------------------
5132 Fill in Event data and post to the Main FSM
5133 ------------------------------------------------------------------------*/
5134 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5136 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5137 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 wdiEventData.pUserData = pUserData;
5139
5140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5141
5142}/*WDI_AddBAReq*/
5143
5144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 wishes to update any of the Beacon parameters used by HW.
5147 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5148 message to the lower RIVA sub-system if DAL is in state
5149 STARTED.
5150
5151 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005153
5154 WDI_PostAssocReq must have been called.
5155
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005158
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 wdiUpdateBeaconParamsRspCb: callback for passing back the
5160 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005161
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 callback
5164
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 @see WDI_PostAssocReq
5166 @return Result of the function call
5167*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005168WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005169WDI_UpdateBeaconParamsReq
5170(
5171 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5172 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5173 void* pUserData
5174)
5175{
5176 WDI_EventInfoType wdiEventData;
5177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5178
5179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 ------------------------------------------------------------------------*/
5182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5183 {
5184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5185 "WDI API call before module is initialized - Fail request");
5186
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005188 }
5189
5190 /*------------------------------------------------------------------------
5191 Fill in Event data and post to the Main FSM
5192 ------------------------------------------------------------------------*/
5193 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005194 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5195 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5196 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 wdiEventData.pUserData = pUserData;
5198
5199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5200
5201}/*WDI_UpdateBeaconParamsReq*/
5202
5203/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005204 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 wishes to update the Beacon template used by HW.
5206 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5207 message to the lower RIVA sub-system if DAL is in state
5208 STARTED.
5209
5210 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005211 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005212
5213 WDI_PostAssocReq must have been called.
5214
Jeff Johnsone7245742012-09-05 17:12:55 -07005215 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005216 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 wdiSendBeaconParamsRspCb: callback for passing back the
5219 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005220
Jeff Johnson295189b2012-06-20 16:38:30 -07005221 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005222 callback
5223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 @see WDI_PostAssocReq
5225 @return Result of the function call
5226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005228WDI_SendBeaconParamsReq
5229(
5230 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5231 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5232 void* pUserData
5233)
5234{
5235 WDI_EventInfoType wdiEventData;
5236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5237
5238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 ------------------------------------------------------------------------*/
5241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5242 {
5243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5244 "WDI API call before module is initialized - Fail request");
5245
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 }
5248
5249 /*------------------------------------------------------------------------
5250 Fill in Event data and post to the Main FSM
5251 ------------------------------------------------------------------------*/
5252 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 wdiEventData.pEventData = pwdiSendBeaconParams;
5254 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5255 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005256 wdiEventData.pUserData = pUserData;
5257
5258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5259
5260}/*WDI_SendBeaconParamsReq*/
5261
5262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 upper MAC wants to update the probe response template to
5265 be transmitted as Soft AP
5266 Upon the call of this API the WLAN DAL will
5267 pack and send the probe rsp template message to the
5268 lower RIVA sub-system if DAL is in state STARTED.
5269
5270 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005272
5273
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 wdiSendBeaconParamsRspCb: callback for passing back the
5278 response of the Send Beacon Params operation received
5279 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005280
Jeff Johnson295189b2012-06-20 16:38:30 -07005281 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 callback
5283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 @see WDI_AddBAReq
5285 @return Result of the function call
5286*/
5287
Jeff Johnsone7245742012-09-05 17:12:55 -07005288WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005289WDI_UpdateProbeRspTemplateReq
5290(
5291 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5292 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5293 void* pUserData
5294)
5295{
5296 WDI_EventInfoType wdiEventData;
5297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5298
5299 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 ------------------------------------------------------------------------*/
5302 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5303 {
5304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5305 "WDI API call before module is initialized - Fail request");
5306
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 }
5309
5310 /*------------------------------------------------------------------------
5311 Fill in Event data and post to the Main FSM
5312 ------------------------------------------------------------------------*/
5313 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5315 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5316 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wdiEventData.pUserData = pUserData;
5318
5319 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5320
5321}/*WDI_UpdateProbeRspTemplateReq*/
5322
5323/**
5324 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5325 to the NV memory.
5326
5327
5328 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5329 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005330
Jeff Johnson295189b2012-06-20 16:38:30 -07005331 wdiNvDownloadRspCb: callback for passing back the response of
5332 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005333
Jeff Johnson295189b2012-06-20 16:38:30 -07005334 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005335 callback
5336
Jeff Johnson295189b2012-06-20 16:38:30 -07005337 @see WDI_PostAssocReq
5338 @return Result of the function call
5339*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005340WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005341WDI_NvDownloadReq
5342(
5343 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5344 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5345 void* pUserData
5346)
5347{
5348 WDI_EventInfoType wdiEventData;
5349
5350 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 ------------------------------------------------------------------------*/
5353 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5354 {
5355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5356 "WDI API call before module is initialized - Fail request");
5357
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 }
5360
5361 /*------------------------------------------------------------------------
5362 Fill in Event data and post to the Main FSM
5363 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5365 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5366 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5367 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 wdiEventData.pUserData = pUserData;
5369
5370 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5371
5372}/*WDI_NVDownloadReq*/
5373
Jeff Johnson295189b2012-06-20 16:38:30 -07005374/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 upper MAC wants to send Notice of Absence
5377 Upon the call of this API the WLAN DAL will
5378 pack and send the probe rsp template message to the
5379 lower RIVA sub-system if DAL is in state STARTED.
5380
5381 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005382 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005383
5384
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005387
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 wdiSendBeaconParamsRspCb: callback for passing back the
5389 response of the Send Beacon Params operation received
5390 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005391
Jeff Johnson295189b2012-06-20 16:38:30 -07005392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005393 callback
5394
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 @see WDI_AddBAReq
5396 @return Result of the function call
5397*/
5398WDI_Status
5399WDI_SetP2PGONOAReq
5400(
5401 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5402 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5403 void* pUserData
5404)
5405{
5406 WDI_EventInfoType wdiEventData;
5407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5408
5409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 ------------------------------------------------------------------------*/
5412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5413 {
5414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5415 "WDI API call before module is initialized - Fail request");
5416
Jeff Johnsone7245742012-09-05 17:12:55 -07005417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005418 }
5419
5420 /*------------------------------------------------------------------------
5421 Fill in Event data and post to the Main FSM
5422 ------------------------------------------------------------------------*/
5423 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005424 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5425 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5426 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 wdiEventData.pUserData = pUserData;
5428
5429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5430
5431}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005432
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305433#ifdef FEATURE_WLAN_TDLS
5434/**
5435 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5436 upper MAC wants to send TDLS Link Establish Request Parameters
5437 Upon the call of this API the WLAN DAL will
5438 pack and send the TDLS Link Establish Request message to the
5439 lower RIVA sub-system if DAL is in state STARTED.
5440
5441 In state BUSY this request will be queued. Request won't
5442 be allowed in any other state.
5443
5444
5445 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5446 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5447
5448 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5449 response of the TDLS Link Establish request received
5450 from the device
5451
5452 pUserData: user data will be passed back with the
5453 callback
5454
5455 @see
5456 @return Result of the function call
5457*/
5458WDI_Status
5459WDI_SetTDLSLinkEstablishReq
5460(
5461 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5462 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5463 void* pUserData
5464)
5465{
5466 WDI_EventInfoType wdiEventData;
5467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5468
5469 /*------------------------------------------------------------------------
5470 Sanity Check
5471 ------------------------------------------------------------------------*/
5472 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5473 {
5474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5475 "WDI API call before module is initialized - Fail request");
5476
5477 return WDI_STATUS_E_NOT_ALLOWED;
5478 }
5479
5480 /*------------------------------------------------------------------------
5481 Fill in Event data and post to the Main FSM
5482 ------------------------------------------------------------------------*/
5483 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5484 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5485 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5486 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5487 wdiEventData.pUserData = pUserData;
5488
5489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5490
5491}/*WDI_SetTDLSLinkEstablishReq*/
5492#endif
5493
Jeff Johnson295189b2012-06-20 16:38:30 -07005494/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005495 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005496 UMAC wanted to add STA self while opening any new session
5497 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005498 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005499
5500
Jeff Johnsone7245742012-09-05 17:12:55 -07005501 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005502 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 callback
5506
5507 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 @return Result of the function call
5509*/
5510WDI_Status
5511WDI_AddSTASelfReq
5512(
5513 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5514 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5515 void* pUserData
5516)
5517{
5518 WDI_EventInfoType wdiEventData;
5519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5520
5521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005523 ------------------------------------------------------------------------*/
5524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5525 {
5526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5527 "WDI API call before module is initialized - Fail request");
5528
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 }
5531
5532 /*------------------------------------------------------------------------
5533 Fill in Event data and post to the Main FSM
5534 ------------------------------------------------------------------------*/
5535 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005536 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5537 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5538 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 wdiEventData.pUserData = pUserData;
5540
5541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5542
5543}/*WDI_AddSTASelfReq*/
5544
5545
Jeff Johnsone7245742012-09-05 17:12:55 -07005546#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005547/**
5548 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5549 the device of a successful add TSpec negotiation. HW
5550 needs to receive the TSpec Info from the UMAC in order
5551 to configure properly the QoS data traffic. Upon the
5552 call of this API the WLAN DAL will pack and send a HAL
5553 Add TS request message to the lower RIVA sub-system if
5554 DAL is in state STARTED.
5555
5556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005558
5559 WDI_PostAssocReq must have been called.
5560
5561 @param wdiAddTsReqParams: the add TS parameters as specified by
5562 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005563
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 wdiAddTsRspCb: callback for passing back the response of
5565 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005566
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 callback
5569
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 @see WDI_PostAssocReq
5571 @return Result of the function call
5572*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005573WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005574WDI_AggrAddTSReq
5575(
5576 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5577 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5578 void* pUserData
5579)
5580{
5581 WDI_EventInfoType wdiEventData;
5582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5583
5584 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 ------------------------------------------------------------------------*/
5587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5588 {
5589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5590 "WDI API call before module is initialized - Fail request");
5591
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 }
5594
5595 /*------------------------------------------------------------------------
5596 Fill in Event data and post to the Main FSM
5597 ------------------------------------------------------------------------*/
5598 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5600 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5601 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 wdiEventData.pUserData = pUserData;
5603
5604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5605
5606}/*WDI_AggrAddTSReq*/
5607
5608#endif /* WLAN_FEATURE_VOWIFI_11R */
5609
Jeff Johnson295189b2012-06-20 16:38:30 -07005610/**
5611 @brief WDI_FTMCommandReq
5612 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005613
5614 @param ftmCommandReq: FTM Command Body
5615 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005616 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005617
Jeff Johnson295189b2012-06-20 16:38:30 -07005618 @see
5619 @return Result of the function call
5620*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005621WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005622WDI_FTMCommandReq
5623(
5624 WDI_FTMCommandReqType *ftmCommandReq,
5625 WDI_FTMCommandRspCb ftmCommandRspCb,
5626 void *pUserData
5627)
5628{
5629 WDI_EventInfoType wdiEventData;
5630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5631
5632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 ------------------------------------------------------------------------*/
5635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5636 {
5637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5638 "WDI API call before module is initialized - Fail request");
5639
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 }
5642
5643 /*------------------------------------------------------------------------
5644 Fill in Event data and post to the Main FSM
5645 ------------------------------------------------------------------------*/
5646 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5647 wdiEventData.pEventData = (void *)ftmCommandReq;
5648 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5649 wdiEventData.pCBfnc = ftmCommandRspCb;
5650 wdiEventData.pUserData = pUserData;
5651
5652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5653}
Jeff Johnson295189b2012-06-20 16:38:30 -07005654/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005655 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005656
5657 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005658 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005659
5660
5661 @param pwdiResumeReqParams: as specified by
5662 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005663
Jeff Johnson295189b2012-06-20 16:38:30 -07005664 wdiResumeReqRspCb: callback for passing back the response of
5665 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005666
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 callback
5669
5670 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 @return Result of the function call
5672*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005674WDI_HostResumeReq
5675(
5676 WDI_ResumeParamsType* pwdiResumeReqParams,
5677 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5678 void* pUserData
5679)
5680{
5681 WDI_EventInfoType wdiEventData;
5682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5683
5684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005686 ------------------------------------------------------------------------*/
5687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5688 {
5689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5690 "WDI API call before module is initialized - Fail request");
5691
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005693 }
5694
5695 /*------------------------------------------------------------------------
5696 Fill in Event data and post to the Main FSM
5697 ------------------------------------------------------------------------*/
5698 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 wdiEventData.pEventData = pwdiResumeReqParams;
5700 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5701 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 wdiEventData.pUserData = pUserData;
5703
5704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5705
5706}/*WDI_HostResumeReq*/
5707
5708/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005709 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005710
5711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005713
5714
5715 @param pwdiDelStaSelfReqParams: as specified by
5716 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 wdiDelStaSelfRspCb: callback for passing back the response of
5719 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005720
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005722 callback
5723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 @see WDI_PostAssocReq
5725 @return Result of the function call
5726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005728WDI_DelSTASelfReq
5729(
5730 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5731 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5732 void* pUserData
5733)
5734{
5735 WDI_EventInfoType wdiEventData;
5736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5737
5738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 ------------------------------------------------------------------------*/
5741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5742 {
5743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5744 "WDI API call before module is initialized - Fail request");
5745
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 }
5748
5749 /*------------------------------------------------------------------------
5750 Fill in Event data and post to the Main FSM
5751 ------------------------------------------------------------------------*/
5752 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5754 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5755 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 wdiEventData.pUserData = pUserData;
5757
5758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5759
5760}/*WDI_AggrAddTSReq*/
5761
5762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005763 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5764 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 Upon the call of this API the WLAN DAL will pack
5766 and send a HAL Set Tx Per Tracking request message to the
5767 lower RIVA sub-system if DAL is in state STARTED.
5768
5769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005771
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005773 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005774
Jeff Johnson295189b2012-06-20 16:38:30 -07005775 pwdiSetTxPerTrackingRspCb: callback for passing back the
5776 response of the set Tx PER Tracking configurations operation received
5777 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005780 callback
5781
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 @return Result of the function call
5783*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005785WDI_SetTxPerTrackingReq
5786(
5787 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5788 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5789 void* pUserData
5790)
5791{
5792 WDI_EventInfoType wdiEventData;
5793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5794
5795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 ------------------------------------------------------------------------*/
5798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5799 {
5800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5801 "WDI API call before module is initialized - Fail request");
5802
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 }
5805
5806 /*------------------------------------------------------------------------
5807 Fill in Event data and post to the Main FSM
5808 ------------------------------------------------------------------------*/
5809 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005812 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005813 wdiEventData.pUserData = pUserData;
5814
5815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5816
5817}/*WDI_SetTxPerTrackingReq*/
5818
5819/**
5820 @brief WDI_SetTmLevelReq
5821 If HW Thermal condition changed, driver should react based on new
5822 HW thermal condition.
5823
5824 @param pwdiSetTmLevelReq: New thermal condition information
5825
5826 pwdiSetTmLevelRspCb: callback
5827
5828 usrData: user data will be passed back with the
5829 callback
5830
5831 @return Result of the function call
5832*/
5833WDI_Status
5834WDI_SetTmLevelReq
5835(
5836 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5837 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5838 void *usrData
5839)
5840{
5841 WDI_EventInfoType wdiEventData;
5842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5843
5844 /*------------------------------------------------------------------------
5845 Sanity Check
5846 ------------------------------------------------------------------------*/
5847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5848 {
5849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5850 "WDI API call before module is initialized - Fail request");
5851
5852 return WDI_STATUS_E_NOT_ALLOWED;
5853 }
5854
5855 /*------------------------------------------------------------------------
5856 Fill in Event data and post to the Main FSM
5857 ------------------------------------------------------------------------*/
5858 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5859 wdiEventData.pEventData = pwdiSetTmLevelReq;
5860 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5861 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5862 wdiEventData.pUserData = usrData;
5863
5864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5865}
5866
5867/**
5868 @brief WDI_HostSuspendInd
5869
5870 Suspend Indication from the upper layer will be sent
5871 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005872
Jeff Johnson295189b2012-06-20 16:38:30 -07005873 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005874
5875 @see
5876
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 @return Status of the request
5878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005880WDI_HostSuspendInd
5881(
5882 WDI_SuspendParamsType* pwdiSuspendIndParams
5883)
5884{
5885
5886 WDI_EventInfoType wdiEventData;
5887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5888
5889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 ------------------------------------------------------------------------*/
5892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5893 {
5894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5895 "WDI API call before module is initialized - Fail request");
5896
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 }
5899
5900 /*------------------------------------------------------------------------
5901 Fill in Event data and post to the Main FSM
5902 ------------------------------------------------------------------------*/
5903 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005904 wdiEventData.pEventData = pwdiSuspendIndParams;
5905 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5906 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 wdiEventData.pUserData = NULL;
5908
5909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5910
5911}/*WDI_HostSuspendInd*/
5912
5913/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08005914 @brief WDI_TrafficStatsInd
5915 Traffic Stats from the upper layer will be sent
5916 down to HAL
5917
5918 @param WDI_TrafficStatsIndType
5919
5920 @see
5921
5922 @return Status of the request
5923*/
5924WDI_Status
5925WDI_TrafficStatsInd
5926(
5927 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5928)
5929{
5930
5931 WDI_EventInfoType wdiEventData;
5932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5933
5934 /*------------------------------------------------------------------------
5935 Sanity Check
5936 ------------------------------------------------------------------------*/
5937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5938 {
5939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5940 "WDI API call before module is initialized - Fail request");
5941
5942 return WDI_STATUS_E_NOT_ALLOWED;
5943 }
5944
5945 /*------------------------------------------------------------------------
5946 Fill in Event data and post to the Main FSM
5947 ------------------------------------------------------------------------*/
5948 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5949 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5950 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5951 wdiEventData.pCBfnc = NULL;
5952 wdiEventData.pUserData = NULL;
5953
5954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5955
5956}/*WDI_TrafficStatsInd*/
5957
Chet Lanctot186b5732013-03-18 10:26:30 -07005958#ifdef WLAN_FEATURE_11W
5959/**
5960 @brief WDI_ExcludeUnencryptedInd
5961 Register with HAL to receive/drop unencrypted frames
5962
5963 @param WDI_ExcludeUnencryptIndType
5964
5965 @see
5966
5967 @return Status of the request
5968*/
5969WDI_Status
5970WDI_ExcludeUnencryptedInd
5971(
5972 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5973)
5974{
5975
5976 WDI_EventInfoType wdiEventData;
5977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5978
5979 /*------------------------------------------------------------------------
5980 Sanity Check
5981 ------------------------------------------------------------------------*/
5982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5983 {
5984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5985 "WDI API call before module is initialized - Fail request");
5986
5987 return WDI_STATUS_E_NOT_ALLOWED;
5988 }
5989
5990 /*------------------------------------------------------------------------
5991 Fill in Event data and post to the Main FSM
5992 ------------------------------------------------------------------------*/
5993 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5994 wdiEventData.pEventData = pWdiExcUnencParams;
5995 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5996 wdiEventData.pCBfnc = NULL;
5997 wdiEventData.pUserData = NULL;
5998
5999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6000
6001}/*WDI_TrafficStatsInd*/
6002#endif
6003
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006004/**
Yue Mab9c86f42013-08-14 15:59:08 -07006005 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6006
6007 @param addPeriodicTxPtrnParams: Add Pattern parameters
6008
6009 @see
6010
6011 @return Status of the request
6012*/
6013WDI_Status
6014WDI_AddPeriodicTxPtrnInd
6015(
6016 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6017)
6018{
6019 WDI_EventInfoType wdiEventData;
6020
6021 /*-------------------------------------------------------------------------
6022 Sanity Check
6023 ------------------------------------------------------------------------*/
6024 if (eWLAN_PAL_FALSE == gWDIInitialized)
6025 {
6026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6027 "WDI API call before module is initialized - Fail request!");
6028
6029 return WDI_STATUS_E_NOT_ALLOWED;
6030 }
6031
6032 /*-------------------------------------------------------------------------
6033 Fill in Event data and post to the Main FSM
6034 ------------------------------------------------------------------------*/
6035 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6036 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6037 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6038 wdiEventData.pCBfnc = NULL;
6039 wdiEventData.pUserData = NULL;
6040
6041 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6042}
6043
6044/**
6045 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6046
6047 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6048
6049 @see
6050
6051 @return Status of the request
6052*/
6053WDI_Status
6054WDI_DelPeriodicTxPtrnInd
6055(
6056 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6057)
6058{
6059 WDI_EventInfoType wdiEventData;
6060
6061 /*-------------------------------------------------------------------------
6062 Sanity Check
6063 ------------------------------------------------------------------------*/
6064 if (eWLAN_PAL_FALSE == gWDIInitialized)
6065 {
6066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6067 "WDI API call before module is initialized - Fail request!");
6068
6069 return WDI_STATUS_E_NOT_ALLOWED;
6070 }
6071
6072 /*-------------------------------------------------------------------------
6073 Fill in Event data and post to the Main FSM
6074 ------------------------------------------------------------------------*/
6075 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6076 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6077 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6078 wdiEventData.pCBfnc = NULL;
6079 wdiEventData.pUserData = NULL;
6080
6081 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6082}
6083
6084/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006085 @brief WDI_HALDumpCmdReq
6086 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006087
6088 @param halDumpCmdReqParams: Hal Dump Command Body
6089 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006091
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 @see
6093 @return Result of the function call
6094*/
6095WDI_Status WDI_HALDumpCmdReq
6096(
6097 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6098 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6099 void *pUserData
6100)
6101{
6102 WDI_EventInfoType wdiEventData;
6103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6104
6105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006107 ------------------------------------------------------------------------*/
6108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6109 {
6110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6111 "WDI API call before module is initialized - Fail request");
6112
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 }
6115
6116 /*------------------------------------------------------------------------
6117 Fill in Event data and post to the Main FSM
6118 ------------------------------------------------------------------------*/
6119 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6120 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6121 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6122 wdiEventData.pCBfnc = halDumpCmdRspCb;
6123 wdiEventData.pUserData = pUserData;
6124
6125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6126}
6127
Jeff Johnsone7245742012-09-05 17:12:55 -07006128/*============================================================================
6129
Jeff Johnson295189b2012-06-20 16:38:30 -07006130 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 ============================================================================*/
6133
6134/**
6135 @brief Main FSM Start function for all states except BUSY
6136
Jeff Johnsone7245742012-09-05 17:12:55 -07006137
6138 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006139 wdiEV: event posted to the main DAL FSM
6140 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006141 structure
6142
Jeff Johnson295189b2012-06-20 16:38:30 -07006143 @see
6144 @return Result of the function call
6145*/
6146WDI_Status
6147WDI_PostMainEvent
6148(
Jeff Johnsone7245742012-09-05 17:12:55 -07006149 WDI_ControlBlockType* pWDICtx,
6150 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006152
Jeff Johnson295189b2012-06-20 16:38:30 -07006153)
6154{
Jeff Johnsone7245742012-09-05 17:12:55 -07006155 WDI_Status wdiStatus;
6156 WDI_MainFuncType pfnWDIMainEvHdlr;
6157 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6159
6160 /*-------------------------------------------------------------------------
6161 Sanity check
6162 -------------------------------------------------------------------------*/
6163 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6164 ( wdiEV >= WDI_MAX_EVENT ))
6165 {
6166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6167 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6168 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 }
6171
6172 /*Access to the global state must be locked */
6173 wpalMutexAcquire(&pWDICtx->wptMutex);
6174
6175 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006177
6178 wdiOldState = pWDICtx->uGlobalState;
6179
6180 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6182 response comes from CCPU for the request sent by host:
6183 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 -07006184 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 -07006185 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006186 CCPU:
6187 don't change the state */
6188 if ( WDI_RESPONSE_EVENT != wdiEV)
6189 {
6190 /*Transition to BUSY State - the request is now being processed by the FSM,
6191 if the request fails we shall transition back to the old state, if not
6192 the request will manage its own state transition*/
6193 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6194 }
6195 /* If the state function associated with the EV is NULL it means that this
6196 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006197 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006198 {
6199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006202 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006203 }
6204 else
6205 {
6206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006208 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 }
6211
6212 /* If a request handles itself well it will end up in a success or in a
6213 pending
6214 Success - means that the request was processed and the proper state
6215 transition already occurred or will occur when the resp is received
6216 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006217
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 Pending - means the request could not be processed at this moment in time
6219 because the FSM was already busy so no state transition or dequeueing
6220 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006221
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 Success for synchronous case means that the transition may occur and
6223 processing of pending requests may continue - so it should go through
6224 and restores the state and continue processing queued requests*/
6225 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6226 ( WDI_STATUS_PENDING != wdiStatus ))
6227 {
6228 if ( WDI_RESPONSE_EVENT != wdiEV)
6229 {
6230 /*The request has failed or could not be processed - transition back to
6231 the old state - check to see if anything was queued and try to execute
6232 The dequeue logic should post a message to a thread and return - no
6233 actual processing can occur */
6234 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6235 }
6236 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006237
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 }
6239
6240 /* we have completed processing the event */
6241 wpalMutexRelease(&pWDICtx->wptMutex);
6242
Jeff Johnsone7245742012-09-05 17:12:55 -07006243 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006244
6245}/*WDI_PostMainEvent*/
6246
6247
6248/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006249 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006250--------------------------------------------------------------------------*/
6251/**
6252 @brief Main FSM Start function for all states except BUSY
6253
Jeff Johnsone7245742012-09-05 17:12:55 -07006254
6255 @param pWDICtx: pointer to the WLAN DAL context
6256 pEventData: pointer to the event information structure
6257
Jeff Johnson295189b2012-06-20 16:38:30 -07006258 @see
6259 @return Result of the function call
6260*/
6261WDI_Status
6262WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006263(
Jeff Johnson295189b2012-06-20 16:38:30 -07006264 WDI_ControlBlockType* pWDICtx,
6265 WDI_EventInfoType* pEventData
6266)
6267{
6268
6269 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 ----------------------------------------------------------------------*/
6272 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6273 {
6274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 pWDICtx, pEventData);
6277 return WDI_STATUS_E_FAILURE;
6278 }
6279
6280 wpalMutexAcquire(&pWDICtx->wptMutex);
6281
6282 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006283 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006284 ----------------------------------------------------------------------*/
6285 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6286 {
6287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6288 "Control Transport not yet Open - queueing the request");
6289
6290 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006291 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006292
6293 wpalMutexRelease(&pWDICtx->wptMutex);
6294 return WDI_STATUS_PENDING;
6295 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006296
Jeff Johnson295189b2012-06-20 16:38:30 -07006297 wpalMutexRelease(&pWDICtx->wptMutex);
6298
6299 /*Return Success*/
6300 return WDI_ProcessRequest( pWDICtx, pEventData );
6301
6302}/*WDI_MainStart*/
6303
6304/**
6305 @brief Main FSM Response function for state INIT
6306
Jeff Johnsone7245742012-09-05 17:12:55 -07006307
6308 @param pWDICtx: pointer to the WLAN DAL context
6309 pEventData: pointer to the event information structure
6310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 @see
6312 @return Result of the function call
6313*/
6314WDI_Status
6315WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006316(
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 WDI_ControlBlockType* pWDICtx,
6318 WDI_EventInfoType* pEventData
6319)
6320{
6321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006322 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006323 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006324 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006325
6326 /*Return Success*/
6327 return WDI_STATUS_E_NOT_ALLOWED;
6328}/* WDI_MainRspInit */
6329
6330/**
6331 @brief Main FSM Close function for all states except BUSY
6332
Jeff Johnsone7245742012-09-05 17:12:55 -07006333
6334 @param pWDICtx: pointer to the WLAN DAL context
6335 pEventData: pointer to the event information structure
6336
Jeff Johnson295189b2012-06-20 16:38:30 -07006337 @see
6338 @return Result of the function call
6339*/
6340WDI_Status
6341WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006342(
Jeff Johnson295189b2012-06-20 16:38:30 -07006343 WDI_ControlBlockType* pWDICtx,
6344 WDI_EventInfoType* pEventData
6345)
6346{
6347
6348 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006349 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 ----------------------------------------------------------------------*/
6351 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6352 {
6353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006354 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006355 pWDICtx, pEventData);
6356 return WDI_STATUS_E_FAILURE;
6357 }
6358
6359 /*Return Success*/
6360 return WDI_ProcessRequest( pWDICtx, pEventData );
6361
6362}/*WDI_MainClose*/
6363/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006364 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006365--------------------------------------------------------------------------*/
6366/**
6367 @brief Main FSM Start function for state STARTED
6368
Jeff Johnsone7245742012-09-05 17:12:55 -07006369
6370 @param pWDICtx: pointer to the WLAN DAL context
6371 pEventData: pointer to the event information structure
6372
Jeff Johnson295189b2012-06-20 16:38:30 -07006373 @see
6374 @return Result of the function call
6375*/
6376WDI_Status
6377WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006378(
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 WDI_ControlBlockType* pWDICtx,
6380 WDI_EventInfoType* pEventData
6381)
6382{
6383 WDI_StartRspCb wdiStartRspCb = NULL;
6384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6385
6386 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006387 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 ----------------------------------------------------------------------*/
6389 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6390 {
6391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 pWDICtx, pEventData);
6394 return WDI_STATUS_E_FAILURE;
6395 }
6396
6397 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 ----------------------------------------------------------------------*/
6400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006402
6403 wpalMutexAcquire(&pWDICtx->wptMutex);
6404
6405 /*Transition back to started because the post function transitioned us to
6406 busy*/
6407 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6408
6409 /*Check to see if any request is pending*/
6410 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006411
Jeff Johnson295189b2012-06-20 16:38:30 -07006412 wpalMutexRelease(&pWDICtx->wptMutex);
6413
6414 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6416
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 /*Notify UMAC*/
6418 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6419
6420 /*Return Success*/
6421 return WDI_STATUS_SUCCESS;
6422
6423}/*WDI_MainStartStarted*/
6424
6425/**
6426 @brief Main FSM Stop function for state STARTED
6427
Jeff Johnsone7245742012-09-05 17:12:55 -07006428
6429 @param pWDICtx: pointer to the WLAN DAL context
6430 pEventData: pointer to the event information structure
6431
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 @see
6433 @return Result of the function call
6434*/
6435WDI_Status
6436WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006437(
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 WDI_ControlBlockType* pWDICtx,
6439 WDI_EventInfoType* pEventData
6440)
6441{
6442 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 ----------------------------------------------------------------------*/
6445 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6446 {
6447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006448 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 pWDICtx, pEventData);
6450 return WDI_STATUS_E_FAILURE;
6451 }
6452
6453 /*State at this point is BUSY - because we enter this state before posting
6454 an event to the FSM in order to prevent potential race conditions*/
6455
6456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6457 "Processing stop request in FSM");
6458
6459 /*Return Success*/
6460 return WDI_ProcessRequest( pWDICtx, pEventData );
6461
6462}/*WDI_MainStopStarted*/
6463/**
6464 @brief Main FSM Request function for state started
6465
Jeff Johnsone7245742012-09-05 17:12:55 -07006466
6467 @param pWDICtx: pointer to the WLAN DAL context
6468 pEventData: pointer to the event information structure
6469
Jeff Johnson295189b2012-06-20 16:38:30 -07006470 @see
6471 @return Result of the function call
6472*/
6473WDI_Status
6474WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006475(
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 WDI_ControlBlockType* pWDICtx,
6477 WDI_EventInfoType* pEventData
6478)
6479{
6480
6481 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006482 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006483 ----------------------------------------------------------------------*/
6484 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6485 {
6486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 pWDICtx, pEventData);
6489 return WDI_STATUS_E_FAILURE;
6490 }
6491
6492 /*State at this point is BUSY - because we enter this state before posting
6493 an event to the FSM in order to prevent potential race conditions*/
6494
6495 /*Return Success*/
6496 return WDI_ProcessRequest( pWDICtx, pEventData );
6497
6498}/*WDI_MainReqStarted*/
6499
6500/**
6501 @brief Main FSM Response function for all states except INIT
6502
Jeff Johnsone7245742012-09-05 17:12:55 -07006503
6504 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006506
Jeff Johnson295189b2012-06-20 16:38:30 -07006507 @see
6508 @return Result of the function call
6509*/
6510WDI_Status
6511WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006512(
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 WDI_ControlBlockType* pWDICtx,
6514 WDI_EventInfoType* pEventData
6515)
6516{
Jeff Johnsone7245742012-09-05 17:12:55 -07006517 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 wpt_boolean expectedResponse;
6519
6520 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 ----------------------------------------------------------------------*/
6523 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6524 {
6525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 pWDICtx, pEventData);
6528 return WDI_STATUS_E_FAILURE;
6529 }
6530
6531 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6532 {
6533 /* we received an expected response */
6534 expectedResponse = eWLAN_PAL_TRUE;
6535
6536 /*We expect that we will transition to started after this processing*/
6537 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6538
6539 /* we are no longer expecting a response */
6540 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6541 }
6542 else
6543 {
6544 /* we received an indication or unexpected response */
6545 expectedResponse = eWLAN_PAL_FALSE;
6546 /* for indications no need to update state from what it is right
6547 now, unless it explicitly does it in the indication handler (say
6548 for device failure ind) */
6549 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6550 }
6551
6552 /*Process the response and indication */
6553 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6554
6555 /*Lock the CB as we are about to do a state transition*/
6556 wpalMutexAcquire(&pWDICtx->wptMutex);
6557
6558 /*Transition to the expected state after the response processing
6559 - this should always be started state with the following exceptions:
6560 1. processing of a failed start response
6561 2. device failure detected while processing response
6562 3. stop response received*/
6563 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006564
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 /*Dequeue request that may have been queued while we were waiting for the
6566 response */
6567 if ( expectedResponse )
6568 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 }
6571
6572 wpalMutexRelease(&pWDICtx->wptMutex);
6573
6574 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006576
6577}/*WDI_MainRsp*/
6578
6579/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006580 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006581--------------------------------------------------------------------------*/
6582/**
6583 @brief Main FSM Stop function for state STOPPED
6584
Jeff Johnsone7245742012-09-05 17:12:55 -07006585
6586 @param pWDICtx: pointer to the WLAN DAL context
6587 pEventData: pointer to the event information structure
6588
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 @see
6590 @return Result of the function call
6591*/
6592WDI_Status
6593WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006594(
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 WDI_ControlBlockType* pWDICtx,
6596 WDI_EventInfoType* pEventData
6597)
6598{
6599 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 ----------------------------------------------------------------------*/
6602 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6603 {
6604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006605 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006606 pWDICtx, pEventData);
6607 return WDI_STATUS_E_FAILURE;
6608 }
6609
6610 /*We should normally not get a STOP request if we are already stopped
6611 since we should normally be stopped by the UMAC. However in some
6612 error situations we put ourselves in the stopped state without the
6613 UMAC knowing, so when we get a STOP request in this state we still
6614 process it since we need to clean up the underlying state */
6615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6616 "Processing stop request while stopped in FSM");
6617
6618 /*Return Success*/
6619 return WDI_ProcessRequest( pWDICtx, pEventData );
6620
6621}/*WDI_MainStopStopped*/
6622
6623/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006625--------------------------------------------------------------------------*/
6626/**
6627 @brief Main FSM Start function for state BUSY
6628
Jeff Johnsone7245742012-09-05 17:12:55 -07006629
6630 @param pWDICtx: pointer to the WLAN DAL context
6631 pEventData: pointer to the event information structure
6632
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 @see
6634 @return Result of the function call
6635*/
6636WDI_Status
6637WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006638(
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 WDI_ControlBlockType* pWDICtx,
6640 WDI_EventInfoType* pEventData
6641)
6642{
6643 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 ----------------------------------------------------------------------*/
6646 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6647 {
6648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006649 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006650 pWDICtx, pEventData);
6651 return WDI_STATUS_E_FAILURE;
6652 }
6653
6654 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006655 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006656 ----------------------------------------------------------------------*/
6657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6658 "WDI Busy state - queue start request");
6659
6660 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006661 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006662
6663 /*Return Success*/
6664 return WDI_STATUS_PENDING;
6665}/*WDI_MainStartBusy*/
6666
6667/**
6668 @brief Main FSM Stop function for state BUSY
6669
Jeff Johnsone7245742012-09-05 17:12:55 -07006670
6671 @param pWDICtx: pointer to the WLAN DAL context
6672 pEventData: pointer to the event information structure
6673
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 @see
6675 @return Result of the function call
6676*/
6677WDI_Status
6678WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006679(
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 WDI_ControlBlockType* pWDICtx,
6681 WDI_EventInfoType* pEventData
6682)
6683{
6684 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 ----------------------------------------------------------------------*/
6687 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6688 {
6689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006690 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 pWDICtx, pEventData);
6692 return WDI_STATUS_E_FAILURE;
6693 }
6694
6695 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006696 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006697 ----------------------------------------------------------------------*/
6698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6699 "WDI Busy state - queue stop request");
6700
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006703
Jeff Johnson295189b2012-06-20 16:38:30 -07006704}/*WDI_MainStopBusy*/
6705
6706/**
6707 @brief Main FSM Request function for state BUSY
6708
Jeff Johnsone7245742012-09-05 17:12:55 -07006709
6710 @param pWDICtx: pointer to the WLAN DAL context
6711 pEventData: pointer to the event information structure
6712
Jeff Johnson295189b2012-06-20 16:38:30 -07006713 @see
6714 @return Result of the function call
6715*/
6716WDI_Status
6717WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006718(
Jeff Johnson295189b2012-06-20 16:38:30 -07006719 WDI_ControlBlockType* pWDICtx,
6720 WDI_EventInfoType* pEventData
6721)
6722{
6723 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006725 ----------------------------------------------------------------------*/
6726 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6727 {
6728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006729 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 pWDICtx, pEventData);
6731 return WDI_STATUS_E_FAILURE;
6732 }
6733
6734 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006736 ----------------------------------------------------------------------*/
6737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6738 "WDI Busy state - queue request %d because waiting for response %d",
6739 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6740
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006743
Jeff Johnson295189b2012-06-20 16:38:30 -07006744}/*WDI_MainReqBusy*/
6745/**
6746 @brief Main FSM Close function for state BUSY
6747
Jeff Johnsone7245742012-09-05 17:12:55 -07006748
6749 @param pWDICtx: pointer to the WLAN DAL context
6750 pEventData: pointer to the event information structure
6751
Jeff Johnson295189b2012-06-20 16:38:30 -07006752 @see
6753 @return Result of the function call
6754*/
6755WDI_Status
6756WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006757(
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 WDI_ControlBlockType* pWDICtx,
6759 WDI_EventInfoType* pEventData
6760)
6761{
6762 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 ----------------------------------------------------------------------*/
6765 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6766 {
6767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 pWDICtx, pEventData);
6770 return WDI_STATUS_E_FAILURE;
6771 }
6772
6773 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 ----------------------------------------------------------------------*/
6776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6777 "WDI Busy state - queue close request");
6778
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006781
Jeff Johnson295189b2012-06-20 16:38:30 -07006782}/*WDI_MainCloseBusy*/
6783
6784/**
6785 @brief Main FSM Shutdown function for INIT & STARTED states
6786
6787
6788 @param pWDICtx: pointer to the WLAN DAL context
6789 pEventData: pointer to the event information structure
6790
6791 @see
6792 @return Result of the function call
6793*/
6794WDI_Status
6795WDI_MainShutdown
6796(
6797 WDI_ControlBlockType* pWDICtx,
6798 WDI_EventInfoType* pEventData
6799)
6800{
6801 /*--------------------------------------------------------------------
6802 Sanity Check
6803 ----------------------------------------------------------------------*/
6804 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6805 {
6806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6807 "Invalid parameters on Main Start %x %x",
6808 pWDICtx, pEventData);
6809 return WDI_STATUS_E_FAILURE;
6810 }
6811
6812 /*State at this point is BUSY - because we enter this state before posting
6813 an event to the FSM in order to prevent potential race conditions*/
6814
6815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6816 "Processing shutdown request in FSM");
6817
6818 /*Return Success*/
6819 return WDI_ProcessRequest( pWDICtx, pEventData );
6820
6821}/*WDI_MainShutdown*/
6822
6823/**
6824 @brief Main FSM Shutdown function for BUSY state
6825
6826
6827 @param pWDICtx: pointer to the WLAN DAL context
6828 pEventData: pointer to the event information structure
6829
6830 @see
6831 @return Result of the function call
6832*/
6833WDI_Status
6834WDI_MainShutdownBusy
6835(
6836 WDI_ControlBlockType* pWDICtx,
6837 WDI_EventInfoType* pEventData
6838)
6839{
6840 /*--------------------------------------------------------------------
6841 Sanity Check
6842 ----------------------------------------------------------------------*/
6843 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6844 {
6845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6846 "Invalid parameters on Main Start %x %x",
6847 pWDICtx, pEventData);
6848 return WDI_STATUS_E_FAILURE;
6849 }
6850
6851 /* If you are waiting for a HAL response at this stage, you are not
6852 * going to get it. Riva is already shutdown/crashed.
6853 */
6854 wpalTimerStop(&gWDICb.wptResponseTimer);
6855
6856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6857 "Processing shutdown request in FSM: Busy state ");
6858
6859 return WDI_ProcessRequest( pWDICtx, pEventData );
6860
6861}/*WDI_MainShutdownBusy*/
6862
6863
Jeff Johnsone7245742012-09-05 17:12:55 -07006864/*=======================================================================
6865
Jeff Johnson295189b2012-06-20 16:38:30 -07006866 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006867
Jeff Johnson295189b2012-06-20 16:38:30 -07006868*=======================================================================*/
6869
6870/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006872========================================================================*/
6873/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006876
6877 @param pWDICtx: pointer to the WLAN DAL context
6878 pEventData: pointer to the event information structure
6879
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 @see
6881 @return Result of the function call
6882*/
6883WDI_Status
6884WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006885(
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 WDI_ControlBlockType* pWDICtx,
6887 WDI_EventInfoType* pEventData
6888)
6889{
6890 WDI_StartReqParamsType* pwdiStartParams = NULL;
6891 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006892 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006893 wpt_uint16 usDataOffset = 0;
6894 wpt_uint16 usSendSize = 0;
6895
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 tHalMacStartReqMsg halStartReq;
6897 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6899
6900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 -------------------------------------------------------------------------*/
6903 if (( NULL == pEventData ) ||
6904 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6905 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6906 {
6907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 }
6912
6913 /*-----------------------------------------------------------------------
6914 Get message buffer
6915 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006917 pwdiStartParams->usConfigBufferLen;
6918
Jeff Johnsone7245742012-09-05 17:12:55 -07006919 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006920 usLen,
6921 &pSendBuffer, &usDataOffset, &usSendSize))||
6922 ( usSendSize < (usDataOffset + usLen )))
6923 {
6924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6925 "Unable to get send buffer in start req %x %x %x",
6926 pEventData, pwdiStartParams, wdiStartRspCb);
6927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 }
6930
6931 /*-----------------------------------------------------------------------
6932 Fill in the message
6933 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 halStartReq.startReqParams.driverType =
6935 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006936
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 halStartReq.startReqParams.uConfigBufferLen =
6938 pwdiStartParams->usConfigBufferLen;
6939 wpalMemoryCopy( pSendBuffer+usDataOffset,
6940 &halStartReq.startReqParams,
6941 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006942
Jeff Johnsone7245742012-09-05 17:12:55 -07006943 usDataOffset += sizeof(halStartReq.startReqParams);
6944 wpalMemoryCopy( pSendBuffer+usDataOffset,
6945 pwdiStartParams->pConfigBuffer,
6946 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006947
6948 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006949 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006950
6951 /*Save Low Level Ind CB and associated user data - it will be used further
6952 on when an indication is coming from the lower MAC*/
6953 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006955
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
Jeff Johnson295189b2012-06-20 16:38:30 -07006964}/*WDI_ProcessStartReq*/
6965
6966/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006967 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006969
6970 @param pWDICtx: pointer to the WLAN DAL context
6971 pEventData: pointer to the event information structure
6972
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 @see
6974 @return Result of the function call
6975*/
6976WDI_Status
6977WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006978(
Jeff Johnson295189b2012-06-20 16:38:30 -07006979 WDI_ControlBlockType* pWDICtx,
6980 WDI_EventInfoType* pEventData
6981)
6982{
6983 WDI_StopReqParamsType* pwdiStopParams = NULL;
6984 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 wpt_uint16 usDataOffset = 0;
6987 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006988 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6991
6992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006994 -------------------------------------------------------------------------*/
6995 if (( NULL == pEventData ) ||
6996 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6997 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6998 {
6999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007002 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 }
7004
7005 /*-----------------------------------------------------------------------
7006 Get message buffer
7007 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 sizeof(halStopReq.stopReqParams),
7010 &pSendBuffer, &usDataOffset, &usSendSize))||
7011 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7012 {
7013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7014 "Unable to get send buffer in stop req %x %x %x",
7015 pEventData, pwdiStopParams, wdiStopRspCb);
7016 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007017 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 }
7019
7020 /*-----------------------------------------------------------------------
7021 Fill in the message
7022 -----------------------------------------------------------------------*/
7023 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7024 pwdiStopParams->wdiStopReason);
7025
Jeff Johnsone7245742012-09-05 17:12:55 -07007026 wpalMemoryCopy( pSendBuffer+usDataOffset,
7027 &halStopReq.stopReqParams,
7028 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007029
7030 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007032
7033 /*! TO DO: stop the data services */
7034 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7035 {
7036 /*Stop the STA Table !UT- check this logic again
7037 It is safer to do it here than on the response - because a stop is imminent*/
7038 WDI_STATableStop(pWDICtx);
7039
7040 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007041 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7042 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 {
7044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7045 "WDI Init failed to reset power state event");
7046
Jeff Johnsone7245742012-09-05 17:12:55 -07007047 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007048 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007049 }
7050 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007051 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7052 if( eWLAN_PAL_STATUS_SUCCESS != status )
7053 {
7054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7055 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007057 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007058 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007062 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7063 WDI_SET_POWER_STATE_TIMEOUT);
7064 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 {
7066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7067 "WDI Init failed to wait on an event");
7068
Jeff Johnsone7245742012-09-05 17:12:55 -07007069 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007070 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 }
7072 }
7073
7074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007077 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7079
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007080fail:
7081 // Release the message buffer so we don't leak
7082 wpalMemoryFree(pSendBuffer);
7083
7084failRequest:
7085 //WDA should have failure check to avoid the memory leak
7086 return WDI_STATUS_E_FAILURE;
7087
Jeff Johnson295189b2012-06-20 16:38:30 -07007088}/*WDI_ProcessStopReq*/
7089
7090/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007093
7094 @param pWDICtx: pointer to the WLAN DAL context
7095 pEventData: pointer to the event information structure
7096
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 @see
7098 @return Result of the function call
7099*/
7100WDI_Status
7101WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007102(
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 WDI_ControlBlockType* pWDICtx,
7104 WDI_EventInfoType* pEventData
7105)
7106{
Jeff Johnsone7245742012-09-05 17:12:55 -07007107 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7109
7110 /*Lock control block for cleanup*/
7111 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007112
Jeff Johnson295189b2012-06-20 16:38:30 -07007113 /*Clear all pending request*/
7114 WDI_ClearPendingRequests(pWDICtx);
7115
7116 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007118
7119 /* Close Data transport*/
7120 /* FTM mode does not open Data Path */
7121 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7122 {
7123 WDTS_Close(pWDICtx);
7124 }
7125
7126 /*Close the STA Table !UT- check this logic again*/
7127 WDI_STATableClose(pWDICtx);
7128
7129 /*close the PAL */
7130 wptStatus = wpalClose(pWDICtx->pPALContext);
7131 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7132 {
7133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7134 "Failed to wpal Close %d", wptStatus);
7135 WDI_ASSERT(0);
7136 }
7137
7138 /*Transition back to init state*/
7139 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7140
7141 wpalMutexRelease(&pWDICtx->wptMutex);
7142
7143 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007145
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147}/*WDI_ProcessCloseReq*/
7148
7149
7150/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007152===========================================================================*/
7153
7154/**
7155 @brief Process Init Scan Request function (called when Main FSM
7156 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007157
7158 @param pWDICtx: pointer to the WLAN DAL context
7159 pEventData: pointer to the event information structure
7160
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 @see
7162 @return Result of the function call
7163*/
7164WDI_Status
7165WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007166(
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 WDI_ControlBlockType* pWDICtx,
7168 WDI_EventInfoType* pEventData
7169)
7170{
7171 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7172 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 wpt_uint16 usDataOffset = 0;
7175 wpt_uint16 usSendSize = 0;
7176 wpt_uint8 i = 0;
7177
7178 tHalInitScanReqMsg halInitScanReqMsg;
7179
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 * It shold be removed once host and riva changes are in sync*/
7182 tHalInitScanConReqMsg halInitScanConReqMsg;
7183
7184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7185
7186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 -------------------------------------------------------------------------*/
7189 if (( NULL == pEventData ) ||
7190 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7191 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7192 {
7193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
7199#if 0
7200 wpalMutexAcquire(&pWDICtx->wptMutex);
7201 /*-----------------------------------------------------------------------
7202 Check to see if SCAN is already in progress - if so reject the req
7203 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 -----------------------------------------------------------------------*/
7206 if ( pWDICtx->bScanInProgress )
7207 {
7208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7209 "Scan is already in progress - subsequent scan is not allowed"
7210 " until the first scan completes");
7211
7212 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 }
7215
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7217 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007218
7219 wpalMutexRelease(&pWDICtx->wptMutex);
7220#endif
Viral Modid86bde22012-12-10 13:09:21 -08007221 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007222 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 * It shold be removed once host and riva changes are in sync*/
7225 /*-----------------------------------------------------------------------
7226 Get message buffer
7227 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 sizeof(halInitScanConReqMsg.initScanParams),
7230 &pSendBuffer, &usDataOffset, &usSendSize))||
7231 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7232 {
7233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7234 "Unable to get send buffer in init scan req %x %x %x",
7235 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 }
7239
7240
7241 /*-----------------------------------------------------------------------
7242 Fill in the message
7243 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007244 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007245 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7246
7247 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7248 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7249
Jeff Johnsone7245742012-09-05 17:12:55 -07007250 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7256
7257 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7258 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7259
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7261 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007262
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7265
7266 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7267 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7270 }
7271
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 wpalMemoryCopy( pSendBuffer+usDataOffset,
7273 &halInitScanConReqMsg.initScanParams,
7274 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 }
7276 else
7277 {
7278 /*-----------------------------------------------------------------------
7279 Get message buffer
7280 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 sizeof(halInitScanReqMsg.initScanParams),
7283 &pSendBuffer, &usDataOffset, &usSendSize))||
7284 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7285 {
7286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7287 "Unable to get send buffer in init scan req %x %x %x",
7288 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 }
7292
7293
7294 /*-----------------------------------------------------------------------
7295 Fill in the message
7296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7299
7300 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7301 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7302
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7309
7310 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7311 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7312
Jeff Johnsone7245742012-09-05 17:12:55 -07007313 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7315
7316 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7317 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007318 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7320 }
7321
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 wpalMemoryCopy( pSendBuffer+usDataOffset,
7323 &halInitScanReqMsg.initScanParams,
7324 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007325 }
7326
7327 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007329
7330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7335
7336}/*WDI_ProcessInitScanReq*/
7337
7338/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007341
7342 @param pWDICtx: pointer to the WLAN DAL context
7343 pEventData: pointer to the event information structure
7344
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 @see
7346 @return Result of the function call
7347*/
7348WDI_Status
7349WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007350(
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 WDI_ControlBlockType* pWDICtx,
7352 WDI_EventInfoType* pEventData
7353)
7354{
7355 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7356 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 wpt_uint16 usDataOffset = 0;
7359 wpt_uint16 usSendSize = 0;
7360
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7363
7364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 -------------------------------------------------------------------------*/
7367 if (( NULL == pEventData ) ||
7368 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7369 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7370 {
7371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 }
7376
7377#if 0
7378 wpalMutexAcquire(&pWDICtx->wptMutex);
7379 /*-----------------------------------------------------------------------
7380 Check to see if SCAN is already in progress - start scan is only
7381 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7386 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7387 {
7388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7389 "Scan start not allowed in this state %d %d",
7390 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007391
Jeff Johnson295189b2012-06-20 16:38:30 -07007392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007397
7398 wpalMutexRelease(&pWDICtx->wptMutex);
7399#endif
7400
7401 /*-----------------------------------------------------------------------
7402 Get message buffer
7403 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007404 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 sizeof(halStartScanReqMsg.startScanParams),
7406 &pSendBuffer, &usDataOffset, &usSendSize))||
7407 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7408 {
7409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7410 "Unable to get send buffer in start scan req %x %x %x",
7411 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 }
7415
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007418 wpalMemoryCopy( pSendBuffer+usDataOffset,
7419 &halStartScanReqMsg.startScanParams,
7420 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007421
7422 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424
7425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7430}/*WDI_ProcessStartScanReq*/
7431
7432
7433/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007436
7437 @param pWDICtx: pointer to the WLAN DAL context
7438 pEventData: pointer to the event information structure
7439
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 @see
7441 @return Result of the function call
7442*/
7443WDI_Status
7444WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007445(
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 WDI_ControlBlockType* pWDICtx,
7447 WDI_EventInfoType* pEventData
7448)
7449{
7450 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7451 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wpt_uint16 usDataOffset = 0;
7454 wpt_uint16 usSendSize = 0;
7455
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7458
7459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 -------------------------------------------------------------------------*/
7462 if (( NULL == pEventData ) ||
7463 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7464 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7465 {
7466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 }
7471
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7473 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 * forwarded to HAL and result in hang*/
7475#if 0
7476 wpalMutexAcquire(&pWDICtx->wptMutex);
7477 /*-----------------------------------------------------------------------
7478 Check to see if SCAN is already in progress - end scan is only
7479 allowed when a scan is ongoing and the state of the scan procedure
7480 is started
7481 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7484 {
7485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7486 "End start not allowed in this state %d %d",
7487 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007488
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 }
7492
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007494
7495 wpalMutexRelease(&pWDICtx->wptMutex);
7496#endif
7497
7498 /*-----------------------------------------------------------------------
7499 Get message buffer
7500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007502 sizeof(halEndScanReqMsg.endScanParams),
7503 &pSendBuffer, &usDataOffset, &usSendSize))||
7504 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7505 {
7506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7507 "Unable to get send buffer in start scan req %x %x %x",
7508 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 }
7512
7513 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7514
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 wpalMemoryCopy( pSendBuffer+usDataOffset,
7516 &halEndScanReqMsg.endScanParams,
7517 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007518
7519 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007521
7522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007523 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7527}/*WDI_ProcessEndScanReq*/
7528
7529
7530/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007533
7534 @param pWDICtx: pointer to the WLAN DAL context
7535 pEventData: pointer to the event information structure
7536
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 @see
7538 @return Result of the function call
7539*/
7540WDI_Status
7541WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007542(
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 WDI_ControlBlockType* pWDICtx,
7544 WDI_EventInfoType* pEventData
7545)
7546{
7547 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7548 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 wpt_uint16 usDataOffset = 0;
7551 wpt_uint16 usSendSize = 0;
7552 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007553 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7556
7557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 -------------------------------------------------------------------------*/
7560 if (( NULL == pEventData ) ||
7561 ( NULL == pEventData->pEventData) ||
7562 ( NULL == pEventData->pCBfnc))
7563 {
7564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 }
7569
7570 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7571 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7573 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 * forwarded to HAL and result in hang*/
7575#if 0
7576 wpalMutexAcquire(&pWDICtx->wptMutex);
7577 /*-----------------------------------------------------------------------
7578 Check to see if SCAN is already in progress
7579 Finish scan gets invoked any scan states. ie. abort scan
7580 It should be allowed in any states.
7581 -----------------------------------------------------------------------*/
7582 if ( !pWDICtx->bScanInProgress )
7583 {
7584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7585 "Finish start not allowed in this state %d",
7586 pWDICtx->bScanInProgress );
7587
7588 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007589 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007590 }
7591
7592 /*-----------------------------------------------------------------------
7593 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7597 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 wpalMutexRelease(&pWDICtx->wptMutex);
7599#endif
7600
7601 if ( pWDICtx->bInBmps )
7602 {
7603 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007604 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7605 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7606 {
7607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7608 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7609 WDI_ASSERT(0);
7610 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 }
7612
7613 /*-----------------------------------------------------------------------
7614 Get message buffer
7615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 sizeof(halFinishScanReqMsg.finishScanParams),
7618 &pSendBuffer, &usDataOffset, &usSendSize))||
7619 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7620 {
7621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7622 "Unable to get send buffer in start scan req %x %x %x",
7623 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007626 }
7627
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7630
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7633
Jeff Johnsone7245742012-09-05 17:12:55 -07007634 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7636
7637 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7638 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7639
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7646
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7649
7650 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7651 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7654 }
7655
7656 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7657 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7658
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 wpalMemoryCopy( pSendBuffer+usDataOffset,
7660 &halFinishScanReqMsg.finishScanParams,
7661 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007662
7663 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007665
7666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7671}/*WDI_ProcessFinishScanReq*/
7672
7673
7674/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007676==========================================================================*/
7677/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 @brief Process BSS Join for a given Session
7679
7680 @param pWDICtx: pointer to the WLAN DAL context
7681 pEventData: pointer to the event information structure
7682
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 @see
7684 @return Result of the function call
7685*/
7686WDI_Status
7687WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007688(
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 WDI_ControlBlockType* pWDICtx,
7690 WDI_JoinReqParamsType* pwdiJoinParams,
7691 WDI_JoinRspCb wdiJoinRspCb,
7692 void* pUserData
7693)
7694{
7695 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 wpt_uint16 usDataOffset = 0;
7698 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007700
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7703
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007704 wpalMutexAcquire(&pWDICtx->wptMutex);
7705
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 /*------------------------------------------------------------------------
7707 Check to see if we have any session with this BSSID already stored, we
7708 should not
7709 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7711 pwdiJoinParams->wdiReqInfo.macBSSID,
7712 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007713
7714 if ( NULL != pBSSSes )
7715 {
7716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007717 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7718 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007719
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007720 /*reset the bAssociationInProgress otherwise the next
7721 *join request will be queued*/
7722 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7723 wpalMutexRelease(&pWDICtx->wptMutex);
7724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 }
7726
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 if ( NULL == pBSSSes )
7732 {
7733
7734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7735 "DAL has no free sessions - cannot run another join");
7736
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007737 /*reset the bAssociationInProgress otherwise the next
7738 *join request will be queued*/
7739 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 }
7743
7744 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7746 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 WDI_MAC_ADDR_LEN);
7748
7749 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007752
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 wpalMutexRelease(&pWDICtx->wptMutex);
7754
7755 /*-----------------------------------------------------------------------
7756 Get message buffer
7757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 sizeof(halJoinReqMsg.joinReqParams),
7760 &pSendBuffer, &usDataOffset, &usSendSize))||
7761 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7762 {
7763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7764 "Unable to get send buffer in join req %x %x %x",
7765 pUserData, pwdiJoinParams, wdiJoinRspCb);
7766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 }
7769
7770 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007772
7773 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 pwdiJoinParams->wdiReqInfo.macSTASelf,
7775 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007776
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7779
7780 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7781
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007782#ifdef WLAN_FEATURE_VOWIFI
7783 halJoinReqMsg.joinReqParams.maxTxPower =
7784 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7785#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007786 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7788#endif
7789
Jeff Johnsone7245742012-09-05 17:12:55 -07007790 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7792 wdiSecondaryChannelOffset);
7793
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 wpalMemoryCopy( pSendBuffer+usDataOffset,
7795 &halJoinReqMsg.joinReqParams,
7796 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007797
7798 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007800
7801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7805 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007806
7807}/*WDI_ProcessBSSSessionJoinReq*/
7808
7809/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007812
7813 @param pWDICtx: pointer to the WLAN DAL context
7814 pEventData: pointer to the event information structure
7815
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 @see
7817 @return Result of the function call
7818*/
7819WDI_Status
7820WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007821(
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 WDI_ControlBlockType* pWDICtx,
7823 WDI_EventInfoType* pEventData
7824)
7825{
7826 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7827 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7828 WDI_JoinRspCb wdiJoinRspCb = NULL;
7829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7830
7831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 -------------------------------------------------------------------------*/
7834 if (( NULL == pEventData ) ||
7835 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7836 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7837 {
7838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007843
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 /*-------------------------------------------------------------------------
7845 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 -------------------------------------------------------------------------*/
7848 wpalMutexAcquire(&pWDICtx->wptMutex);
7849
7850 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7851 {
7852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7853 "Association is currently in progress, queueing new join req");
7854
7855 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 pwdiJoinParams->wdiReqInfo.macBSSID);
7858
7859 wpalMutexRelease(&pWDICtx->wptMutex);
7860
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 }
7863
7864 /*Starting a new association */
7865 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7866 wpalMutexRelease(&pWDICtx->wptMutex);
7867
7868 /*Process the Join Request*/
7869 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7870 wdiJoinRspCb,pEventData->pUserData);
7871
7872}/*WDI_ProcessJoinReq*/
7873
7874
7875/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007878
7879 @param pWDICtx: pointer to the WLAN DAL context
7880 pEventData: pointer to the event information structure
7881
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 @see
7883 @return Result of the function call
7884*/
7885WDI_Status
7886WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007887(
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 WDI_ControlBlockType* pWDICtx,
7889 WDI_EventInfoType* pEventData
7890)
7891{
7892 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7893 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 wpt_uint16 uMsgSize = 0;
7897 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 wpt_uint16 usDataOffset = 0;
7899 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007901
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7904
7905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 -------------------------------------------------------------------------*/
7908 if (( NULL == pEventData ) ||
7909 ( NULL == pEventData->pEventData ) ||
7910 ( NULL == pEventData->pCBfnc ))
7911 {
7912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 }
7917
7918 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7919 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7920 /*-------------------------------------------------------------------------
7921 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 -------------------------------------------------------------------------*/
7924 wpalMutexAcquire(&pWDICtx->wptMutex);
7925
7926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7930 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7931 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007932
Jeff Johnsone7245742012-09-05 17:12:55 -07007933 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 {
7935#ifdef WLAN_FEATURE_VOWIFI_11R
7936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 if ( NULL == pBSSSes )
7941 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007942
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7944 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007945
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007949
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7952 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007954
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7958#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 * Request in case of IBSS*/
7961 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7962 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7963 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7964 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7965 {
7966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 if ( NULL == pBSSSes )
7971 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007972
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7974 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007975
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007979
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7982 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007984
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7988 }
7989 else
7990 {
7991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7993 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7994 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7995
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 /* for IBSS testing */
7997 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 }
8000#endif
8001 }
8002
8003 /*------------------------------------------------------------------------
8004 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008005 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 ------------------------------------------------------------------------*/
8007 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8008 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8010 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8011 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8012 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008015
8016 wpalMutexRelease(&pWDICtx->wptMutex);
8017
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 }
8020
8021 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8023 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 sizeof(pWDICtx->wdiCachedConfigBssReq));
8025
8026 wpalMutexRelease(&pWDICtx->wptMutex);
8027
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8029#ifdef WLAN_FEATURE_11AC
8030 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008031 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 else
8033#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008034 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008035
8036 /*-----------------------------------------------------------------------
8037 Get message buffer
8038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8041 ( usSendSize < (usDataOffset + uMsgSize )))
8042 {
8043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8044 "Unable to get send buffer in config bss req %x %x %x",
8045 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 }
8049
8050 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008051#ifdef WLAN_FEATURE_11AC
8052 if (WDI_getFwWlanFeatCaps(DOT11AC))
8053 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8054 &pwdiConfigBSSParams->wdiReqInfo);
8055 else
8056#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 &pwdiConfigBSSParams->wdiReqInfo);
8059
8060 /* Need to fill in the STA Index to invalid, since at this point we have not
8061 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063
8064 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8066
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008067#ifdef WLAN_FEATURE_11AC
8068 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8069 wpalMemoryCopy( pSendBuffer+usDataOffset,
8070 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8071 uMsgSize);
8072 }else
8073#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008074 {
8075 if ( uMsgSize <= sizeof(tConfigBssParams) )
8076 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008077 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008078 &halConfigBssReqMsg.uBssParams.configBssParams,
8079 uMsgSize);
8080 }
8081 else
8082 {
8083 return WDI_STATUS_E_FAILURE;
8084 }
8085 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008086
8087 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008089
8090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008091 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8094 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 WDI_CONFIG_BSS_RESP);
8096
8097}/*WDI_ProcessConfigBSSReq*/
8098
8099
8100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008103
8104 @param pWDICtx: pointer to the WLAN DAL context
8105 pEventData: pointer to the event information structure
8106
Jeff Johnson295189b2012-06-20 16:38:30 -07008107 @see
8108 @return Result of the function call
8109*/
8110WDI_Status
8111WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008112(
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 WDI_ControlBlockType* pWDICtx,
8114 WDI_EventInfoType* pEventData
8115)
8116{
8117 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8118 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 wpt_uint16 usDataOffset = 0;
8123 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8128
8129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 -------------------------------------------------------------------------*/
8132 if (( NULL == pEventData ) ||
8133 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8134 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8135 {
8136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 }
8141
8142 /*-------------------------------------------------------------------------
8143 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 -------------------------------------------------------------------------*/
8146 wpalMutexAcquire(&pWDICtx->wptMutex);
8147
8148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8152 pwdiDelBSSParams->ucBssIdx,
8153 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008154
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 {
8157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 "%s: BSS does not yet exist. ucBssIdx %d",
8159 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008160
8161 wpalMutexRelease(&pWDICtx->wptMutex);
8162
8163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008165
8166 /*------------------------------------------------------------------------
8167 Check if this BSS is being currently processed or queued,
8168 if queued - queue the new request as well
8169 ------------------------------------------------------------------------*/
8170 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8173 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8174 __func__, pwdiDelBSSParams->ucBssIdx);
8175
8176 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8177
8178 wpalMutexRelease(&pWDICtx->wptMutex);
8179
8180 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008182
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 /*-----------------------------------------------------------------------
8184 If we receive a Del BSS request for an association that is already in
8185 progress, it indicates that the assoc has failed => we no longer have
8186 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 -----------------------------------------------------------------------*/
8189 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8190 {
8191 /*We can switch to false here because even if a subsequent Join comes in
8192 it will only be processed when DAL transitions out of BUSY state which
8193 happens when the Del BSS request comes */
8194 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8195
8196 /*Former association is complete - prepare next pending assoc for
8197 processing */
8198 WDI_DequeueAssocRequest(pWDICtx);
8199 }
8200
8201 wpalMutexRelease(&pWDICtx->wptMutex);
8202 /*-----------------------------------------------------------------------
8203 Get message buffer
8204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 sizeof(halBssReqMsg.deleteBssParams),
8207 &pSendBuffer, &usDataOffset, &usSendSize))||
8208 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8209 {
8210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8211 "Unable to get send buffer in start req %x %x %x",
8212 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 }
8216
8217 /*Fill in the message request structure*/
8218
8219 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008220 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008221
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 wpalMemoryCopy( pSendBuffer+usDataOffset,
8223 &halBssReqMsg.deleteBssParams,
8224 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008225
8226 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228
Jeff Johnsone7245742012-09-05 17:12:55 -07008229
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8235
Jeff Johnsone7245742012-09-05 17:12:55 -07008236
Jeff Johnson295189b2012-06-20 16:38:30 -07008237}/*WDI_ProcessDelBSSReq*/
8238
8239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008242
8243 @param pWDICtx: pointer to the WLAN DAL context
8244 pEventData: pointer to the event information structure
8245
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 @see
8247 @return Result of the function call
8248*/
8249WDI_Status
8250WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008251(
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 WDI_ControlBlockType* pWDICtx,
8253 WDI_EventInfoType* pEventData
8254)
8255{
8256 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8257 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 wpt_uint16 usDataOffset = 0;
8262 wpt_uint16 usSendSize = 0;
8263 wpt_uint16 uMsgSize = 0;
8264 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8269
8270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 -------------------------------------------------------------------------*/
8273 if (( NULL == pEventData ) ||
8274 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8275 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8276 {
8277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 }
8282
8283 /*-------------------------------------------------------------------------
8284 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 -------------------------------------------------------------------------*/
8287 wpalMutexAcquire(&pWDICtx->wptMutex);
8288
8289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8293 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8294 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008295
8296 if ( NULL == pBSSSes )
8297 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8299 "%s: Association sequence for this BSS does not yet exist - "
8300 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8301 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008302
8303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 }
8306
8307 /*------------------------------------------------------------------------
8308 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 ------------------------------------------------------------------------*/
8311 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8312 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8314 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8315 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008316
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008318
8319 wpalMutexRelease(&pWDICtx->wptMutex);
8320
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 }
8323
8324 /*-----------------------------------------------------------------------
8325 If Post Assoc was not yet received - the current association must
8326 be in progress
8327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8330 {
8331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8332 "Association sequence for this BSS association no longer in "
8333 "progress - not allowed");
8334
8335 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 }
8338
8339 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 -----------------------------------------------------------------------*/
8342 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8343 {
8344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8345 "Post Assoc not allowed before JOIN - failing request");
8346
8347 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 }
8350
8351 wpalMutexRelease(&pWDICtx->wptMutex);
8352
8353 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8354 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8355 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8360 ( usSendSize < (usDataOffset + uMsgSize )))
8361 {
8362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8363 "Unable to get send buffer in start req %x %x %x",
8364 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 }
8368
8369 /*Copy the STA parameters */
8370 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8371 &pwdiPostAssocParams->wdiSTAParams );
8372
8373 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_STATableFindStaidByAddr(pWDICtx,
8376 pwdiPostAssocParams->wdiSTAParams.macSTA,
8377 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8378 {
8379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8380 "This station does not exist in the WDI Station Table %d");
8381 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008382 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 }
8385
8386 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 pBSSSes->ucBSSIdx;
8389
8390 /*Copy the BSS parameters */
8391 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8392 &pwdiPostAssocParams->wdiBSSParams);
8393
8394 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 WDI_STATableFindStaidByAddr(pWDICtx,
8397 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 {
8400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8401 "This station does not exist in the WDI Station Table %d");
8402 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008403 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 }
8406
8407 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 pBSSSes->ucBSSIdx;
8410
Jeff Johnsone7245742012-09-05 17:12:55 -07008411
8412 wpalMemoryCopy( pSendBuffer+usDataOffset,
8413 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8414 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008415
8416 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8419 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8420 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008421
Jeff Johnsone7245742012-09-05 17:12:55 -07008422
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425
Jeff Johnsone7245742012-09-05 17:12:55 -07008426
8427 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008430
8431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 Send Post Assoc 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 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437
Jeff Johnson295189b2012-06-20 16:38:30 -07008438}/*WDI_ProcessPostAssocReq*/
8439
8440/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008443
8444 @param pWDICtx: pointer to the WLAN DAL context
8445 pEventData: pointer to the event information structure
8446
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 @see
8448 @return Result of the function call
8449*/
8450WDI_Status
8451WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008452(
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 WDI_ControlBlockType* pWDICtx,
8454 WDI_EventInfoType* pEventData
8455)
8456{
8457 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8458 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 wpt_uint16 usDataOffset = 0;
8463 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8466
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8469
8470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 -------------------------------------------------------------------------*/
8473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8474 ( NULL == pEventData->pCBfnc ))
8475 {
8476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 }
8481
8482 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8483 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8484 /*-------------------------------------------------------------------------
8485 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 -------------------------------------------------------------------------*/
8488 wpalMutexAcquire(&pWDICtx->wptMutex);
8489
8490 /*------------------------------------------------------------------------
8491 Find the BSS for which the request is made and identify WDI session
8492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8494 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 &macBSSID))
8496 {
8497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8498 "This station does not exist in the WDI Station Table %d");
8499 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 }
8502
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8504 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8507 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8508 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008509
8510 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 }
8513
8514 /*------------------------------------------------------------------------
8515 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 ------------------------------------------------------------------------*/
8518 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8519 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8521 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8522 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 }
8528
8529 wpalMutexRelease(&pWDICtx->wptMutex);
8530 /*-----------------------------------------------------------------------
8531 Get message buffer
8532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 sizeof(halDelStaReqMsg.delStaParams),
8535 &pSendBuffer, &usDataOffset, &usSendSize))||
8536 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8537 {
8538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8539 "Unable to get send buffer in start req %x %x %x",
8540 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 }
8544
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8546 wpalMemoryCopy( pSendBuffer+usDataOffset,
8547 &halDelStaReqMsg.delStaParams,
8548 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008549
8550 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008552
8553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8558
8559}/*WDI_ProcessDelSTAReq*/
8560
8561
8562/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008564==========================================================================*/
8565/**
8566 @brief Process Set BSS Key Request function (called when Main FSM
8567 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008568
8569 @param pWDICtx: pointer to the WLAN DAL context
8570 pEventData: pointer to the event information structure
8571
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 @see
8573 @return Result of the function call
8574*/
8575WDI_Status
8576WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008577(
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 WDI_ControlBlockType* pWDICtx,
8579 WDI_EventInfoType* pEventData
8580)
8581{
8582 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8583 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 wpt_uint16 usDataOffset = 0;
8588 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8591 wpt_uint8 keyIndex = 0;
8592
8593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8594
8595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 -------------------------------------------------------------------------*/
8598 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8599 ( NULL == pEventData->pCBfnc ))
8600 {
8601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 }
8606
8607 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8608 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8609 /*-------------------------------------------------------------------------
8610 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 -------------------------------------------------------------------------*/
8613 wpalMutexAcquire(&pWDICtx->wptMutex);
8614
8615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8619 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8620 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008621
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 {
8624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8626 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008627
8628 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 }
8631
8632 /*------------------------------------------------------------------------
8633 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 ------------------------------------------------------------------------*/
8636 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8637 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8639 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8640 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008641
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 }
8646
8647
8648 wpalMutexRelease(&pWDICtx->wptMutex);
8649 /*-----------------------------------------------------------------------
8650 Get message buffer
8651 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8654 &pSendBuffer, &usDataOffset, &usSendSize))||
8655 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8658 "Unable to get send buffer in set bss key req %x %x %x",
8659 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 }
8663
8664 /*-----------------------------------------------------------------------
8665 Copy the Key parameters into the HAL message
8666 -----------------------------------------------------------------------*/
8667
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8672
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8675
8676 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8677 keyIndex++)
8678 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008680 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8681 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8682 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8683 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8684 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8685 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8692 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 WDI_MAX_KEY_LENGTH);
8695 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008696
8697 wpalMemoryCopy( pSendBuffer+usDataOffset,
8698 &halSetBssKeyReqMsg.setBssKeyParams,
8699 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008700
8701 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008703
8704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8708 wdiSetBSSKeyRspCb, pEventData->pUserData,
8709 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008710
8711}/*WDI_ProcessSetBssKeyReq*/
8712
8713/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008716
8717 @param pWDICtx: pointer to the WLAN DAL context
8718 pEventData: pointer to the event information structure
8719
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 @see
8721 @return Result of the function call
8722*/
8723WDI_Status
8724WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008725(
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 WDI_ControlBlockType* pWDICtx,
8727 WDI_EventInfoType* pEventData
8728)
8729{
8730 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8731 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 wpt_uint16 usDataOffset = 0;
8736 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8740
8741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 -------------------------------------------------------------------------*/
8744 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8745 ( NULL == pEventData->pCBfnc ))
8746 {
8747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 }
8752
8753 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8754 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8755 /*-------------------------------------------------------------------------
8756 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 -------------------------------------------------------------------------*/
8759 wpalMutexAcquire(&pWDICtx->wptMutex);
8760
8761 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008762 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8765 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8766 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008767
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 {
8770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8772 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008773
8774 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 }
8777
8778 /*------------------------------------------------------------------------
8779 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 ------------------------------------------------------------------------*/
8782 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8783 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8785 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8786 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008787
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 }
8792
8793
8794 wpalMutexRelease(&pWDICtx->wptMutex);
8795
8796 /*-----------------------------------------------------------------------
8797 Get message buffer
8798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8801 &pSendBuffer, &usDataOffset, &usSendSize))||
8802 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8803 {
8804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8805 "Unable to get send buffer in set bss key req %x %x %x",
8806 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 }
8810 /*-----------------------------------------------------------------------
8811 Copy the Key parameters into the HAL message
8812 -----------------------------------------------------------------------*/
8813 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8817
8818 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8819
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8822
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 wpalMemoryCopy( pSendBuffer+usDataOffset,
8824 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8825 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008826
8827 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
8830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008836}/*WDI_ProcessRemoveBssKeyReq*/
8837
8838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008840 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008841
8842 @param pWDICtx: pointer to the WLAN DAL context
8843 pEventData: pointer to the event information structure
8844
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 @see
8846 @return Result of the function call
8847*/
8848WDI_Status
8849WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008850(
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 WDI_ControlBlockType* pWDICtx,
8852 WDI_EventInfoType* pEventData
8853)
8854{
8855 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8856 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8857 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 wpt_uint16 usDataOffset = 0;
8860 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8865 wpt_uint8 keyIndex = 0;
8866
8867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8868
8869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 -------------------------------------------------------------------------*/
8872 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8873 ( NULL == pEventData->pCBfnc ))
8874 {
8875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 }
8880
8881 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8882 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8883 /*-------------------------------------------------------------------------
8884 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 -------------------------------------------------------------------------*/
8887 wpalMutexAcquire(&pWDICtx->wptMutex);
8888
8889 /*------------------------------------------------------------------------
8890 Find the BSS for which the request is made and identify WDI session
8891 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8893 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 &macBSSID))
8895 {
8896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8897 "This station does not exist in the WDI Station Table %d");
8898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 }
8901
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8903 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8906 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8907 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008908
8909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008912
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 /*------------------------------------------------------------------------
8914 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 ------------------------------------------------------------------------*/
8917 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8918 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8920 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8921 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008922
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 }
8927
8928
8929 wpalMutexRelease(&pWDICtx->wptMutex);
8930 /*-----------------------------------------------------------------------
8931 Get message buffer
8932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8935 &pSendBuffer, &usDataOffset, &usSendSize))||
8936 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8937 {
8938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8939 "Unable to get send buffer in set bss key req %x %x %x",
8940 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 }
8944 /*-----------------------------------------------------------------------
8945 Copy the STA Key parameters into the HAL message
8946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8949
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8952
8953 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8954
8955 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8956
8957 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8958
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8960 keyIndex++)
8961 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8964 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8965 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8966 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8967 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8968 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8975 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WDI_MAX_KEY_LENGTH);
8978 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008979
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 wpalMemoryCopy( pSendBuffer+usDataOffset,
8981 &halSetStaKeyReqMsg.setStaKeyParams,
8982 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008983
8984 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008986
8987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8991 wdiSetSTAKeyRspCb, pEventData->pUserData,
8992 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008993
8994}/*WDI_ProcessSetSTAKeyReq*/
8995
8996/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008999
9000 @param pWDICtx: pointer to the WLAN DAL context
9001 pEventData: pointer to the event information structure
9002
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 @see
9004 @return Result of the function call
9005*/
9006WDI_Status
9007WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009008(
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 WDI_ControlBlockType* pWDICtx,
9010 WDI_EventInfoType* pEventData
9011)
9012{
9013 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9014 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9015 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 wpt_uint16 usDataOffset = 0;
9018 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 wpt_macAddr macBSSID;
9021 wpt_uint8 ucCurrentBSSSesIdx;
9022 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9024
9025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 -------------------------------------------------------------------------*/
9028 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9029 ( NULL == pEventData->pCBfnc ))
9030 {
9031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
9036
9037 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9038 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9039 /*-------------------------------------------------------------------------
9040 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 -------------------------------------------------------------------------*/
9043 wpalMutexAcquire(&pWDICtx->wptMutex);
9044
9045 /*------------------------------------------------------------------------
9046 Find the BSS for which the request is made and identify WDI session
9047 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9049 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 &macBSSID))
9051 {
9052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9053 "This station does not exist in the WDI Station Table %d");
9054 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 }
9057
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9059 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9062 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9063 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009064
9065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009068
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 /*------------------------------------------------------------------------
9070 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 ------------------------------------------------------------------------*/
9073 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9074 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9076 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9077 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009078
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 }
9083
9084
9085
9086 wpalMutexRelease(&pWDICtx->wptMutex);
9087 /*-----------------------------------------------------------------------
9088 Get message buffer
9089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9092 &pSendBuffer, &usDataOffset, &usSendSize))||
9093 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9094 {
9095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9096 "Unable to get send buffer in set bss key req %x %x %x",
9097 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 }
9101
9102 /*-----------------------------------------------------------------------
9103 Copy the Key parameters into the HAL message
9104 -----------------------------------------------------------------------*/
9105
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9108
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9111
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9114
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9117
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 wpalMemoryCopy( pSendBuffer+usDataOffset,
9119 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9120 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009121
9122 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009124
9125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009131
9132}/*WDI_ProcessRemoveSTAKeyReq*/
9133
9134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009137
9138 @param pWDICtx: pointer to the WLAN DAL context
9139 pEventData: pointer to the event information structure
9140
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 @see
9142 @return Result of the function call
9143*/
9144WDI_Status
9145WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009146(
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 WDI_ControlBlockType* pWDICtx,
9148 WDI_EventInfoType* pEventData
9149)
9150{
9151 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9152 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9153 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 wpt_uint16 usDataOffset = 0;
9156 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9161 wpt_uint8 keyIndex = 0;
9162
9163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9164
9165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 -------------------------------------------------------------------------*/
9168 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9169 ( NULL == pEventData->pCBfnc ))
9170 {
9171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 }
9176
9177 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9178 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9179 /*-------------------------------------------------------------------------
9180 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 -------------------------------------------------------------------------*/
9183 wpalMutexAcquire(&pWDICtx->wptMutex);
9184
9185 /*------------------------------------------------------------------------
9186 Find the BSS for which the request is made and identify WDI session
9187 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9189 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 &macBSSID))
9191 {
9192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9193 "This station does not exist in the WDI Station Table %d");
9194 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 }
9197
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9199 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 {
9201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9203 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009204
9205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009208
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 /*------------------------------------------------------------------------
9210 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 ------------------------------------------------------------------------*/
9213 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9214 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9216 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9217 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009218
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 }
9223
9224
9225 wpalMutexRelease(&pWDICtx->wptMutex);
9226 /*-----------------------------------------------------------------------
9227 Get message buffer
9228 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9231 &pSendBuffer, &usDataOffset, &usSendSize))||
9232 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9233 {
9234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9235 "Unable to get send buffer in set bss key req %x %x %x",
9236 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 }
9240 /*-----------------------------------------------------------------------
9241 Copy the STA Key parameters into the HAL message
9242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9245
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9248
9249 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9250
9251 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9252
9253 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9254
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9256 keyIndex++)
9257 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9260 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9261 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9262 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9263 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9264 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9271 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 WDI_MAX_KEY_LENGTH);
9274 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009275
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 wpalMemoryCopy( pSendBuffer+usDataOffset,
9277 &halSetStaKeyReqMsg.setStaKeyParams,
9278 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009279
9280 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009282
9283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9287 wdiSetSTAKeyRspCb, pEventData->pUserData,
9288 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009289
9290}/*WDI_ProcessSetSTABcastKeyReq*/
9291
9292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009295
9296 @param pWDICtx: pointer to the WLAN DAL context
9297 pEventData: pointer to the event information structure
9298
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 @see
9300 @return Result of the function call
9301*/
9302WDI_Status
9303WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009304(
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 WDI_ControlBlockType* pWDICtx,
9306 WDI_EventInfoType* pEventData
9307)
9308{
9309 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9310 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9311 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 wpt_uint16 usDataOffset = 0;
9314 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 wpt_macAddr macBSSID;
9317 wpt_uint8 ucCurrentBSSSesIdx;
9318 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9320
9321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 -------------------------------------------------------------------------*/
9324 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9325 ( NULL == pEventData->pCBfnc ))
9326 {
9327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 }
9332
9333 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9334 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9335 /*-------------------------------------------------------------------------
9336 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 -------------------------------------------------------------------------*/
9339 wpalMutexAcquire(&pWDICtx->wptMutex);
9340
9341 /*------------------------------------------------------------------------
9342 Find the BSS for which the request is made and identify WDI session
9343 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9345 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 &macBSSID))
9347 {
9348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9349 "This station does not exist in the WDI Station Table %d");
9350 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 }
9353
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9355 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9358 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9359 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009360
9361 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009364
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 /*------------------------------------------------------------------------
9366 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 ------------------------------------------------------------------------*/
9369 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9370 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9372 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9373 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009374
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 }
9379
9380
9381
9382 wpalMutexRelease(&pWDICtx->wptMutex);
9383 /*-----------------------------------------------------------------------
9384 Get message buffer
9385 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9388 &pSendBuffer, &usDataOffset, &usSendSize))||
9389 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9390 {
9391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9392 "Unable to get send buffer in set bss key req %x %x %x",
9393 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 }
9397
9398 /*-----------------------------------------------------------------------
9399 Copy the Key parameters into the HAL message
9400 -----------------------------------------------------------------------*/
9401
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9404
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9407
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9410
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9413
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 wpalMemoryCopy( pSendBuffer+usDataOffset,
9415 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9416 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009417
9418 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420
9421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009427
9428}/*WDI_ProcessRemoveSTABcastKeyReq*/
9429
9430/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009432==========================================================================*/
9433/**
9434 @brief Process Add TSpec Request function (called when Main FSM
9435 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009436
9437 @param pWDICtx: pointer to the WLAN DAL context
9438 pEventData: pointer to the event information structure
9439
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 @see
9441 @return Result of the function call
9442*/
9443WDI_Status
9444WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009445(
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 WDI_ControlBlockType* pWDICtx,
9447 WDI_EventInfoType* pEventData
9448)
9449{
9450 WDI_AddTSReqParamsType* pwdiAddTSParams;
9451 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 wpt_uint16 usDataOffset = 0;
9456 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 wpt_macAddr macBSSID;
9459 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009460
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9462
9463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 -------------------------------------------------------------------------*/
9466 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9467 ( NULL == pEventData->pCBfnc ))
9468 {
9469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 }
9474
9475 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9476 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9477 /*-------------------------------------------------------------------------
9478 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 -------------------------------------------------------------------------*/
9481 wpalMutexAcquire(&pWDICtx->wptMutex);
9482
9483 /*------------------------------------------------------------------------
9484 Find the BSS for which the request is made and identify WDI session
9485 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9487 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 &macBSSID))
9489 {
9490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9491 "This station does not exist in the WDI Station Table %d");
9492 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 }
9495
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9497 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9500 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9501 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009502
9503 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009506
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 /*------------------------------------------------------------------------
9508 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 ------------------------------------------------------------------------*/
9511 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9512 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9514 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9515 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009516
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 }
9521
9522 wpalMutexRelease(&pWDICtx->wptMutex);
9523 /*-----------------------------------------------------------------------
9524 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9528 sizeof(halAddTsParams),
9529 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 &usSendSize))||
9531 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9532 {
9533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9534 "Unable to get send buffer in set bss key req %x %x %x",
9535 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 }
9539
9540 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9541 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9542
9543 //TSPEC IE
9544 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9545 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9576
9577 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9592
9593 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9598
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 wpalMemoryCopy( pSendBuffer+usDataOffset,
9600 &halAddTsParams,
9601 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009602
9603 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009605
9606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009612}/*WDI_ProcessAddTSpecReq*/
9613
9614
9615/**
9616 @brief Process Del TSpec Request function (called when Main FSM
9617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009618
9619 @param pWDICtx: pointer to the WLAN DAL context
9620 pEventData: pointer to the event information structure
9621
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 @see
9623 @return Result of the function call
9624*/
9625WDI_Status
9626WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009627(
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 WDI_ControlBlockType* pWDICtx,
9629 WDI_EventInfoType* pEventData
9630)
9631{
9632 WDI_DelTSReqParamsType* pwdiDelTSParams;
9633 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 wpt_uint16 usDataOffset = 0;
9638 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9641
9642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 -------------------------------------------------------------------------*/
9645 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9646 ( NULL == pEventData->pCBfnc ))
9647 {
9648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 }
9653
9654 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9655 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9656
9657 /*-------------------------------------------------------------------------
9658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 -------------------------------------------------------------------------*/
9661 wpalMutexAcquire(&pWDICtx->wptMutex);
9662
9663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9667 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9668 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009669
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9673 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9674 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9675
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 }
9679
9680 /*------------------------------------------------------------------------
9681 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 ------------------------------------------------------------------------*/
9684 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9685 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9687 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9688 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 }
9694
9695
9696 wpalMutexRelease(&pWDICtx->wptMutex);
9697 /*-----------------------------------------------------------------------
9698 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9703 &pSendBuffer, &usDataOffset, &usSendSize))||
9704 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9705 {
9706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9707 "Unable to get send buffer in set bss key req %x %x %x",
9708 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 }
9712
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 wpalMemoryCopy( pSendBuffer+usDataOffset,
9714 &pwdiDelTSParams->wdiDelTSInfo,
9715 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009716
9717 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009719
9720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9724 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009725}/*WDI_ProcessDelTSpecReq*/
9726
9727/**
9728 @brief Process Update EDCA Params Request function (called when
9729 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009730
9731 @param pWDICtx: pointer to the WLAN DAL context
9732 pEventData: pointer to the event information structure
9733
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 @see
9735 @return Result of the function call
9736*/
9737WDI_Status
9738WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009739(
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 WDI_ControlBlockType* pWDICtx,
9741 WDI_EventInfoType* pEventData
9742)
9743{
9744 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9745 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009746 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009747 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 wpt_uint16 usDataOffset = 0;
9750 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009751 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9753
9754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 -------------------------------------------------------------------------*/
9757 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9758 ( NULL == pEventData->pCBfnc ))
9759 {
9760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 }
9765
9766 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9767 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9768 /*-------------------------------------------------------------------------
9769 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 -------------------------------------------------------------------------*/
9772 wpalMutexAcquire(&pWDICtx->wptMutex);
9773
9774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9778 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9779 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009780
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 {
9783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9785 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009786
9787 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 }
9790
9791 /*------------------------------------------------------------------------
9792 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 ------------------------------------------------------------------------*/
9795 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9796 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9798 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9799 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009800
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 }
9805
9806
9807 wpalMutexRelease(&pWDICtx->wptMutex);
9808 /*-----------------------------------------------------------------------
9809 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9814 &pSendBuffer, &usDataOffset, &usSendSize))||
9815 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9816 {
9817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9818 "Unable to get send buffer in set bss key req %x %x %x",
9819 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 }
9823
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 wpalMemoryCopy( pSendBuffer+usDataOffset,
9825 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9826 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009827
9828 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009830
9831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9835 wdiUpdateEDCARspCb, pEventData->pUserData,
9836 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009837}/*WDI_ProcessUpdateEDCAParamsReq*/
9838
9839/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009842
9843 @param pWDICtx: pointer to the WLAN DAL context
9844 pEventData: pointer to the event information structure
9845
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 @see
9847 @return Result of the function call
9848*/
9849WDI_Status
9850WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009851(
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 WDI_ControlBlockType* pWDICtx,
9853 WDI_EventInfoType* pEventData
9854)
9855{
9856 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9857 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009858 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 wpt_uint16 usDataOffset = 0;
9862 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 wpt_macAddr macBSSID;
9865
9866 tAddBASessionReqMsg halAddBASessionReq;
9867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9868
9869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 -------------------------------------------------------------------------*/
9872 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9873 ( NULL == pEventData->pCBfnc ))
9874 {
9875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 }
9880
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9885 /*-------------------------------------------------------------------------
9886 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 -------------------------------------------------------------------------*/
9889 wpalMutexAcquire(&pWDICtx->wptMutex);
9890
9891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9895 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 &macBSSID))
9897 {
9898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9899 "This station does not exist in the WDI Station Table %d");
9900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 }
9903
9904
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009906
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9910 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9911 __func__, MAC_ADDR_ARRAY(macBSSID));
9912
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 }
9916
9917 /*------------------------------------------------------------------------
9918 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 ------------------------------------------------------------------------*/
9921 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9922 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9924 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9925 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009926
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 }
9931
9932
9933 wpalMutexRelease(&pWDICtx->wptMutex);
9934 /*-----------------------------------------------------------------------
9935 Get message buffer
9936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9938 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 sizeof(halAddBASessionReq.addBASessionParams),
9940 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9943 {
9944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9945 "Unable to get send buffer in Add BA session req %x %x %x",
9946 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 }
9950
9951 halAddBASessionReq.addBASessionParams.staIdx =
9952 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9953 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9954 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9955 WDI_MAC_ADDR_LEN);
9956 halAddBASessionReq.addBASessionParams.baTID =
9957 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9958 halAddBASessionReq.addBASessionParams.baPolicy =
9959 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9960 halAddBASessionReq.addBASessionParams.baBufferSize =
9961 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9962 halAddBASessionReq.addBASessionParams.baTimeout =
9963 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9964 halAddBASessionReq.addBASessionParams.baSSN =
9965 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9966 halAddBASessionReq.addBASessionParams.baDirection =
9967 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9968
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 wpalMemoryCopy( pSendBuffer+usDataOffset,
9970 &halAddBASessionReq.addBASessionParams,
9971 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009972
9973 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975
9976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9980 wdiAddBASessionRspCb, pEventData->pUserData,
9981 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009982}/*WDI_ProcessAddBASessionReq*/
9983
9984/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009987
9988 @param pWDICtx: pointer to the WLAN DAL context
9989 pEventData: pointer to the event information structure
9990
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 @see
9992 @return Result of the function call
9993*/
9994WDI_Status
9995WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009996(
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 WDI_ControlBlockType* pWDICtx,
9998 WDI_EventInfoType* pEventData
9999)
10000{
10001 WDI_DelBAReqParamsType* pwdiDelBAParams;
10002 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 wpt_uint16 usDataOffset = 0;
10007 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 wpt_macAddr macBSSID;
10010 tDelBAParams halDelBAparam;
10011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10012
10013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 -------------------------------------------------------------------------*/
10016 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10017 ( NULL == pEventData->pCBfnc ))
10018 {
10019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
10024
10025 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10026 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10027 /*-------------------------------------------------------------------------
10028 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 -------------------------------------------------------------------------*/
10031 wpalMutexAcquire(&pWDICtx->wptMutex);
10032
10033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10037 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 &macBSSID))
10039 {
10040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "This station does not exist in the WDI Station Table %d");
10042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010044 }
10045
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010047
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10051 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10052 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010053
10054 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 }
10057
10058 /*------------------------------------------------------------------------
10059 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 ------------------------------------------------------------------------*/
10062 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10063 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10065 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10066 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010067
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 }
10072
10073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 sizeof(halDelBAparam),
10076 &pSendBuffer, &usDataOffset, &usSendSize))||
10077 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10078 {
10079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10080 "Unable to get send buffer for DEL BA req %x %x %x",
10081 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 }
10085
10086 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10087 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10088 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10089
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 wpalMemoryCopy( pSendBuffer+usDataOffset,
10091 &halDelBAparam,
10092 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010093
10094 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010096
10097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10101 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010102}/*WDI_ProcessDelBAReq*/
10103
10104#ifdef FEATURE_WLAN_CCX
10105
10106WDI_Status
10107WDI_ProcessTSMStatsReq
10108(
10109 WDI_ControlBlockType* pWDICtx,
10110 WDI_EventInfoType* pEventData
10111)
10112{
10113 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10114 WDI_TsmRspCb wdiTSMRspCb;
10115 wpt_uint8 ucCurrentBSSSesIdx = 0;
10116 WDI_BSSSessionType* pBSSSes = NULL;
10117 wpt_uint8* pSendBuffer = NULL;
10118 wpt_uint16 usDataOffset = 0;
10119 wpt_uint16 usSendSize = 0;
10120 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10121 tTsmStatsParams halTsmStatsReqParams = {0};
10122
10123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10124
10125 /*-------------------------------------------------------------------------
10126 Sanity check
10127 -------------------------------------------------------------------------*/
10128 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10129 ( NULL == pEventData->pCBfnc ))
10130 {
10131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 WDI_ASSERT(0);
10134 return WDI_STATUS_E_FAILURE;
10135 }
10136
10137 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10138 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10139 /*-------------------------------------------------------------------------
10140 Check to see if we are in the middle of an association, if so queue, if
10141 not it means it is free to process request
10142 -------------------------------------------------------------------------*/
10143 wpalMutexAcquire(&pWDICtx->wptMutex);
10144
10145 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10146 if ( NULL == pBSSSes )
10147 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10149 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10150 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010151
10152 wpalMutexRelease(&pWDICtx->wptMutex);
10153 return WDI_STATUS_E_NOT_ALLOWED;
10154 }
10155
10156 /*------------------------------------------------------------------------
10157 Check if this BSS is being currently processed or queued,
10158 if queued - queue the new request as well
10159 ------------------------------------------------------------------------*/
10160 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10161 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10163 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10164 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010165
10166 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10167 wpalMutexRelease(&pWDICtx->wptMutex);
10168 return wdiStatus;
10169 }
10170
10171 wpalMutexRelease(&pWDICtx->wptMutex);
10172 /*-----------------------------------------------------------------------
10173 Get message buffer
10174 ! TO DO : proper conversion into the HAL Message Request Format
10175 -----------------------------------------------------------------------*/
10176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10177 sizeof(halTsmStatsReqParams),
10178 &pSendBuffer, &usDataOffset, &usSendSize))||
10179 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10180 {
10181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10182 "Unable to get send buffer in set bss key req %x %x %x",
10183 pEventData, pwdiTSMParams, wdiTSMRspCb);
10184 WDI_ASSERT(0);
10185 return WDI_STATUS_E_FAILURE;
10186 }
10187
10188 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10189 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10190 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10191 WDI_MAC_ADDR_LEN);
10192 wpalMemoryCopy( pSendBuffer+usDataOffset,
10193 &halTsmStatsReqParams,
10194 sizeof(halTsmStatsReqParams));
10195
10196 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10197 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10198
10199 /*-------------------------------------------------------------------------
10200 Send TSM Stats Request to HAL
10201 -------------------------------------------------------------------------*/
10202 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10203 wdiTSMRspCb, pEventData->pUserData,
10204 WDI_TSM_STATS_RESP);
10205}/*WDI_ProcessTSMStatsReq*/
10206
10207#endif
10208
10209
10210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010213
10214 @param pWDICtx: pointer to the WLAN DAL context
10215 pEventData: pointer to the event information structure
10216
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 @see
10218 @return Result of the function call
10219*/
10220WDI_Status
10221WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010222(
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 WDI_ControlBlockType* pWDICtx,
10224 WDI_EventInfoType* pEventData
10225)
10226{
10227 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10228 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 wpt_uint16 usDataOffset = 0;
10231 wpt_uint16 usSendSize = 0;
10232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10233
10234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 -------------------------------------------------------------------------*/
10237 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10238 ( NULL == pEventData->pCBfnc ))
10239 {
10240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 }
10245
10246 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10247 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10248 /*-----------------------------------------------------------------------
10249 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10254 &pSendBuffer, &usDataOffset, &usSendSize))||
10255 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10256 {
10257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10258 "Unable to get send buffer in set bss key req %x %x %x",
10259 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 }
10263
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 wpalMemoryCopy( pSendBuffer+usDataOffset,
10265 &pwdiFlushAcParams->wdiFlushAcInfo,
10266 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010267
10268 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010270
10271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10275 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010276}/*WDI_ProcessFlushAcReq*/
10277
10278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010281
10282 @param pWDICtx: pointer to the WLAN DAL context
10283 pEventData: pointer to the event information structure
10284
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 @see
10286 @return Result of the function call
10287*/
10288WDI_Status
10289WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010290(
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 WDI_ControlBlockType* pWDICtx,
10292 WDI_EventInfoType* pEventData
10293)
10294{
10295 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10296 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 wpt_uint16 usDataOffset = 0;
10299 wpt_uint16 usSendSize = 0;
10300
10301 tBtAmpEventMsg haltBtAmpEventMsg;
10302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10303
10304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 -------------------------------------------------------------------------*/
10307 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10308 ( NULL == pEventData->pCBfnc ))
10309 {
10310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 }
10315
10316 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10317 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10318 /*-----------------------------------------------------------------------
10319 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10324 &pSendBuffer, &usDataOffset, &usSendSize))||
10325 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10326 {
10327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10328 "Unable to get send buffer in BT AMP event req %x %x %x",
10329 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 }
10333
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 wpalMemoryCopy( pSendBuffer+usDataOffset,
10337 &haltBtAmpEventMsg.btAmpEventParams,
10338 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010339
10340 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010342
10343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10347 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010348}/*WDI_ProcessBtAmpEventReq*/
10349
10350/**
10351 @brief Process Add STA self Request function (called when Main FSM
10352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010353
10354 @param pWDICtx: pointer to the WLAN DAL context
10355 pEventData: pointer to the event information structure
10356
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 @see
10358 @return Result of the function call
10359*/
10360WDI_Status
10361WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010362(
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 WDI_ControlBlockType* pWDICtx,
10364 WDI_EventInfoType* pEventData
10365)
10366{
10367 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10368 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 wpt_uint16 usDataOffset = 0;
10371 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010372 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10374
10375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 -------------------------------------------------------------------------*/
10378 if (( NULL == pEventData ) ||
10379 ( NULL == pEventData->pEventData) ||
10380 ( NULL == pEventData->pCBfnc))
10381 {
10382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 }
10387
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10392 /*-----------------------------------------------------------------------
10393 Get message buffer
10394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10396 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010397 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010399 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 {
10401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10402 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10403 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 }
10407
10408 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10411
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010413 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10414 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10415 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10416 {
10417 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10418 }
10419 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10420 VOS_P2P_CLIENT_MODE) ||
10421 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10422 VOS_P2P_DEVICE))
10423 {
10424 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10425 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010427 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010428
10429 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010431
10432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10436 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10437 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010438}/*WDI_ProcessAddSTASelfReq*/
10439
10440
10441
10442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010445
10446 @param pWDICtx: pointer to the WLAN DAL context
10447 pEventData: pointer to the event information structure
10448
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 @see
10450 @return Result of the function call
10451*/
10452WDI_Status
10453WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010454(
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 WDI_ControlBlockType* pWDICtx,
10456 WDI_EventInfoType* pEventData
10457)
10458{
10459 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10460 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 wpt_uint16 usDataOffset = 0;
10463 wpt_uint16 usSendSize = 0;
10464 tDelStaSelfParams halSetDelSelfSTAParams;
10465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10466
10467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 -------------------------------------------------------------------------*/
10470 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10471 ( NULL == pEventData->pCBfnc ))
10472 {
10473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 }
10478
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10481 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10482
10483 /*-----------------------------------------------------------------------
10484 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10489 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10492 {
10493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10494 "Unable to get send buffer in Del Sta Self req %x %x %x",
10495 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 }
10499
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10502
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10504 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010505
10506 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010508
10509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10513 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 WDI_DEL_STA_SELF_RESP);
10515
10516}
10517
Jeff Johnsone7245742012-09-05 17:12:55 -070010518#ifdef FEATURE_OEM_DATA_SUPPORT
10519/**
10520 @brief Process Start Oem Data Request function (called when Main
10521 FSM allows it)
10522
10523 @param pWDICtx: pointer to the WLAN DAL context
10524 pEventData: pointer to the event information structure
10525
10526 @see
10527 @return Result of the function call
10528*/
10529WDI_Status
10530WDI_ProcessStartOemDataReq
10531(
10532 WDI_ControlBlockType* pWDICtx,
10533 WDI_EventInfoType* pEventData
10534)
10535{
10536 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10537 WDI_oemDataRspCb wdiOemDataRspCb;
10538 wpt_uint8* pSendBuffer = NULL;
10539 wpt_uint16 usDataOffset = 0;
10540 wpt_uint16 usSendSize = 0;
10541 wpt_uint16 reqLen;
10542 tStartOemDataReqParams* halStartOemDataReqParams;
10543
10544 /*-------------------------------------------------------------------------
10545 Sanity check
10546 -------------------------------------------------------------------------*/
10547 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10548 ( NULL == pEventData->pCBfnc ))
10549 {
10550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010551 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 WDI_ASSERT(0);
10553 return WDI_STATUS_E_FAILURE;
10554 }
10555
10556 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10557 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10558
10559 /*-----------------------------------------------------------------------
10560 Get message buffer
10561 -----------------------------------------------------------------------*/
10562
10563 reqLen = sizeof(tStartOemDataReqParams);
10564
10565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10566 WDI_START_OEM_DATA_REQ, reqLen,
10567 &pSendBuffer, &usDataOffset, &usSendSize))||
10568 (usSendSize < (usDataOffset + reqLen)))
10569 {
10570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10571 "Unable to get send buffer in Start Oem Data req %x %x %x",
10572 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10573 WDI_ASSERT(0);
10574 return WDI_STATUS_E_FAILURE;
10575 }
10576
10577 //copying WDI OEM DATA REQ PARAMS to shared memory
10578 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10579
10580 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10581 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10582
10583 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10584 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10585
10586 /*-------------------------------------------------------------------------
10587 Send Start Request to HAL
10588 -------------------------------------------------------------------------*/
10589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10590 wdiOemDataRspCb, pEventData->pUserData,
10591 WDI_START_OEM_DATA_RESP);
10592}/*WDI_ProcessStartOemDataReq*/
10593#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010594
10595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010597 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010598
10599 @param pWDICtx: pointer to the WLAN DAL context
10600 pEventData: pointer to the event information structure
10601
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 @see
10603 @return Result of the function call
10604*/
10605WDI_Status
10606WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010607(
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 WDI_ControlBlockType* pWDICtx,
10609 WDI_EventInfoType* pEventData
10610)
10611{
10612 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10613 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 wpt_uint16 usDataOffset = 0;
10616 wpt_uint16 usSendSize = 0;
10617 tHalWlanHostResumeReqParam halResumeReqParams;
10618
10619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10620
10621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 -------------------------------------------------------------------------*/
10624 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10625 ( NULL == pEventData->pCBfnc ))
10626 {
10627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010628 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 }
10632
10633 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10634 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10635
10636 /*-----------------------------------------------------------------------
10637 Get message buffer
10638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10641 &pSendBuffer, &usDataOffset, &usSendSize))||
10642 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10643 {
10644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 }
10650
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010653
10654 wpalMemoryCopy( pSendBuffer+usDataOffset,
10655 &halResumeReqParams,
10656 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010657
10658 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010660
10661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10665 wdiHostResumeRspCb, pEventData->pUserData,
10666 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010667}/*WDI_ProcessHostResumeReq*/
10668
10669/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010672
10673 @param pWDICtx: pointer to the WLAN DAL context
10674 pEventData: pointer to the event information structure
10675
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 @see
10677 @return Result of the function call
10678*/
10679WDI_Status
10680WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010681(
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 WDI_ControlBlockType* pWDICtx,
10683 WDI_EventInfoType* pEventData
10684)
10685{
10686 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10687 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 wpt_uint16 usDataOffset = 0;
10690 wpt_uint16 usSendSize = 0;
10691 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10693
10694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 -------------------------------------------------------------------------*/
10697 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10698 ( NULL == pEventData->pCBfnc ))
10699 {
10700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010701 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 }
10705
10706 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10707 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 /*-----------------------------------------------------------------------
10710 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 sizeof(halTxPerTrackingReqParam),
10715 &pSendBuffer, &usDataOffset, &usSendSize))||
10716 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10717 {
10718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10719 "Unable to get send buffer in set tx per tracking req %x %x %x",
10720 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010724
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10726 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10727 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10728 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010729
10730 wpalMemoryCopy( pSendBuffer+usDataOffset,
10731 &halTxPerTrackingReqParam,
10732 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010733
10734 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010736
10737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10741 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010742}/*WDI_ProcessSetTxPerTrackingReq*/
10743
10744/*=========================================================================
10745 Indications
10746=========================================================================*/
10747
10748/**
10749 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010750
10751 @param pWDICtx: pointer to the WLAN DAL context
10752 pEventData: pointer to the event information structure
10753
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 @see
10755 @return Result of the function call
10756*/
10757WDI_Status
10758WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010759(
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 WDI_ControlBlockType* pWDICtx,
10761 WDI_EventInfoType* pEventData
10762)
10763{
10764 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 wpt_uint16 usDataOffset = 0;
10767 wpt_uint16 usSendSize = 0;
10768 WDI_Status wdiStatus;
10769 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10771
10772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 -------------------------------------------------------------------------*/
10775 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10776 {
10777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010778 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 }
10782
10783 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10784
10785 /*-----------------------------------------------------------------------
10786 Get message buffer
10787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10789 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 sizeof(halWlanSuspendIndparams),
10791 &pSendBuffer, &usDataOffset, &usSendSize))||
10792 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10795 "Unable to get send buffer in Suspend Ind ");
10796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 }
10799
10800 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10801 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10802
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070010804 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010805
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10807 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010808
10809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 -------------------------------------------------------------------------*/
10812 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010814
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10817}/*WDI_ProcessHostSuspendInd*/
10818
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080010819
10820
10821/**
10822 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10823
10824 @param pWDICtx: pointer to the WLAN DAL context
10825 pEventData: pointer to the event information structure
10826
10827 @see
10828 @return Result of the function call
10829*/
10830WDI_Status
10831WDI_ProcessTrafficStatsInd
10832(
10833 WDI_ControlBlockType* pWDICtx,
10834 WDI_EventInfoType* pEventData
10835)
10836{
10837 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10838 wpt_uint8* pSendBuffer = NULL;
10839 wpt_uint16 usDataOffset = 0;
10840 wpt_uint16 usSendSize = 0;
10841 WDI_Status wdiStatus;
10842 tStatsClassBIndParams* pStatsClassBIndParams;
10843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10844
10845 /*-------------------------------------------------------------------------
10846 Sanity check
10847 -------------------------------------------------------------------------*/
10848 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10849 {
10850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10851 "%s: Invalid parameters in Traffic Stats ind",__func__);
10852 WDI_ASSERT(0);
10853 return WDI_STATUS_E_FAILURE;
10854 }
10855
10856 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10857
10858 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10859 {
10860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10861 "%s: Invalid parameters in Traffic Stats ind",__func__);
10862 WDI_ASSERT(0);
10863 return WDI_STATUS_E_FAILURE;
10864 }
10865
10866 /*-----------------------------------------------------------------------
10867 Get message buffer
10868 -----------------------------------------------------------------------*/
10869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10870 WDI_TRAFFIC_STATS_IND,
10871 sizeof(tStatsClassBIndParams),
10872 &pSendBuffer, &usDataOffset, &usSendSize))||
10873 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10874 {
10875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10876 "Unable to get send buffer in Traffic Stats Ind ");
10877 WDI_ASSERT(0);
10878 return WDI_STATUS_E_FAILURE;
10879 }
10880
10881 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10882
10883 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10884
10885 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10886 pTrafficStatsIndParams->pTrafficStats,
10887 pTrafficStatsIndParams->length);
10888
10889 /*-------------------------------------------------------------------------
10890 Send Suspend Request to HAL
10891 -------------------------------------------------------------------------*/
10892 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10893 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10894
10895 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10896 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10897}/*WDI_ProcessTrafficStatsInd*/
10898
Chet Lanctot186b5732013-03-18 10:26:30 -070010899#ifdef WLAN_FEATURE_11W
10900/**
10901 @brief Process Exclude Unencrypted Indications function (called
10902 when Main FSM allows it)
10903
10904 @param pWDICtx: pointer to the WLAN DAL context
10905 pEventData: pointer to the event information structure
10906
10907 @see
10908 @return Result of the function call
10909*/
10910WDI_Status
10911WDI_ProcessExcludeUnencryptInd
10912(
10913 WDI_ControlBlockType* pWDICtx,
10914 WDI_EventInfoType* pEventData
10915)
10916{
10917 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10918 wpt_uint8* pSendBuffer = NULL;
10919 wpt_uint16 usDataOffset = 0;
10920 wpt_uint16 usSendSize = 0;
10921 WDI_Status wdiStatus;
10922 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10924
10925 /*-------------------------------------------------------------------------
10926 Sanity check
10927 -------------------------------------------------------------------------*/
10928 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10929 {
10930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10931 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10932 WDI_ASSERT(0);
10933 return WDI_STATUS_E_FAILURE;
10934 }
10935
10936 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10937
10938 /*-----------------------------------------------------------------------
10939 Get message buffer
10940 -----------------------------------------------------------------------*/
10941 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10942 WDI_EXCLUDE_UNENCRYPTED_IND,
10943 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10944 &pSendBuffer, &usDataOffset, &usSendSize))||
10945 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10946 {
10947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10948 "Unable to get send buffer in Exclude Unencrypted Ind ");
10949 WDI_ASSERT(0);
10950 return WDI_STATUS_E_FAILURE;
10951 }
10952
10953 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10954
10955 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10956
10957 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10958 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10959
10960 /*-------------------------------------------------------------------------
10961 Send Suspend Request to HAL
10962 -------------------------------------------------------------------------*/
10963 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10964 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10965
10966 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10967 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10968}/*WDI_ProcessExcludeUnencryptInd*/
10969#endif
10970
Yue Mab9c86f42013-08-14 15:59:08 -070010971/**
10972 @brief Process Add Periodic Tx Pattern Indication function (called when
10973 Main FSM allows it)
10974
10975 @param pWDICtx: pointer to the WLAN DAL context
10976 pEventData: pointer to the event information structure
10977
10978 @see
10979 @return Result of the function call
10980*/
10981WDI_Status
10982WDI_ProcessAddPeriodicTxPtrnInd
10983(
10984 WDI_ControlBlockType* pWDICtx,
10985 WDI_EventInfoType* pEventData
10986)
10987{
10988 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
10989 wpt_uint8* pSendBuffer = NULL;
10990 wpt_uint16 usDataOffset = 0;
10991 wpt_uint16 usSendSize = 0;
10992 WDI_Status wdiStatus;
10993 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
10994 wpt_uint8 selfStaIdx = 0;
10995
10996 /*-------------------------------------------------------------------------
10997 Sanity check
10998 -------------------------------------------------------------------------*/
10999 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11000 {
11001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11002 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11003 WDI_ASSERT(0);
11004 return WDI_STATUS_E_FAILURE;
11005 }
11006
11007 pAddPeriodicTxPtrnParams =
11008 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11009
11010 /*------------------------------------------------------------------------
11011 Get message buffer
11012 ------------------------------------------------------------------------*/
11013 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11014 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11015 &pSendBuffer, &usDataOffset, &usSendSize))||
11016 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11017 {
11018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11019 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11020 __func__);
11021 WDI_ASSERT(0);
11022 return WDI_STATUS_E_FAILURE;
11023 }
11024
11025 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11026
11027 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11028 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11029 &selfStaIdx))
11030 {
11031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11032 "%s: Failed to get selfStaIdx!", __func__);
11033
11034 return WDI_STATUS_E_FAILURE;
11035 }
11036
11037 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11038 halAddPeriodicTxPtrn->ucPtrnId =
11039 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11040 halAddPeriodicTxPtrn->usPtrnSize =
11041 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11042 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11043 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11044
11045 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11046 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11047 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11048
11049 /*-------------------------------------------------------------------------
11050 Send Indication to HAL
11051 -------------------------------------------------------------------------*/
11052 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11053 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11054
11055 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11056
11057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11058 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11059
11060 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11061} /* WDI_ProcessAddPeriodicTxPtrnInd */
11062
11063/**
11064 @brief Process Delete Periodic Tx Pattern Indication function (called when
11065 Main FSM allows it)
11066
11067 @param pWDICtx: pointer to the WLAN DAL context
11068 pEventData: pointer to the event information structure
11069
11070 @see
11071 @return Result of the function call
11072*/
11073WDI_Status
11074WDI_ProcessDelPeriodicTxPtrnInd
11075(
11076 WDI_ControlBlockType* pWDICtx,
11077 WDI_EventInfoType* pEventData
11078)
11079{
11080 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11081 wpt_uint8* pSendBuffer = NULL;
11082 wpt_uint16 usDataOffset = 0;
11083 wpt_uint16 usSendSize = 0;
11084 WDI_Status wdiStatus;
11085 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11086 wpt_uint8 selfStaIdx = 0;
11087
11088 /*-------------------------------------------------------------------------
11089 Sanity check
11090 -------------------------------------------------------------------------*/
11091 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11092 {
11093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11094 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11095 WDI_ASSERT(0);
11096 return WDI_STATUS_E_FAILURE;
11097 }
11098
11099 pDelPeriodicTxPtrnParams =
11100 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11101
11102 /*------------------------------------------------------------------------
11103 Get message buffer
11104 ------------------------------------------------------------------------*/
11105 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11106 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11107 &pSendBuffer, &usDataOffset, &usSendSize))||
11108 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11109 {
11110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11111 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11112 __func__);
11113 WDI_ASSERT(0);
11114 return WDI_STATUS_E_FAILURE;
11115 }
11116
11117 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11118
11119 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11120 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11121 &selfStaIdx))
11122 {
11123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11124 "%s: Failed to get selfStaIdx!", __func__);
11125
11126 return WDI_STATUS_E_FAILURE;
11127 }
11128
11129 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11130 halDelPeriodicTxPtrn->uPatternIdBitmap =
11131 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11132
11133 /*-------------------------------------------------------------------------
11134 Send Indication to HAL
11135 -------------------------------------------------------------------------*/
11136 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11137 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11138
11139 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11140
11141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11142 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11143
11144 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11145} /* WDI_ProcessDelPeriodicTxPtrnInd */
11146
Jeff Johnson295189b2012-06-20 16:38:30 -070011147/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011148 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011149==========================================================================*/
11150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011153
11154 @param pWDICtx: pointer to the WLAN DAL context
11155 pEventData: pointer to the event information structure
11156
Jeff Johnson295189b2012-06-20 16:38:30 -070011157 @see
11158 @return Result of the function call
11159*/
11160WDI_Status
11161WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011162(
Jeff Johnson295189b2012-06-20 16:38:30 -070011163 WDI_ControlBlockType* pWDICtx,
11164 WDI_EventInfoType* pEventData
11165)
11166{
11167 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11168 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 wpt_uint16 usDataOffset = 0;
11171 wpt_uint16 usSendSize = 0;
11172 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11174
11175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 -------------------------------------------------------------------------*/
11178 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11179 ( NULL == pEventData->pCBfnc ))
11180 {
11181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 }
11186
11187 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11188 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11189 /*-----------------------------------------------------------------------
11190 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 sizeof(halSwitchChannelReq.switchChannelParams),
11195 &pSendBuffer, &usDataOffset, &usSendSize))||
11196 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11197 {
11198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11199 "Unable to get send buffer in channel switch req %x %x %x",
11200 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 }
11204
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011207#ifndef WLAN_FEATURE_VOWIFI
11208 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11210#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11213
11214#ifdef WLAN_FEATURE_VOWIFI
11215 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11218 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11219 WDI_MAC_ADDR_LEN);
11220 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11221 pwdiSwitchChParams->wdiChInfo.macBSSId,
11222 WDI_MAC_ADDR_LEN);
11223#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 wpalMemoryCopy( pSendBuffer+usDataOffset,
11225 &halSwitchChannelReq.switchChannelParams,
11226 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011227
11228 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011230
11231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11235 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011236}/*WDI_ProcessChannelSwitchReq*/
11237
11238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011240 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011241
11242 @param pWDICtx: pointer to the WLAN DAL context
11243 pEventData: pointer to the event information structure
11244
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 @see
11246 @return Result of the function call
11247*/
11248WDI_Status
11249WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011250(
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 WDI_ControlBlockType* pWDICtx,
11252 WDI_EventInfoType* pEventData
11253)
11254{
11255 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11256 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 wpt_uint16 usDataOffset = 0;
11261 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011263
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 tConfigStaReqMsg halConfigStaReqMsg;
11265 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11267
11268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011270 -------------------------------------------------------------------------*/
11271 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11272 ( NULL == pEventData->pCBfnc ))
11273 {
11274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 }
11279
11280 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11281 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11282 /*-------------------------------------------------------------------------
11283 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 -------------------------------------------------------------------------*/
11286 wpalMutexAcquire(&pWDICtx->wptMutex);
11287
11288 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11292 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11293 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011294
Jeff Johnsone7245742012-09-05 17:12:55 -070011295 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11298 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11299 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011300
11301 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 }
11304
11305 /*------------------------------------------------------------------------
11306 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 ------------------------------------------------------------------------*/
11309 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11312 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11313 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011314
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 }
11319
11320 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011321
11322 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11323#ifdef WLAN_FEATURE_11AC
11324 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011325 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 else
11327#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011328 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011329
Jeff Johnson295189b2012-06-20 16:38:30 -070011330 /*-----------------------------------------------------------------------
11331 Get message buffer
11332 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11334 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 {
11338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11339 "Unable to get send buffer in config sta req %x %x %x",
11340 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 }
11344
11345 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 &pwdiConfigSTAParams->wdiReqInfo);
11348
11349 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11350 {
11351 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 WDI_STATableFindStaidByAddr(pWDICtx,
11354 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011356 {
11357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11358 "This station does not exist in the WDI Station Table %d");
11359 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011360 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 }
11363 }
11364 else
11365 {
11366 /* Need to fill in the STA Index to invalid, since at this point we have not
11367 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011368 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 }
11370
11371 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011372 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011373
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 wpalMemoryCopy( pSendBuffer+usDataOffset,
11375 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011376 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011377
11378 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011380
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11382 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 sizeof(pWDICtx->wdiCachedConfigStaReq));
11384
11385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11389 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011390}/*WDI_ProcessConfigStaReq*/
11391
11392
11393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011396
11397 @param pWDICtx: pointer to the WLAN DAL context
11398 pEventData: pointer to the event information structure
11399
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 @see
11401 @return Result of the function call
11402*/
11403WDI_Status
11404WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011405(
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 WDI_ControlBlockType* pWDICtx,
11407 WDI_EventInfoType* pEventData
11408)
11409{
11410 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11411 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 wpt_uint16 usDataOffset = 0;
11416 wpt_uint16 usSendSize = 0;
11417 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11420
11421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 -------------------------------------------------------------------------*/
11424 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11425 ( NULL == pEventData->pCBfnc ))
11426 {
11427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 }
11432
11433 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11434 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11435 /*-------------------------------------------------------------------------
11436 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 -------------------------------------------------------------------------*/
11439 wpalMutexAcquire(&pWDICtx->wptMutex);
11440
11441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11445 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11446 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011447
Jeff Johnsone7245742012-09-05 17:12:55 -070011448 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11452 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 }
11454 else
11455 {
11456 /*------------------------------------------------------------------------
11457 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 ------------------------------------------------------------------------*/
11460 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11461 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11463 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11464 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11465
11466 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 }
11470 }
11471 /* If the link is set to enter IDLE - the Session allocated for this BSS
11472 will be deleted on the Set Link State response coming from HAL
11473 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11476
11477 wpalMutexRelease(&pWDICtx->wptMutex);
11478 /*-----------------------------------------------------------------------
11479 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011482
11483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 sizeof(halLinkStateReqMsg),
11485 &pSendBuffer, &usDataOffset, &usSendSize))||
11486 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11487 {
11488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11489 "Unable to get send buffer in set bss key req %x %x %x",
11490 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 }
11494
11495 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11496 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11497
11498 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11499 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11500
Jeff Johnsone7245742012-09-05 17:12:55 -070011501 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11503
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 wpalMemoryCopy( pSendBuffer+usDataOffset,
11505 &halLinkStateReqMsg,
11506 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011507
11508 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011510
11511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11515 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011516}/*WDI_ProcessSetLinkStateReq*/
11517
11518
11519/**
11520 @brief Process Get Stats Request function (called when Main FSM
11521 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011522
11523 @param pWDICtx: pointer to the WLAN DAL context
11524 pEventData: pointer to the event information structure
11525
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 @see
11527 @return Result of the function call
11528*/
11529WDI_Status
11530WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011531(
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 WDI_ControlBlockType* pWDICtx,
11533 WDI_EventInfoType* pEventData
11534)
11535{
11536 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11537 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 wpt_uint16 usDataOffset = 0;
11540 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 WDI_BSSSessionType* pBSSSes = NULL;
11543 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 tHalStatsReqMsg halStatsReqMsg;
11546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11547
11548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 -------------------------------------------------------------------------*/
11551 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11552 ( NULL == pEventData->pCBfnc ) )
11553 {
11554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 }
11559
11560 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11561 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11562
11563 /*-------------------------------------------------------------------------
11564 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
11567 wpalMutexAcquire(&pWDICtx->wptMutex);
11568
11569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11573 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 &macBSSID))
11575 {
11576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11577 "This station does not exist in the WDI Station Table %d");
11578 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 }
11581
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11583 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11586 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11587 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011588
11589 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 }
11592
11593 /*------------------------------------------------------------------------
11594 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 ------------------------------------------------------------------------*/
11597 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11598 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11600 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11601 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011602
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 }
11607
11608
11609 wpalMutexRelease(&pWDICtx->wptMutex);
11610
11611 /*-----------------------------------------------------------------------
11612 Get message buffer
11613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 sizeof(halStatsReqMsg.statsReqParams),
11616 &pSendBuffer, &usDataOffset, &usSendSize))||
11617 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11618 {
11619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11620 "Unable to get send buffer in set bss key req %x %x %x",
11621 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 }
11625
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 wpalMemoryCopy( pSendBuffer+usDataOffset,
11631 &halStatsReqMsg.statsReqParams,
11632 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011633
11634 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011636
11637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11641 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011642}/*WDI_ProcessGetStatsReq*/
11643
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011644#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11645/**
11646 @brief Process Get Roam Rssi Request function (called when Main FSM
11647 allows it)
11648
11649 @param pWDICtx: pointer to the WLAN DAL context
11650 pEventData: pointer to the event information structure
11651
11652 @see
11653 @return Result of the function call
11654*/
11655WDI_Status
11656WDI_ProcessGetRoamRssiReq
11657(
11658 WDI_ControlBlockType* pWDICtx,
11659 WDI_EventInfoType* pEventData
11660)
11661{
11662 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11663 WDI_GetStatsRspCb wdiGetStatsRspCb;
11664 wpt_uint8* pSendBuffer = NULL;
11665 wpt_uint16 usDataOffset = 0;
11666 wpt_uint16 usSendSize = 0;
11667 wpt_uint8 ucCurrentBSSSesIdx = 0;
11668 WDI_BSSSessionType* pBSSSes = NULL;
11669 wpt_macAddr macBSSID;
11670 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11671 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11673 /*-------------------------------------------------------------------------
11674 Sanity check
11675 -------------------------------------------------------------------------*/
11676 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11677 ( NULL == pEventData->pCBfnc ) )
11678 {
11679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11680 "%s: Invalid parameters", __func__);
11681 WDI_ASSERT(0);
11682 return WDI_STATUS_E_FAILURE;
11683 }
11684
11685 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11686 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11687
11688 /*-------------------------------------------------------------------------
11689 Check to see if we are in the middle of an association, if so queue, if
11690 not it means it is free to process request
11691 -------------------------------------------------------------------------*/
11692 wpalMutexAcquire(&pWDICtx->wptMutex);
11693
11694 /*------------------------------------------------------------------------
11695 Find the BSS for which the request is made
11696 ------------------------------------------------------------------------*/
11697 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11698 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11699 &macBSSID))
11700 {
11701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11702 "This station does not exist in the WDI Station Table %d");
11703 wpalMutexRelease(&pWDICtx->wptMutex);
11704 return WDI_STATUS_E_FAILURE;
11705 }
11706
11707 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11708 if ( NULL == pBSSSes )
11709 {
11710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11711 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11712 __func__, MAC_ADDR_ARRAY(macBSSID));
11713
11714 wpalMutexRelease(&pWDICtx->wptMutex);
11715 return WDI_STATUS_E_NOT_ALLOWED;
11716 }
11717
11718 /*------------------------------------------------------------------------
11719 Check if this BSS is being currently processed or queued,
11720 if queued - queue the new request as well
11721 ------------------------------------------------------------------------*/
11722 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11723 {
11724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11725 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11726 __func__, MAC_ADDR_ARRAY(macBSSID));
11727
11728 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11729 wpalMutexRelease(&pWDICtx->wptMutex);
11730 return wdiStatus;
11731 }
11732
11733 wpalMutexRelease(&pWDICtx->wptMutex);
11734
11735 /*-----------------------------------------------------------------------
11736 Get message buffer
11737 -----------------------------------------------------------------------*/
11738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11739 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11740 &pSendBuffer, &usDataOffset, &usSendSize))||
11741 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11742 {
11743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11744 "Unable to get send buffer in set bss key req %x %x %x",
11745 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11746 WDI_ASSERT(0);
11747 return WDI_STATUS_E_FAILURE;
11748 }
11749
11750 halRssiRoamReqMsg.roamRssiReqParams.staId =
11751 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11752 wpalMemoryCopy( pSendBuffer+usDataOffset,
11753 &halRssiRoamReqMsg.roamRssiReqParams,
11754 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11755
11756 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11757 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11758
11759 /*-------------------------------------------------------------------------
11760 Send Get STA Request to HAL
11761 -------------------------------------------------------------------------*/
11762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11763 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11764}/*WDI_ProcessGetRoamRssiReq*/
11765#endif
11766
Jeff Johnson295189b2012-06-20 16:38:30 -070011767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011770
11771 @param pWDICtx: pointer to the WLAN DAL context
11772 pEventData: pointer to the event information structure
11773
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 @see
11775 @return Result of the function call
11776*/
11777WDI_Status
11778WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011779(
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 WDI_ControlBlockType* pWDICtx,
11781 WDI_EventInfoType* pEventData
11782)
11783{
11784 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11785 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11786
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 wpt_uint16 usDataOffset = 0;
11789 wpt_uint16 usSendSize = 0;
11790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11791
11792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 -------------------------------------------------------------------------*/
11795 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11796 ( NULL == pEventData->pCBfnc))
11797 {
11798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011802 }
11803
11804 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11805 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11806
11807 /*-----------------------------------------------------------------------
11808 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011809 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011810 -----------------------------------------------------------------------*/
11811
Jeff Johnsone7245742012-09-05 17:12:55 -070011812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11814 &pSendBuffer, &usDataOffset, &usSendSize))||
11815 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11816 {
11817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11818 "Unable to get send buffer in set bss key req %x %x %x",
11819 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 }
11823
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 wpalMemoryCopy( pSendBuffer+usDataOffset,
11825 &pwdiUpdateCfgParams->uConfigBufferLen,
11826 sizeof(wpt_uint32));
11827 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11828 pwdiUpdateCfgParams->pConfigBuffer,
11829 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011830
11831 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011833
11834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 -------------------------------------------------------------------------*/
11837
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11839 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011840
11841}/*WDI_ProcessUpdateCfgReq*/
11842
11843
11844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011845 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011847
11848 @param pWDICtx: pointer to the WLAN DAL context
11849 pEventData: pointer to the event information structure
11850
Jeff Johnson295189b2012-06-20 16:38:30 -070011851 @see
11852 @return Result of the function call
11853*/
11854WDI_Status
11855WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011856(
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 WDI_ControlBlockType* pWDICtx,
11858 WDI_EventInfoType* pEventData
11859)
11860{
11861 WDI_AddBAReqParamsType* pwdiAddBAParams;
11862 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 wpt_uint16 usDataOffset = 0;
11867 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011868 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 wpt_macAddr macBSSID;
11870
11871 tAddBAReqMsg halAddBAReq;
11872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11873
11874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 -------------------------------------------------------------------------*/
11877 if (( NULL == pEventData ) ||
11878 ( NULL == pEventData->pEventData) ||
11879 ( NULL == pEventData->pCBfnc ))
11880 {
11881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011883 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 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11888 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11889
11890 /*-------------------------------------------------------------------------
11891 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 -------------------------------------------------------------------------*/
11894 wpalMutexAcquire(&pWDICtx->wptMutex);
11895
11896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11900 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 &macBSSID))
11902 {
11903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11904 "This station does not exist in the WDI Station Table %d");
11905 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 }
11908
Jeff Johnsone7245742012-09-05 17:12:55 -070011909 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11910 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11913 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11914 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011915
11916 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011918 }
11919
11920 /*------------------------------------------------------------------------
11921 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 ------------------------------------------------------------------------*/
11924 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11925 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11927 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11928 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011929
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 }
11934
11935
11936 wpalMutexRelease(&pWDICtx->wptMutex);
11937 /*-----------------------------------------------------------------------
11938 Get message buffer
11939 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 sizeof(halAddBAReq.addBAParams),
11942 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11945 {
11946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11947 "Unable to get send buffer in Add BA req %x %x %x",
11948 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011951 }
11952
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11955 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11956#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11959#endif
11960
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 wpalMemoryCopy( pSendBuffer+usDataOffset,
11962 &halAddBAReq.addBAParams,
11963 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011964
11965 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011967
11968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11972 wdiAddBARspCb, pEventData->pUserData,
11973 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011974}/*WDI_ProcessAddBAReq*/
11975
11976
11977
11978/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011980 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011981
11982 @param pWDICtx: pointer to the WLAN DAL context
11983 pEventData: pointer to the event information structure
11984
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 @see
11986 @return Result of the function call
11987*/
11988WDI_Status
11989WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011990(
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 WDI_ControlBlockType* pWDICtx,
11992 WDI_EventInfoType* pEventData
11993)
11994{
11995 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11996 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 wpt_uint16 usDataOffset = 0;
12001 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 wpt_uint16 index;
12004 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012005
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 tTriggerBAReqMsg halTriggerBAReq;
12007 tTriggerBaReqCandidate* halTriggerBACandidate;
12008 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12010
12011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 -------------------------------------------------------------------------*/
12014 if (( NULL == pEventData ) ||
12015 ( NULL == pEventData->pEventData ) ||
12016 ( NULL == pEventData->pCBfnc ))
12017 {
12018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 }
12023
12024 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12025 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12026 /*-------------------------------------------------------------------------
12027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 -------------------------------------------------------------------------*/
12030 wpalMutexAcquire(&pWDICtx->wptMutex);
12031
12032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12036 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 &macBSSID))
12038 {
12039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12040 "This station does not exist in the WDI Station Table %d");
12041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 }
12044
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12046 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12049 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12050 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012051
12052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 }
12055
12056 /*------------------------------------------------------------------------
12057 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 ------------------------------------------------------------------------*/
12060 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12061 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12063 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12064 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012065
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 }
12070
12071
12072 wpalMutexRelease(&pWDICtx->wptMutex);
12073 /*-----------------------------------------------------------------------
12074 Get message buffer
12075 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12077 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012078 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12081 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12086 {
12087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12088 "Unable to get send buffer in Trigger BA req %x %x %x",
12089 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 }
12093
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012095 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12098
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 wpalMemoryCopy( pSendBuffer+usDataOffset,
12100 &halTriggerBAReq.triggerBAParams,
12101 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012102
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12105 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12106 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012107
12108 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012109 index++)
12110 {
12111 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12112 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12113 halTriggerBACandidate++;
12114 wdiTriggerBACandidate++;
12115 }
12116
12117 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012118 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012119
12120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012123 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12124 wdiTriggerBARspCb, pEventData->pUserData,
12125 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012126}/*WDI_ProcessTriggerBAReq*/
12127
12128
12129
12130/**
12131 @brief Process Update Beacon Params Request function (called when Main FSM
12132 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012133
12134 @param pWDICtx: pointer to the WLAN DAL context
12135 pEventData: pointer to the event information structure
12136
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 @see
12138 @return Result of the function call
12139*/
12140WDI_Status
12141WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012142(
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 WDI_ControlBlockType* pWDICtx,
12144 WDI_EventInfoType* pEventData
12145)
12146{
12147 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12148 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 wpt_uint16 usDataOffset = 0;
12151 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012152 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12154
12155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 -------------------------------------------------------------------------*/
12158 if (( NULL == pEventData ) ||
12159 ( NULL == pEventData->pEventData) ||
12160 ( NULL == pEventData->pCBfnc))
12161 {
12162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 }
12167
12168 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12169 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12170 /*-----------------------------------------------------------------------
12171 Get message buffer
12172 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 sizeof(halUpdateBeaconParams),
12175 &pSendBuffer, &usDataOffset, &usSendSize))||
12176 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12177 {
12178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12179 "Unable to get send buffer in set bss key req %x %x %x",
12180 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 }
12184
12185 /*BSS Index of the BSS*/
12186 halUpdateBeaconParams.bssIdx =
12187 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12188 /*shortPreamble mode. HAL should update all the STA rates when it
12189 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12192 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12195 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12198
12199 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012204 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012205 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12212 halUpdateBeaconParams.fRIFSMode =
12213 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12216
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12218 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012219
12220 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012222
12223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012224 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12227 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012228}/*WDI_ProcessUpdateBeaconParamsReq*/
12229
12230
12231
12232/**
12233 @brief Process Send Beacon template Request function (called when Main FSM
12234 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012235
12236 @param pWDICtx: pointer to the WLAN DAL context
12237 pEventData: pointer to the event information structure
12238
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 @see
12240 @return Result of the function call
12241*/
12242WDI_Status
12243WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012244(
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 WDI_ControlBlockType* pWDICtx,
12246 WDI_EventInfoType* pEventData
12247)
12248{
12249 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12250 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 wpt_uint16 usDataOffset = 0;
12253 wpt_uint16 usSendSize = 0;
12254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12255
12256 tSendBeaconReqMsg halSendBeaconReq;
12257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 -------------------------------------------------------------------------*/
12260 if (( NULL == pEventData ) ||
12261 ( NULL == pEventData->pEventData ) ||
12262 ( NULL == pEventData->pCBfnc ))
12263 {
12264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 }
12269
12270 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12271 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12272 /*-----------------------------------------------------------------------
12273 Get message buffer
12274 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 sizeof(halSendBeaconReq.sendBeaconParam),
12277 &pSendBuffer, &usDataOffset, &usSendSize))||
12278 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12279 {
12280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12281 "Unable to get send buffer in send beacon req %x %x %x",
12282 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 }
12286
12287 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12288 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12289 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12292 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12293 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12294 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012295 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012297 /* usP2PIeOffset should be atleast greater than timIeOffset */
12298 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12299 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12300 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12301 {
12302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12303 "Invalid usP2PIeOffset %hu",
12304 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12305 WDI_ASSERT(0);
12306 return WDI_STATUS_E_FAILURE;
12307 }
12308
Jeff Johnsone7245742012-09-05 17:12:55 -070012309 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012311
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 wpalMemoryCopy( pSendBuffer+usDataOffset,
12313 &halSendBeaconReq.sendBeaconParam,
12314 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012315
12316 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318
12319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12323 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012324}/*WDI_ProcessSendBeaconParamsReq*/
12325
12326/**
12327 @brief Process Update Beacon Params Request function (called when Main FSM
12328 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012329
12330 @param pWDICtx: pointer to the WLAN DAL context
12331 pEventData: pointer to the event information structure
12332
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 @see
12334 @return Result of the function call
12335*/
12336WDI_Status
12337WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012338(
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 WDI_ControlBlockType* pWDICtx,
12340 WDI_EventInfoType* pEventData
12341)
12342{
12343 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12344 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 wpt_uint16 usDataOffset = 0;
12347 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12350
12351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 -------------------------------------------------------------------------*/
12354 if (( NULL == pEventData ) ||
12355 ( NULL == pEventData->pEventData) ||
12356 ( NULL == pEventData->pCBfnc))
12357 {
12358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 }
12363
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012365 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12368 /*-----------------------------------------------------------------------
12369 Get message buffer
12370 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 sizeof(halUpdateProbeRspTmplParams),
12373 &pSendBuffer, &usDataOffset, &usSendSize))||
12374 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12375 {
12376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12377 "Unable to get send buffer in set bss key req %x %x %x",
12378 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 }
12382
12383 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 WDI_MAC_ADDR_LEN);
12386
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012388 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12389
12390 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12391 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012393
12394
12395 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12396 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12397 WDI_PROBE_REQ_BITMAP_IE_LEN);
12398
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 wpalMemoryCopy( pSendBuffer+usDataOffset,
12400 &halUpdateProbeRspTmplParams,
12401 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012402
12403 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->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 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12411 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012412}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12413
12414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012416 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012417
12418 @param pWDICtx: pointer to the WLAN DAL context
12419 pEventData: pointer to the event information structure
12420
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 @see
12422 @return Result of the function call
12423*/
12424WDI_Status
12425WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012426(
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 WDI_ControlBlockType* pWDICtx,
12428 WDI_EventInfoType* pEventData
12429)
12430{
12431
12432 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12433 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12434
12435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 -------------------------------------------------------------------------*/
12438 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012440 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12443 {
12444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 }
12449
12450 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12453
12454 /*cache the wdi nv request message here if the the first fragment
12455 * To issue the request to HAL for the next fragment */
12456 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12457 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12459 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12461
12462 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12463 pWDICtx->pRspCBUserData = pEventData->pUserData;
12464 }
12465
12466 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12467}
12468
12469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012472
12473 @param pWDICtx: pointer to the WLAN DAL context
12474 pEventData: pointer to the event information structure
12475
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 @see
12477 @return Result of the function call
12478*/
12479WDI_Status WDI_ProcessSetMaxTxPowerReq
12480(
12481 WDI_ControlBlockType* pWDICtx,
12482 WDI_EventInfoType* pEventData
12483)
12484{
12485 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12486 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 wpt_uint16 usDataOffset = 0;
12489 wpt_uint16 usSendSize = 0;
12490 tSetMaxTxPwrReq halSetMaxTxPower;
12491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12492
12493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 -------------------------------------------------------------------------*/
12496 if (( NULL == pEventData ) ||
12497 ( NULL == pEventData->pEventData ) ||
12498 ( NULL == pEventData->pCBfnc ))
12499 {
12500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12509
12510 /*-----------------------------------------------------------------------
12511 Get message buffer
12512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012513if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12515 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012517)))
12518 {
12519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12520 "Unable to get Set Max Tx Power req %x %x %x",
12521 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 }
12525
12526 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12527 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12528 WDI_MAC_ADDR_LEN);
12529
12530 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12531 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12532 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012535
12536 wpalMemoryCopy( pSendBuffer+usDataOffset,
12537 &halSetMaxTxPower.setMaxTxPwrParams,
12538 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012539
12540 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012542
12543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12547 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12548 WDI_SET_MAX_TX_POWER_RESP);
12549
Jeff Johnson295189b2012-06-20 16:38:30 -070012550}
12551
schang86c22c42013-03-13 18:41:24 -070012552/**
12553 @brief Process Set Tx Power Request function (called when Main
12554 FSM allows it)
12555
12556 @param pWDICtx: pointer to the WLAN DAL context
12557 pEventData: pointer to the event information structure
12558
12559 @see
12560 @return Result of the function call
12561*/
12562WDI_Status WDI_ProcessSetTxPowerReq
12563(
12564 WDI_ControlBlockType* pWDICtx,
12565 WDI_EventInfoType* pEventData
12566)
12567{
12568 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12569 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12570 wpt_uint8* pSendBuffer = NULL;
12571 wpt_uint16 usDataOffset = 0;
12572 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070012573 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070012574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12575
12576 /*-------------------------------------------------------------------------
12577 Sanity check
12578 -------------------------------------------------------------------------*/
12579 if (( NULL == pEventData ) ||
12580 ( NULL == pEventData->pEventData ) ||
12581 ( NULL == pEventData->pCBfnc ))
12582 {
12583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12584 "%s: Invalid parameters", __func__);
12585 WDI_ASSERT(0);
12586 return WDI_STATUS_E_FAILURE;
12587 }
12588
12589 pwdiSetTxPowerParams =
12590 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12591 wdiSetTxPowerRspCb =
12592 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12593
12594 /*-----------------------------------------------------------------------
12595 Get message buffer
12596 -----------------------------------------------------------------------*/
12597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12598 sizeof(tSetTxPwrReqParams),
12599 &pSendBuffer, &usDataOffset, &usSendSize))||
12600 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12601 )))
12602 {
12603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12604 "Unable to get Set Max Tx Power req %x %x %x",
12605 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12606 WDI_ASSERT(0);
12607 return WDI_STATUS_E_FAILURE;
12608 }
12609
Leo Chang9a43db92013-03-25 17:39:58 -070012610 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12611 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12612 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070012613
12614 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12615 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12616
12617 /*-------------------------------------------------------------------------
12618 Send Set Tx Power Request to HAL
12619 -------------------------------------------------------------------------*/
12620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12621 wdiSetTxPowerRspCb, pEventData->pUserData,
12622 WDI_SET_TX_POWER_RESP);
12623}
Jeff Johnson295189b2012-06-20 16:38:30 -070012624
12625/**
12626 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12627 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012628
12629 @param pWDICtx: pointer to the WLAN DAL context
12630 pEventData: pointer to the event information structure
12631
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 @see
12633 @return Result of the function call
12634*/
12635WDI_Status
12636WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012637(
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 WDI_ControlBlockType* pWDICtx,
12639 WDI_EventInfoType* pEventData
12640)
12641{
12642 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12643 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 wpt_uint16 usDataOffset = 0;
12646 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12649
12650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 -------------------------------------------------------------------------*/
12653 if (( NULL == pEventData ) ||
12654 ( NULL == pEventData->pEventData) ||
12655 ( NULL == pEventData->pCBfnc))
12656 {
12657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 }
12662
Jeff Johnsone7245742012-09-05 17:12:55 -070012663 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012664 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12667 /*-----------------------------------------------------------------------
12668 Get message buffer
12669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12671 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 sizeof(halSetP2PGONOAParams),
12673 &pSendBuffer, &usDataOffset, &usSendSize))||
12674 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12675 {
12676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12677 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12678 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 }
12682
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12687 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012688 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012689 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12696
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 wpalMemoryCopy( pSendBuffer+usDataOffset,
12698 &halSetP2PGONOAParams,
12699 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012700
12701 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012703
12704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12708 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12709 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012710}/*WDI_ProcessP2PGONOAReq*/
12711
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012712#ifdef FEATURE_WLAN_TDLS
12713
12714/**
12715 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12716 allows it)
12717
12718 @param pWDICtx: pointer to the WLAN DAL context
12719 pEventData: pointer to the event information structure
12720
12721 @see
12722 @return Result of the function call
12723*/
12724WDI_Status
12725WDI_ProcessTdlsLinkEstablishReq
12726(
12727 WDI_ControlBlockType* pWDICtx,
12728 WDI_EventInfoType* pEventData
12729)
12730{
12731 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12732 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12733 wpt_uint8* pSendBuffer = NULL;
12734 wpt_uint16 usDataOffset = 0;
12735 wpt_uint16 usSendSize = 0;
12736
12737 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12739
12740 /*-------------------------------------------------------------------------
12741 Sanity check
12742 -------------------------------------------------------------------------*/
12743 if (( NULL == pEventData ) ||
12744 ( NULL == pEventData->pEventData) ||
12745 ( NULL == pEventData->pCBfnc))
12746 {
12747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12748 "%s: Invalid parameters", __func__);
12749 WDI_ASSERT(0);
12750 return WDI_STATUS_E_FAILURE;
12751 }
12752 pwdiTDLSLinkEstablishReqParams =
12753 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12754 wdiTDLSLinkEstablishReqRspCb =
12755 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12756
12757
12758 /*-----------------------------------------------------------------------
12759 Get message buffer
12760 -----------------------------------------------------------------------*/
12761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12762 WDI_TDLS_LINK_ESTABLISH_REQ,
12763 sizeof(halSetTDLSLinkEstablishParams),
12764 &pSendBuffer, &usDataOffset, &usSendSize))||
12765 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12766 {
12767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12768 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12769 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12770 WDI_ASSERT(0);
12771 return WDI_STATUS_E_FAILURE;
12772 }
12773
12774 halSetTDLSLinkEstablishParams.staIdx =
12775 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12776 halSetTDLSLinkEstablishParams.bIsResponder =
12777 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12778 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12779 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12780 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12781 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12782 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12783 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12784 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12785 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12786 halSetTDLSLinkEstablishParams.aAck = 0;
12787 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12788 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12789 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12790
12791 wpalMemoryCopy( pSendBuffer+usDataOffset,
12792 &halSetTDLSLinkEstablishParams,
12793 sizeof(halSetTDLSLinkEstablishParams));
12794
12795 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12796 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12797
12798 /*-------------------------------------------------------------------------
12799 Send Update Probe Resp Template Request to HAL
12800 -------------------------------------------------------------------------*/
12801 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12802 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12803 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12804 return 0;
12805}/*WDI_ProcessTdlsLinkEstablishReq*/
12806
12807
12808#endif
12809
Jeff Johnson295189b2012-06-20 16:38:30 -070012810
12811
12812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 @param None
12816
12817 @see
12818 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012819*/
12820void
12821WDI_SetPowerStateCb
12822(
12823 wpt_status status,
12824 unsigned int dxePhyAddr,
12825 void *pContext
12826)
12827{
12828 wpt_status wptStatus;
12829 WDI_ControlBlockType *pCB = NULL;
12830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12831 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12832 {
12833 //it shouldn't happen, put an error msg
12834 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 /*
12836 * Trigger the event to bring the Enter BMPS req function to come
12837 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012838*/
12839 if( NULL != pContext )
12840 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 }
12843 else
12844 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 pCB = &gWDICb;
12847 }
12848 pCB->dxePhyAddr = dxePhyAddr;
12849 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12850 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12851 {
12852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12853 "Failed to set an event");
12854
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 }
12857 return;
12858}
12859
12860
12861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012864
12865 @param pWDICtx: pointer to the WLAN DAL context
12866 pEventData: pointer to the event information structure
12867
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 @see
12869 @return Result of the function call
12870*/
12871WDI_Status
12872WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012873(
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 WDI_ControlBlockType* pWDICtx,
12875 WDI_EventInfoType* pEventData
12876)
12877{
Jeff Johnson43971f52012-07-17 12:26:56 -070012878 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 wpt_uint16 usDataOffset = 0;
12882 wpt_uint16 usSendSize = 0;
12883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12884
12885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 -------------------------------------------------------------------------*/
12888 if (( NULL == pEventData ) ||
12889 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12890 {
12891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080012894 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 }
12896
12897 /*-----------------------------------------------------------------------
12898 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 0,
12903 &pSendBuffer, &usDataOffset, &usSendSize))||
12904 ( usSendSize < (usDataOffset )))
12905 {
12906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12907 "Unable to get send buffer in Enter IMPS req %x %x",
12908 pEventData, wdiEnterImpsRspCb);
12909 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080012910 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 }
12912
12913 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012914 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12915 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 {
12917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12918 "WDI Init failed to reset an event");
12919
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080012921 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 }
12923
12924 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080012925 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12926 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12928 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12929 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080012930 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080012931 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012932
12933 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012936 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12937 WDI_SET_POWER_STATE_TIMEOUT);
12938 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 {
12940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12941 "WDI Init failed to wait on an event");
12942
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080012944 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 }
12946
12947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12951 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080012952
12953fail:
12954 // Release the message buffer so we don't leak
12955 wpalMemoryFree(pSendBuffer);
12956
12957failRequest:
12958 //WDA should have failure check to avoid the memory leak
12959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012960}/*WDI_ProcessEnterImpsReq*/
12961
12962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012964 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012965
12966 @param pWDICtx: pointer to the WLAN DAL context
12967 pEventData: pointer to the event information structure
12968
Jeff Johnson295189b2012-06-20 16:38:30 -070012969 @see
12970 @return Result of the function call
12971*/
12972WDI_Status
12973WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012974(
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 WDI_ControlBlockType* pWDICtx,
12976 WDI_EventInfoType* pEventData
12977)
12978{
12979 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 wpt_uint16 usDataOffset = 0;
12982 wpt_uint16 usSendSize = 0;
12983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12984
12985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 -------------------------------------------------------------------------*/
12988 if (( NULL == pEventData ) ||
12989 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12990 {
12991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 }
12996
12997 /*-----------------------------------------------------------------------
12998 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012999 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013000 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 0,
13003 &pSendBuffer, &usDataOffset, &usSendSize))||
13004 ( usSendSize < (usDataOffset )))
13005 {
13006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13007 "Unable to get send buffer in Exit IMPS req %x %x",
13008 pEventData, wdiExitImpsRspCb);
13009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 }
13012
13013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13017 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013018}/*WDI_ProcessExitImpsReq*/
13019
13020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013023
13024 @param pWDICtx: pointer to the WLAN DAL context
13025 pEventData: pointer to the event information structure
13026
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 @see
13028 @return Result of the function call
13029*/
13030WDI_Status
13031WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013032(
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 WDI_ControlBlockType* pWDICtx,
13034 WDI_EventInfoType* pEventData
13035)
13036{
13037 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13038 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 wpt_uint16 usDataOffset = 0;
13041 wpt_uint16 usSendSize = 0;
13042 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013043 wpt_status wptStatus;
13044
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13046
13047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 -------------------------------------------------------------------------*/
13050 if (( NULL == pEventData ) ||
13051 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13052 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13053 {
13054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013057 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 }
13059
13060 /*-----------------------------------------------------------------------
13061 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 sizeof(enterBmpsReq),
13066 &pSendBuffer, &usDataOffset, &usSendSize))||
13067 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13068 {
13069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13070 "Unable to get send buffer in Enter BMPS req %x %x %x",
13071 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13072 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013073 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 }
13075
13076 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013077 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13078 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 {
13080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13081 "WDI Init failed to reset an event");
13082
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013084 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 }
13086
13087 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013088 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13089 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13090 {
13091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13092 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13093 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013094 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013096
13097/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013099 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013100 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13101 WDI_SET_POWER_STATE_TIMEOUT);
13102 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 {
13104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13105 "WDI Init failed to wait on an event");
13106
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013108 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 }
13110
13111 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13112
13113 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13114 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13115 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13116 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13117
13118 // For CCX and 11R Roaming
13119 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13120 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13121 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13122
13123 wpalMemoryCopy( pSendBuffer+usDataOffset,
13124 &enterBmpsReq,
13125 sizeof(enterBmpsReq));
13126
13127 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013129
13130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13134 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013135
13136fail:
13137 // Release the message buffer so we don't leak
13138 wpalMemoryFree(pSendBuffer);
13139
13140failRequest:
13141 //WDA should have failure check to avoid the memory leak
13142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013143}/*WDI_ProcessEnterBmpsReq*/
13144
13145/**
13146 @brief Process Exit BMPS Request function (called when Main FSM
13147 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013148
13149 @param pWDICtx: pointer to the WLAN DAL context
13150 pEventData: pointer to the event information structure
13151
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 @see
13153 @return Result of the function call
13154*/
13155WDI_Status
13156WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013157(
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 WDI_ControlBlockType* pWDICtx,
13159 WDI_EventInfoType* pEventData
13160)
13161{
13162 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13163 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013164 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 wpt_uint16 usDataOffset = 0;
13166 wpt_uint16 usSendSize = 0;
13167 tHalExitBmpsReqParams exitBmpsReq;
13168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13169
13170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 -------------------------------------------------------------------------*/
13173 if (( NULL == pEventData ) ||
13174 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13175 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13176 {
13177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 }
13182
13183 /*-----------------------------------------------------------------------
13184 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 sizeof(exitBmpsReq),
13189 &pSendBuffer, &usDataOffset, &usSendSize))||
13190 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13191 {
13192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13193 "Unable to get send buffer in Exit BMPS req %x %x %x",
13194 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 }
13198 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13199
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13201
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 wpalMemoryCopy( pSendBuffer+usDataOffset,
13203 &exitBmpsReq,
13204 sizeof(exitBmpsReq));
13205
13206 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013208
13209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013212 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13213 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013214}/*WDI_ProcessExitBmpsReq*/
13215
13216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013219
13220 @param pWDICtx: pointer to the WLAN DAL context
13221 pEventData: pointer to the event information structure
13222
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 @see
13224 @return Result of the function call
13225*/
13226WDI_Status
13227WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013228(
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 WDI_ControlBlockType* pWDICtx,
13230 WDI_EventInfoType* pEventData
13231)
13232{
13233 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13234 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 wpt_uint16 usDataOffset = 0;
13237 wpt_uint16 usSendSize = 0;
13238 tUapsdReqParams enterUapsdReq;
13239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13240
13241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 -------------------------------------------------------------------------*/
13244 if (( NULL == pEventData ) ||
13245 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13246 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13247 {
13248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 }
13253
13254 /*-----------------------------------------------------------------------
13255 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 sizeof(enterUapsdReq),
13260 &pSendBuffer, &usDataOffset, &usSendSize))||
13261 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13262 {
13263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13264 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13265 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 }
13269
13270 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13271 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13272 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13273 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13274 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13275 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13276 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13277 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 wpalMemoryCopy( pSendBuffer+usDataOffset,
13281 &enterUapsdReq,
13282 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013283
13284 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013286
13287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13291 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013292}/*WDI_ProcessEnterUapsdReq*/
13293
13294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013297
13298 @param pWDICtx: pointer to the WLAN DAL context
13299 pEventData: pointer to the event information structure
13300
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 @see
13302 @return Result of the function call
13303*/
13304WDI_Status
13305WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013306(
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 WDI_ControlBlockType* pWDICtx,
13308 WDI_EventInfoType* pEventData
13309)
13310{
13311 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 wpt_uint16 usDataOffset = 0;
13314 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013315 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13316 wpt_uint8 bssIdx = 0;
13317
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13319
13320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 -------------------------------------------------------------------------*/
13323 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013324 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13326 {
13327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013331 }
13332
13333 /*-----------------------------------------------------------------------
13334 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013338 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013340 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 {
13342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13343 "Unable to get send buffer in Exit UAPSD req %x %x",
13344 pEventData, wdiExitUapsdRspCb);
13345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 }
13348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013349 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13350
13351 wpalMemoryCopy( pSendBuffer+usDataOffset,
13352 &bssIdx,
13353 sizeof(wpt_uint8));
13354
13355 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13356 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13357
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13362 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013363}/*WDI_ProcessExitUapsdReq*/
13364
13365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013368
13369 @param pWDICtx: pointer to the WLAN DAL context
13370 pEventData: pointer to the event information structure
13371
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 @see
13373 @return Result of the function call
13374*/
13375WDI_Status
13376WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013377(
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 WDI_ControlBlockType* pWDICtx,
13379 WDI_EventInfoType* pEventData
13380)
13381{
13382 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13383 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 wpt_uint16 usDataOffset = 0;
13386 wpt_uint16 usSendSize = 0;
13387 tUapsdInfo uapsdAcParamsReq;
13388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13389
13390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 -------------------------------------------------------------------------*/
13393 if (( NULL == pEventData ) ||
13394 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13395 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13396 {
13397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 }
13402
13403 /*-----------------------------------------------------------------------
13404 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 sizeof(uapsdAcParamsReq),
13409 &pSendBuffer, &usDataOffset, &usSendSize))||
13410 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13411 {
13412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13413 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13414 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 }
13418
13419 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13420 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13421 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13422 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13423 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13424 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13425
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 wpalMemoryCopy( pSendBuffer+usDataOffset,
13427 &uapsdAcParamsReq,
13428 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013429
13430 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013432
13433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13437 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013438}/*WDI_ProcessSetUapsdAcParamsReq*/
13439
13440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013443
13444 @param pWDICtx: pointer to the WLAN DAL context
13445 pEventData: pointer to the event information structure
13446
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 @see
13448 @return Result of the function call
13449*/
13450WDI_Status
13451WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013452(
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 WDI_ControlBlockType* pWDICtx,
13454 WDI_EventInfoType* pEventData
13455)
13456{
13457 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13458 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 wpt_uint16 usDataOffset = 0;
13461 wpt_uint16 usSendSize = 0;
13462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13463
13464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 -------------------------------------------------------------------------*/
13467 if (( NULL == pEventData ) ||
13468 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13469 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13470 {
13471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 }
13476
13477 /*-----------------------------------------------------------------------
13478 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13483 &pSendBuffer, &usDataOffset, &usSendSize))||
13484 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13485 {
13486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13487 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13488 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 }
13492
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 wpalMemoryCopy( pSendBuffer+usDataOffset,
13494 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13495 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013496
13497 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013499
13500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13504 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013505}/*WDI_ProcessUpdateUapsdParamsReq*/
13506
13507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013510
13511 @param pWDICtx: pointer to the WLAN DAL context
13512 pEventData: pointer to the event information structure
13513
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 @see
13515 @return Result of the function call
13516*/
13517WDI_Status
13518WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013519(
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 WDI_ControlBlockType* pWDICtx,
13521 WDI_EventInfoType* pEventData
13522)
13523{
13524 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13525 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 wpt_uint16 usDataOffset = 0;
13528 wpt_uint16 usSendSize = 0;
13529 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13530
13531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13532
13533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013535 -------------------------------------------------------------------------*/
13536 if (( NULL == pEventData ) ||
13537 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13538 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13539 {
13540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 }
13545
13546 /*-----------------------------------------------------------------------
13547 Get message buffer
13548 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 sizeof(halRxpFilterParams),
13551 &pSendBuffer, &usDataOffset, &usSendSize))||
13552 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13553 {
13554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13555 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13556 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 }
13560
Jeff Johnsone7245742012-09-05 17:12:55 -070013561 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13565
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 wpalMemoryCopy( pSendBuffer+usDataOffset,
13567 &halRxpFilterParams,
13568 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013569
13570 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013572
13573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013574 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13577 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013578}/*WDI_ProcessConfigureRxpFilterReq*/
13579
13580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013583
13584 @param pWDICtx: pointer to the WLAN DAL context
13585 pEventData: pointer to the event information structure
13586
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 @see
13588 @return Result of the function call
13589*/
13590WDI_Status
13591WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013592(
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 WDI_ControlBlockType* pWDICtx,
13594 WDI_EventInfoType* pEventData
13595)
13596{
13597 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13598 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 wpt_uint16 usDataOffset = 0;
13601 wpt_uint16 usSendSize = 0;
13602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13603
13604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 -------------------------------------------------------------------------*/
13607 if (( NULL == pEventData ) ||
13608 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13609 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13610 {
13611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 }
13616
13617 /*-----------------------------------------------------------------------
13618 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13623 &pSendBuffer, &usDataOffset, &usSendSize))||
13624 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13625 {
13626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13627 "Unable to get send buffer in Set beacon filter req %x %x %x",
13628 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 }
13632
Jeff Johnsone7245742012-09-05 17:12:55 -070013633 wpalMemoryCopy( pSendBuffer+usDataOffset,
13634 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13635 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13636 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13637 &pwdiBeaconFilterParams->aFilters[0],
13638 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013639
13640 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013642
13643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13647 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013648}/*WDI_ProcessSetBeaconFilterReq*/
13649
13650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013653
13654 @param pWDICtx: pointer to the WLAN DAL context
13655 pEventData: pointer to the event information structure
13656
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 @see
13658 @return Result of the function call
13659*/
13660WDI_Status
13661WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013662(
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 WDI_ControlBlockType* pWDICtx,
13664 WDI_EventInfoType* pEventData
13665)
13666{
13667 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13668 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 wpt_uint16 usDataOffset = 0;
13671 wpt_uint16 usSendSize = 0;
13672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13673
13674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013676 -------------------------------------------------------------------------*/
13677 if (( NULL == pEventData ) ||
13678 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13679 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13680 {
13681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 }
13686
13687 /*-----------------------------------------------------------------------
13688 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13693 &pSendBuffer, &usDataOffset, &usSendSize))||
13694 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13695 {
13696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13697 "Unable to get send buffer in remove beacon filter req %x %x %x",
13698 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 }
13702
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 wpalMemoryCopy( pSendBuffer+usDataOffset,
13704 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13705 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013706
13707 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013709
13710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013711 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13714 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013715}
13716
13717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013720
13721 @param pWDICtx: pointer to the WLAN DAL context
13722 pEventData: pointer to the event information structure
13723
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 @see
13725 @return Result of the function call
13726*/
13727WDI_Status
13728WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013729(
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 WDI_ControlBlockType* pWDICtx,
13731 WDI_EventInfoType* pEventData
13732)
13733{
13734 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13735 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 wpt_uint16 usDataOffset = 0;
13738 wpt_uint16 usSendSize = 0;
13739 tHalRSSIThresholds rssiThresholdsReq;
13740 WDI_Status ret_status = 0;
13741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13742
13743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 -------------------------------------------------------------------------*/
13746 if (( NULL == pEventData ) ||
13747 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13748 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13749 {
13750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 }
13755
13756 /*-----------------------------------------------------------------------
13757 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 sizeof(rssiThresholdsReq),
13762 &pSendBuffer, &usDataOffset, &usSendSize))||
13763 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13764 {
13765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13766 "Unable to get send buffer in remove beacon filter req %x %x %x",
13767 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 }
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013784 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13792
Jeff Johnsone7245742012-09-05 17:12:55 -070013793 wpalMemoryCopy( pSendBuffer+usDataOffset,
13794 &rssiThresholdsReq,
13795 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013796
13797 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013799
13800 /*-------------------------------------------------------------------------
13801 Send Set threshold req to HAL
13802 -------------------------------------------------------------------------*/
13803 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13804 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13805 {
13806 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13807 // req. Then as a result of processing the threshold cross ind, we trigger
13808 // a Set threshold req, then we need to indicate to WDI that it needs to
13809 // go to busy state as a result of the indication as we sent a req in the
13810 // same WDI context.
13811 // Hence expected state transition is to busy.
13812 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13813 }
13814
13815 return ret_status;
13816}
13817
13818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013821
13822 @param pWDICtx: pointer to the WLAN DAL context
13823 pEventData: pointer to the event information structure
13824
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 @see
13826 @return Result of the function call
13827*/
13828WDI_Status
13829WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013830(
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 WDI_ControlBlockType* pWDICtx,
13832 WDI_EventInfoType* pEventData
13833)
13834{
13835 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13836 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013837 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 wpt_uint16 usDataOffset = 0;
13839 wpt_uint16 usSendSize = 0;
13840 tHalHostOffloadReq hostOffloadParams;
13841 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013842 wpt_uint8 ucCurrentBSSSesIdx = 0;
13843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844
13845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13846
13847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 -------------------------------------------------------------------------*/
13850 if (( NULL == pEventData ) ||
13851 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13852 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13853 {
13854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013857 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 }
13859
13860 /*-----------------------------------------------------------------------
13861 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13866 &pSendBuffer, &usDataOffset, &usSendSize))||
13867 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13868 {
13869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13870 "Unable to get send buffer in host offload req %x %x %x",
13871 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13872 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013873 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 }
13875
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013876 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13877 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13878 &pBSSSes);
13879 if ( NULL == pBSSSes )
13880 {
13881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053013882 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13883 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013884 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013885 }
13886
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13888 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013889
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13891 {
13892 // ARP Offload
13893 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13894 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13895 4);
13896 }
13897 else
13898 {
13899 // NS Offload
13900 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13901 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13902 16);
13903
13904#ifdef WLAN_NS_OFFLOAD
13905 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13906 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13907 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13908 16);
13909 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13910 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13911 16);
13912 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13913 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13914 16);
13915 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13916 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13917 16);
13918 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13919 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13920 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053013921 nsOffloadParams.srcIPv6AddrValid =
13922 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13923
13924 nsOffloadParams.targetIPv6Addr1Valid =
13925 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13926
13927 nsOffloadParams.targetIPv6Addr2Valid =
13928 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13929
13930 nsOffloadParams.slotIndex =
13931 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932
Jeff Johnson295189b2012-06-20 16:38:30 -070013933#endif // WLAN_NS_OFFLOAD
13934 }
13935
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013936 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13937
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 // copy hostOffloadParams into pSendBuffer
13939 wpalMemoryCopy( pSendBuffer+usDataOffset,
13940 &hostOffloadParams,
13941 sizeof(hostOffloadParams));
13942
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013943 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013944 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013945 // copy nsOffloadParams into pSendBuffer
13946 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 &nsOffloadParams,
13948 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013949 }
13950 else
13951 {
13952#ifdef WLAN_NS_OFFLOAD
13953 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13954 {
13955 // copy nsOffloadParams into pSendBuffer
13956 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13957 &nsOffloadParams,
13958 sizeof(nsOffloadParams));
13959 }
13960#endif
13961 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013962
13963 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013965
13966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13970 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013971
13972fail:
13973 // Release the message buffer so we don't leak
13974 wpalMemoryFree(pSendBuffer);
13975
13976failRequest:
13977 //WDA should have failure check to avoid the memory leak
13978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013979}/*WDI_ProcessHostOffloadReq*/
13980
13981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013984
13985 @param pWDICtx: pointer to the WLAN DAL context
13986 pEventData: pointer to the event information structure
13987
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 @see
13989 @return Result of the function call
13990*/
13991WDI_Status
13992WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013993(
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 WDI_ControlBlockType* pWDICtx,
13995 WDI_EventInfoType* pEventData
13996)
13997{
13998 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13999 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 wpt_uint16 usDataOffset = 0;
14002 wpt_uint16 usSendSize = 0;
14003 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014004 wpt_uint8 ucCurrentBSSSesIdx = 0;
14005 WDI_BSSSessionType* pBSSSes = NULL;
14006
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14008
14009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 -------------------------------------------------------------------------*/
14012 if (( NULL == pEventData ) ||
14013 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14014 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14015 {
14016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14017 "Invalid parameters in Keep Alive req");
14018 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014019 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 }
14021
14022 /*-----------------------------------------------------------------------
14023 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 sizeof(keepAliveReq),
14028 &pSendBuffer, &usDataOffset, &usSendSize))||
14029 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14030 {
14031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14032 "Unable to get send buffer in keep alive req %x %x %x",
14033 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14034 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014035 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 }
14037
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014038 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14039 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14040 &pBSSSes);
14041 if ( NULL == pBSSSes )
14042 {
14043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014044 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014045 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014046 }
14047
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14049 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14050
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014051 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014052
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14054 {
14055 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14056 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14057 HAL_IPV4_ADDR_LEN);
14058 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14059 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 wpalMemoryCopy(keepAliveReq.destMacAddr,
14062 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14063 HAL_MAC_ADDR_LEN);
14064 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014065
14066 wpalMemoryCopy( pSendBuffer+usDataOffset,
14067 &keepAliveReq,
14068 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014069
14070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14071 "Process keep alive req %d",sizeof(keepAliveReq));
14072
14073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14074 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14075
14076 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014078
14079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14080 "Sending keep alive req to HAL");
14081
14082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14086 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014087
14088fail:
14089 // Release the message buffer so we don't leak
14090 wpalMemoryFree(pSendBuffer);
14091
14092failRequest:
14093 //WDA should have failure check to avoid the memory leak
14094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014095}/*WDI_ProcessKeepAliveReq*/
14096
14097
14098/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014101
14102 @param pWDICtx: pointer to the WLAN DAL context
14103 pEventData: pointer to the event information structure
14104
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 @see
14106 @return Result of the function call
14107*/
14108WDI_Status
14109WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014110(
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 WDI_ControlBlockType* pWDICtx,
14112 WDI_EventInfoType* pEventData
14113)
14114{
14115 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14116 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 wpt_uint16 usDataOffset = 0;
14119 wpt_uint16 usSendSize = 0;
14120 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014121 wpt_uint8 ucCurrentBSSSesIdx = 0;
14122 WDI_BSSSessionType* pBSSSes = NULL;
14123
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14125
14126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 -------------------------------------------------------------------------*/
14129 if (( NULL == pEventData ) ||
14130 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14131 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14132 {
14133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014136 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 }
14138
14139 /*-----------------------------------------------------------------------
14140 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 sizeof(wowlAddBcPtrnReq),
14145 &pSendBuffer, &usDataOffset, &usSendSize))||
14146 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14147 {
14148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14149 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14150 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14151 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014152 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 }
14154
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014155 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14156 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14157 &pBSSSes);
14158 if ( NULL == pBSSSes )
14159 {
14160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014161 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014162 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014163 }
14164
Jeff Johnsone7245742012-09-05 17:12:55 -070014165 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014166 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014167 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14173
14174 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14175 {
14176 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14177 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14178 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14179 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14180 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14181 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14182 }
14183 else
14184 {
14185 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14186 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14187 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14188 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14189 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14190 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14191
14192 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14193 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14194 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14195 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14196 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14197 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14198 }
14199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014200 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14201
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 wpalMemoryCopy( pSendBuffer+usDataOffset,
14203 &wowlAddBcPtrnReq,
14204 sizeof(wowlAddBcPtrnReq));
14205
14206 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014208
14209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014212 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14213 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014214fail:
14215 // Release the message buffer so we don't leak
14216 wpalMemoryFree(pSendBuffer);
14217
14218failRequest:
14219 //WDA should have failure check to avoid the memory leak
14220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014221}/*WDI_ProcessWowlAddBcPtrnReq*/
14222
14223/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014224 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014226
14227 @param pWDICtx: pointer to the WLAN DAL context
14228 pEventData: pointer to the event information structure
14229
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 @see
14231 @return Result of the function call
14232*/
14233WDI_Status
14234WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014235(
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 WDI_ControlBlockType* pWDICtx,
14237 WDI_EventInfoType* pEventData
14238)
14239{
14240 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14241 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 wpt_uint16 usDataOffset = 0;
14244 wpt_uint16 usSendSize = 0;
14245 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014246 wpt_uint8 ucCurrentBSSSesIdx = 0;
14247 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14249
14250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014252 -------------------------------------------------------------------------*/
14253 if (( NULL == pEventData ) ||
14254 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14255 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14256 {
14257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014260 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 }
14262
14263 /*-----------------------------------------------------------------------
14264 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 sizeof(wowlDelBcPtrnReq),
14269 &pSendBuffer, &usDataOffset, &usSendSize))||
14270 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14271 {
14272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14273 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14274 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14275 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014276 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 }
14278
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014279 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14280 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14281 &pBSSSes);
14282 if ( NULL == pBSSSes )
14283 {
14284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014285 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014286 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014287 }
14288
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014291
14292 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14293
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 wpalMemoryCopy( pSendBuffer+usDataOffset,
14295 &wowlDelBcPtrnReq,
14296 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014297
14298 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014300
14301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014304 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14305 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014306
14307fail:
14308 // Release the message buffer so we don't leak
14309 wpalMemoryFree(pSendBuffer);
14310
14311failRequest:
14312 //WDA should have failure check to avoid the memory leak
14313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014314}/*WDI_ProcessWowlDelBcPtrnReq*/
14315
14316/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014319
14320 @param pWDICtx: pointer to the WLAN DAL context
14321 pEventData: pointer to the event information structure
14322
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 @see
14324 @return Result of the function call
14325*/
14326WDI_Status
14327WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014328(
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 WDI_ControlBlockType* pWDICtx,
14330 WDI_EventInfoType* pEventData
14331)
14332{
14333 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14334 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014336 wpt_uint16 usDataOffset = 0;
14337 wpt_uint16 usSendSize = 0;
14338 tHalWowlEnterParams wowlEnterReq;
14339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14340
14341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 -------------------------------------------------------------------------*/
14344 if (( NULL == pEventData ) ||
14345 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14346 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14347 {
14348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 }
14353
14354 /*-----------------------------------------------------------------------
14355 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 sizeof(wowlEnterReq),
14360 &pSendBuffer, &usDataOffset, &usSendSize))||
14361 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14362 {
14363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14364 "Unable to get send buffer in Wowl enter req %x %x %x",
14365 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 }
14369
Kumar Anandaca924e2013-07-22 14:35:34 -070014370 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14371
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14388
14389#ifdef WLAN_WAKEUP_EVENTS
14390 wowlEnterReq.ucWoWEAPIDRequestEnable =
14391 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14392
14393 wowlEnterReq.ucWoWEAPOL4WayEnable =
14394 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14395
14396 wowlEnterReq.ucWowNetScanOffloadMatch =
14397 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14398
14399 wowlEnterReq.ucWowGTKRekeyError =
14400 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14401
14402 wowlEnterReq.ucWoWBSSConnLoss =
14403 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14404#endif // WLAN_WAKEUP_EVENTS
14405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014406 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14407
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14409 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14410 sizeof(tSirMacAddr));
14411
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 wpalMemoryCopy( pSendBuffer+usDataOffset,
14413 &wowlEnterReq,
14414 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014415
14416 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014418
14419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14423 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014424}/*WDI_ProcessWowlEnterReq*/
14425
14426/**
14427 @brief Process Wowl exit Request function (called when Main FSM
14428 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014429
14430 @param pWDICtx: pointer to the WLAN DAL context
14431 pEventData: pointer to the event information structure
14432
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 @see
14434 @return Result of the function call
14435*/
14436WDI_Status
14437WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014438(
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 WDI_ControlBlockType* pWDICtx,
14440 WDI_EventInfoType* pEventData
14441)
14442{
14443 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014444 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 wpt_uint16 usDataOffset = 0;
14447 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014448 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14450
14451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 -------------------------------------------------------------------------*/
14454 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014455 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14457 {
14458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 }
14463
14464 /*-----------------------------------------------------------------------
14465 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014469 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014471 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 {
14473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14474 "Unable to get send buffer in Wowl Exit req %x %x",
14475 pEventData, wdiWowlExitCb);
14476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 }
14479
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014480 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14481
14482 wpalMemoryCopy( pSendBuffer+usDataOffset,
14483 &wowlExitparams,
14484 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14489 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014490}/*WDI_ProcessWowlExitReq*/
14491
14492/**
14493 @brief Process Configure Apps Cpu Wakeup State Request function
14494 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014495
14496 @param pWDICtx: pointer to the WLAN DAL context
14497 pEventData: pointer to the event information structure
14498
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 @see
14500 @return Result of the function call
14501*/
14502WDI_Status
14503WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014504(
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 WDI_ControlBlockType* pWDICtx,
14506 WDI_EventInfoType* pEventData
14507)
14508{
14509 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14510 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 wpt_uint16 usDataOffset = 0;
14513 wpt_uint16 usSendSize = 0;
14514 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14516
14517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 -------------------------------------------------------------------------*/
14520 if (( NULL == pEventData ) ||
14521 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14522 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14523 {
14524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 }
14529
14530 /*-----------------------------------------------------------------------
14531 Get message buffer
14532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 sizeof(halCfgAppsCpuWakeupStateReqParams),
14535 &pSendBuffer, &usDataOffset, &usSendSize))||
14536 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14537 {
14538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14539 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14540 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 }
14544
Jeff Johnsone7245742012-09-05 17:12:55 -070014545 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014546 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14547
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 wpalMemoryCopy( pSendBuffer+usDataOffset,
14549 &halCfgAppsCpuWakeupStateReqParams,
14550 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014551
14552 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014554
14555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014556 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14559 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14560 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014561}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14562
14563#ifdef WLAN_FEATURE_VOWIFI_11R
14564/**
14565 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14566 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014567
14568 @param pWDICtx: pointer to the WLAN DAL context
14569 pEventData: pointer to the event information structure
14570
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 @see
14572 @return Result of the function call
14573*/
14574WDI_Status
14575WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014576(
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 WDI_ControlBlockType* pWDICtx,
14578 WDI_EventInfoType* pEventData
14579)
14580{
14581 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14582 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 wpt_uint16 usDataOffset = 0;
14587 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 wpt_macAddr macBSSID;
14590 tAggrAddTsReq halAggrAddTsReq;
14591 int i;
14592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14593
14594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 -------------------------------------------------------------------------*/
14597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14598 ( NULL == pEventData->pCBfnc ))
14599 {
14600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 }
14605 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14606 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14607 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14608 /*-------------------------------------------------------------------------
14609 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 -------------------------------------------------------------------------*/
14612 wpalMutexAcquire(&pWDICtx->wptMutex);
14613
14614 /*------------------------------------------------------------------------
14615 Find the BSS for which the request is made and identify WDI session
14616 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14618 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014619 &macBSSID))
14620 {
14621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14622 "This station does not exist in the WDI Station Table %d");
14623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014625 }
14626
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14628 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14631 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14632 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014633
14634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 /*------------------------------------------------------------------------
14639 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014640 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 ------------------------------------------------------------------------*/
14642 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14643 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14645 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14646 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014647
Jeff Johnsone7245742012-09-05 17:12:55 -070014648 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 }
14652
14653 wpalMutexRelease(&pWDICtx->wptMutex);
14654 /*-----------------------------------------------------------------------
14655 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 sizeof(tAggrAddTsParams),
14660 &pSendBuffer, &usDataOffset, &usSendSize))||
14661 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14662 {
14663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14664 "Unable to get send buffer in set bss key req %x %x %x",
14665 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14674
14675 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14676 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14683 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14686 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14689 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14692 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14695 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14698 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14701 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14704 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014707 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014709
14710
14711 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014712 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14741 }
14742
Jeff Johnsone7245742012-09-05 17:12:55 -070014743 wpalMemoryCopy( pSendBuffer+usDataOffset,
14744 &halAggrAddTsReq,
14745 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014746
14747 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014749
14750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014756}/*WDI_ProcessAggrAddTSpecReq*/
14757#endif /* WLAN_FEATURE_VOWIFI_11R */
14758
14759/**
14760 @brief Process Shutdown Request function (called when Main FSM
14761 allows it)
14762
14763 @param pWDICtx: pointer to the WLAN DAL context
14764 pEventData: pointer to the event information structure
14765
14766 @see
14767 @return Result of the function call
14768*/
14769WDI_Status
14770WDI_ProcessShutdownReq
14771(
14772 WDI_ControlBlockType* pWDICtx,
14773 WDI_EventInfoType* pEventData
14774 )
14775{
14776 wpt_status wptStatus;
14777
14778
14779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14780
14781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 -------------------------------------------------------------------------*/
14784 if ( NULL == pEventData )
14785 {
14786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014788 WDI_ASSERT(0);
14789 return WDI_STATUS_E_FAILURE;
14790 }
14791
14792 wpalMutexAcquire(&pWDICtx->wptMutex);
14793
14794
14795 gWDIInitialized = eWLAN_PAL_FALSE;
14796 /*! TO DO: stop the data services */
14797 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14798 {
14799 /*Stop the STA Table !UT- check this logic again
14800 It is safer to do it here than on the response - because a stop is imminent*/
14801 WDI_STATableStop(pWDICtx);
14802
14803 /* Stop Transport Driver, DXE */
14804 WDTS_Stop(pWDICtx);
14805 }
14806
14807 /*Clear all pending request*/
14808 WDI_ClearPendingRequests(pWDICtx);
14809 /* Close Data transport*/
14810 /* FTM mode does not open Data Path */
14811 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14812 {
14813 WDTS_Close(pWDICtx);
14814 }
14815 /*Close the STA Table !UT- check this logic again*/
14816 WDI_STATableClose(pWDICtx);
14817 /*close the PAL */
14818 wptStatus = wpalClose(pWDICtx->pPALContext);
14819 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14820 {
14821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14822 "Failed to wpal Close %d", wptStatus);
14823 WDI_ASSERT(0);
14824 }
14825
14826 /*Transition back to init state*/
14827 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14828
14829 wpalMutexRelease(&pWDICtx->wptMutex);
14830
14831 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014833
14834
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014836}/*WDI_ProcessShutdownReq*/
14837
14838/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014840========================================================================*/
14841
14842/**
14843 @brief Process Start Response function (called when a response
14844 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014845
14846 @param pWDICtx: pointer to the WLAN DAL context
14847 pEventData: pointer to the event information structure
14848
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 @see
14850 @return Result of the function call
14851*/
14852WDI_Status
14853WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014854(
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 WDI_ControlBlockType* pWDICtx,
14856 WDI_EventInfoType* pEventData
14857)
14858{
14859 WDI_StartRspParamsType wdiRspParams;
14860 WDI_StartRspCb wdiStartRspCb = NULL;
14861
14862 tHalMacStartRspParams* startRspParams;
14863
14864#ifndef HAL_SELF_STA_PER_BSS
14865 WDI_AddStaParams wdiAddSTAParam = {0};
14866#endif
14867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14868
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -------------------------------------------------------------------------*/
14873 if (( NULL == pEventData ) ||
14874 ( NULL == pEventData->pEventData) ||
14875 ( NULL == wdiStartRspCb ))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 /*-------------------------------------------------------------------------
14884 Extract response and send it to UMAC
14885 -------------------------------------------------------------------------*/
14886 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14887 {
14888 // not enough data was received
14889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14890 "Invalid response length in Start Resp Expect %x Rcvd %x",
14891 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 }
14895
14896 /*-------------------------------------------------------------------------
14897 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 -------------------------------------------------------------------------*/
14900 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14901
14902 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14903 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14904 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14905 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14906 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14907 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14908 wdiRspParams.wlanReportedVersion.major =
14909 startRspParams->wcnssWlanVersion.major;
14910 wdiRspParams.wlanReportedVersion.minor =
14911 startRspParams->wcnssWlanVersion.minor;
14912 wdiRspParams.wlanReportedVersion.version =
14913 startRspParams->wcnssWlanVersion.version;
14914 wdiRspParams.wlanReportedVersion.revision =
14915 startRspParams->wcnssWlanVersion.revision;
14916 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14917 startRspParams->wcnssCrmVersionString,
14918 sizeof(wdiRspParams.wcnssSoftwareVersion));
14919 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14920 startRspParams->wcnssWlanVersionString,
14921 sizeof(wdiRspParams.wcnssHardwareVersion));
14922 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14923
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014924 /*Save the HAL Version*/
14925 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14926
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 wpalMutexAcquire(&pWDICtx->wptMutex);
14928 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14929 {
14930 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14931
14932 /*Cache the start response for further use*/
14933 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 sizeof(pWDICtx->wdiCachedStartRspParams));
14936
14937 }
14938 else
14939 {
14940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14941 "Failed to start device with status %s(%d)",
14942 WDI_getHALStatusMsgString(startRspParams->status),
14943 startRspParams->status);
14944
14945 /*Set the expected state transition to stopped - because the start has
14946 failed*/
14947 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14948
14949 wpalMutexRelease(&pWDICtx->wptMutex);
14950
14951 /*Notify UMAC*/
14952 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014953
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14955
14956 /*Although the response is an error - it was processed by our function
14957 so as far as the caller is concerned this is a succesful reponse processing*/
14958 return WDI_STATUS_SUCCESS;
14959 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014960
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 wpalMutexRelease(&pWDICtx->wptMutex);
14962
14963 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14964 {
14965 /* FTM mode does not need to execute below */
14966 /* Notify UMAC */
14967 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14968 return WDI_STATUS_SUCCESS;
14969 }
14970
14971 /* START the Data transport */
14972 WDTS_startTransport(pWDICtx);
14973
14974 /*Start the STA Table !- check this logic again*/
14975 WDI_STATableStart(pWDICtx);
14976
14977#ifndef HAL_SELF_STA_PER_BSS
14978 /* Store the Self STA Index */
14979 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14980
14981 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14982 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14983 WDI_MAC_ADDR_LEN);
14984
14985 /* At this point add the self-STA */
14986
14987 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14988 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14989 /*! TO DO: wdiAddSTAParam.dpuSig */
14990 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14991 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14992 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14993
14994 //all DPU indices are the same for self STA
14995 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14996 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014997 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14999 WDI_MAC_ADDR_LEN);
15000 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15001 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15002
15003 /* Note: Since we don't get an explicit config STA request for self STA, we
15004 add the self STA upon receiving the Start response message. But the
15005 self STA entry in the table is deleted when WDI gets an explicit delete STA
15006 request */
15007 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15008#endif
15009
15010 /*Notify UMAC*/
15011 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15012
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015014}/*WDI_ProcessStartRsp*/
15015
15016
15017/**
15018 @brief Process Stop Response function (called when a response
15019 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015020
15021 @param pWDICtx: pointer to the WLAN DAL context
15022 pEventData: pointer to the event information structure
15023
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 @see
15025 @return Result of the function call
15026*/
15027WDI_Status
15028WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015029(
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 WDI_ControlBlockType* pWDICtx,
15031 WDI_EventInfoType* pEventData
15032)
15033{
15034 WDI_Status wdiStatus;
15035 WDI_StopRspCb wdiStopRspCb = NULL;
15036
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15039
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 -------------------------------------------------------------------------*/
15044 if (( NULL == pEventData ) ||
15045 ( NULL == pEventData->pEventData) ||
15046 ( NULL == wdiStopRspCb ))
15047 {
15048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 }
15053
15054 /*-------------------------------------------------------------------------
15055 Extract response and send it to UMAC
15056 -------------------------------------------------------------------------*/
15057 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15058 {
15059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15060 "Invalid response length in Stop Resp %x %x",
15061 pEventData->uEventDataSize);
15062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 }
15065
15066 /*-------------------------------------------------------------------------
15067 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15071 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 sizeof(halMacStopRspMsg.stopRspParams));
15073
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015075
15076 wpalMutexAcquire(&pWDICtx->wptMutex);
15077
15078 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 --------------------------------------------------------------------------*/
15081 if ( WDI_STATUS_SUCCESS != wdiStatus )
15082 {
15083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15084 "Failed to stop the device with status %s (%d)",
15085 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15086 halMacStopRspMsg.stopRspParams.status);
15087
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15089
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015093
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15095
15096 /*Transition now as WDI may get preempted imediately after it sends
15097 up the Stop Response and it will not get to process the state transition
15098 from Main Rsp function*/
15099 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15100 wpalMutexRelease(&pWDICtx->wptMutex);
15101
15102 /*! TO DO: - STOP the Data transport */
15103
15104 /*Notify UMAC*/
15105 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15106
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015108}/*WDI_ProcessStopRsp*/
15109
15110/**
15111 @brief Process Close Rsp function (called when a response
15112 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015113
15114 @param pWDICtx: pointer to the WLAN DAL context
15115 pEventData: pointer to the event information structure
15116
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 @see
15118 @return Result of the function call
15119*/
15120WDI_Status
15121WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015122(
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 WDI_ControlBlockType* pWDICtx,
15124 WDI_EventInfoType* pEventData
15125)
15126{
15127 /*There is no close response comming from HAL - function just kept for
15128 simmetry */
15129 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015131}/*WDI_ProcessCloseRsp*/
15132
15133
15134/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015136============================================================================*/
15137
15138/**
15139 @brief Process Init Scan Rsp function (called when a response
15140 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015141
15142 @param pWDICtx: pointer to the WLAN DAL context
15143 pEventData: pointer to the event information structure
15144
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 @see
15146 @return Result of the function call
15147*/
15148WDI_Status
15149WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015150(
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 WDI_ControlBlockType* pWDICtx,
15152 WDI_EventInfoType* pEventData
15153)
15154{
15155 WDI_Status wdiStatus;
15156 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015157 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015158 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15160
15161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 -------------------------------------------------------------------------*/
15164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15165 ( NULL == pEventData->pEventData))
15166 {
15167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 }
15172
15173 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15174 if( NULL == wdiInitScanRspCb)
15175 {
15176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015177 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 }
15181
15182 /*-------------------------------------------------------------------------
15183 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015184 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15187 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 sizeof(halInitScanRspMsg.initScanRspParams));
15189
Jeff Johnsone7245742012-09-05 17:12:55 -070015190 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015191
15192 if ( pWDICtx->bInBmps )
15193 {
15194 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015195 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15196 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15198 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15199 WDI_ASSERT(0);
15200 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 }
15202
15203 /*Notify UMAC*/
15204 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15205
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015207}/*WDI_ProcessInitScanRsp*/
15208
15209
15210/**
15211 @brief Process Start Scan Rsp function (called when a response
15212 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015213
15214 @param pWDICtx: pointer to the WLAN DAL context
15215 pEventData: pointer to the event information structure
15216
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 @see
15218 @return Result of the function call
15219*/
15220WDI_Status
15221WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015222(
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 WDI_ControlBlockType* pWDICtx,
15224 WDI_EventInfoType* pEventData
15225)
15226{
15227 WDI_StartScanRspParamsType wdiStartScanParams;
15228 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015229
15230 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15232
15233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 -------------------------------------------------------------------------*/
15236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15237 ( NULL == pEventData->pEventData))
15238 {
15239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 }
15244
15245 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15246 if( NULL == wdiStartScanRspCb)
15247 {
15248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015249 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 }
15253
15254 /*-------------------------------------------------------------------------
15255 Extract response and send it to UMAC
15256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15258 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 sizeof(halStartScanRspMsg.startScanRspParams));
15260
15261 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15262 halStartScanRspMsg.startScanRspParams.status);
15263#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 halStartScanRspMsg.startScanRspParams.startTSF,
15268 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015269#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015270
15271 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15272 {
15273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15274 "Start scan failed with status %s (%d)",
15275 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15276 halStartScanRspMsg.startScanRspParams.status);
15277 /* send the status to UMAC, don't return from here*/
15278 }
15279
15280 /*Notify UMAC*/
15281 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15282
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015284
15285}/*WDI_ProcessStartScanRsp*/
15286
15287
15288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015291
15292 @param pWDICtx: pointer to the WLAN DAL context
15293 pEventData: pointer to the event information structure
15294
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 @see
15296 @return Result of the function call
15297*/
15298WDI_Status
15299WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015300(
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 WDI_ControlBlockType* pWDICtx,
15302 WDI_EventInfoType* pEventData
15303)
15304{
15305 WDI_Status wdiStatus;
15306 tHalEndScanRspMsg halEndScanRspMsg;
15307 WDI_EndScanRspCb wdiEndScanRspCb;
15308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15309
15310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 -------------------------------------------------------------------------*/
15313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15314 ( NULL == pEventData->pEventData))
15315 {
15316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 }
15321
15322 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15323
15324 /*-------------------------------------------------------------------------
15325 Extract response and send it to UMAC
15326 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15328 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 sizeof(halEndScanRspMsg.endScanRspParams));
15330
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015332
15333 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15334 {
15335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15336 "End Scan failed with status %s (%d )",
15337 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15338 halEndScanRspMsg.endScanRspParams.status);
15339 /* send the status to UMAC, don't return from here*/
15340 }
15341
15342 /*Notify UMAC*/
15343 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15344
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015346}/*WDI_ProcessEndScanRsp*/
15347
15348
15349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015352
15353 @param pWDICtx: pointer to the WLAN DAL context
15354 pEventData: pointer to the event information structure
15355
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 @see
15357 @return Result of the function call
15358*/
15359WDI_Status
15360WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015361(
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 WDI_ControlBlockType* pWDICtx,
15363 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015364)
Jeff Johnson295189b2012-06-20 16:38:30 -070015365{
15366 WDI_Status wdiStatus;
15367 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015368
15369 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15371
15372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 -------------------------------------------------------------------------*/
15375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15376 ( NULL == pEventData->pEventData))
15377 {
15378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 }
15383
15384 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15385
15386 /*-------------------------------------------------------------------------
15387 Extract response and send it to UMAC
15388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15390 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15392
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015394
15395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 halFinishScanRspMsg.finishScanRspParams.status);
15398
15399 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15400 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15401 {
15402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15403 "Finish Scan failed with status %s (%d)",
15404 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15405 halFinishScanRspMsg.finishScanRspParams.status);
15406 /* send the status to UMAC, don't return from here*/
15407 }
15408
15409 /*Notify UMAC*/
15410 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15411
Jeff Johnsone7245742012-09-05 17:12:55 -070015412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015413}/*WDI_ProcessFinishScanRsp*/
15414
15415/**
15416 @brief Process Join Response function (called when a response
15417 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015418
15419 @param pWDICtx: pointer to the WLAN DAL context
15420 pEventData: pointer to the event information structure
15421
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 @see
15423 @return Result of the function call
15424*/
15425WDI_Status
15426WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015427(
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 WDI_ControlBlockType* pWDICtx,
15429 WDI_EventInfoType* pEventData
15430)
15431{
15432 WDI_Status wdiStatus;
15433 WDI_JoinRspCb wdiJoinRspCb;
15434 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015435
15436 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15438
15439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 -------------------------------------------------------------------------*/
15442 if (( NULL == pWDICtx ) ||
15443 ( NULL == pWDICtx->pfncRspCB ) ||
15444 ( NULL == pEventData ) ||
15445 ( NULL == pEventData->pEventData))
15446 {
15447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 }
15452
15453 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15454
15455 /*-------------------------------------------------------------------------
15456 Extract response and send it to UMAC
15457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15459 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 sizeof(halJoinRspMsg.joinRspParams));
15461
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015463
15464 wpalMutexAcquire(&pWDICtx->wptMutex);
15465
15466 /*-----------------------------------------------------------------------
15467 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015468 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15472 {
15473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15475 "association no longer in progress %d - mysterious HAL response",
15476 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015477
Jeff Johnsone7245742012-09-05 17:12:55 -070015478 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 }
15482
15483 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15484
15485 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 -----------------------------------------------------------------------*/
15488 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15489 {
15490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15491 "Join only allowed in Joining state - failure state is %d "
15492 "strange HAL response", pBSSSes->wdiAssocState);
15493
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15495
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 }
15499
15500
15501 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 -----------------------------------------------------------------------*/
15504 if ( WDI_STATUS_SUCCESS != wdiStatus )
15505 {
15506 /*Association was failed by HAL - remove session*/
15507 WDI_DeleteSession(pWDICtx, pBSSSes);
15508
15509 /*Association no longer in progress */
15510 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15511
15512 /*Association no longer in progress - prepare pending assoc for processing*/
15513 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015514
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 }
15516 else
15517 {
15518 /*Transition to state Joining - this may be redundant as we are supposed
15519 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 }
15522
15523 wpalMutexRelease(&pWDICtx->wptMutex);
15524
15525 /*Notify UMAC*/
15526 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15527
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015529}/*WDI_ProcessJoinRsp*/
15530
15531
15532/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015533 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015535
15536 @param pWDICtx: pointer to the WLAN DAL context
15537 pEventData: pointer to the event information structure
15538
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 @see
15540 @return Result of the function call
15541*/
15542WDI_Status
15543WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015544(
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 WDI_ControlBlockType* pWDICtx,
15546 WDI_EventInfoType* pEventData
15547)
15548{
15549 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15550 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015551 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 WDI_BSSSessionType* pBSSSes = NULL;
15553
Jeff Johnsone7245742012-09-05 17:12:55 -070015554 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015555 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15556 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015557
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15559
15560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 -------------------------------------------------------------------------*/
15563 if (( NULL == pEventData ) ||
15564 ( NULL == pEventData->pEventData))
15565 {
15566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 }
15571
15572 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15573
15574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15578 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 sizeof(halConfigBssRspMsg.configBssRspParams));
15580
15581 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15582 halConfigBssRspMsg.configBssRspParams.status);
15583 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15584 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015585 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15587 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015588
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015590
15591 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015593
15594 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015598
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15602 #endif
15603 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15604 halConfigBssRspMsg.configBssRspParams.staMac,
15605 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015606
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 wpalMutexAcquire(&pWDICtx->wptMutex);
15608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15612 wdiConfigBSSParams.macBSSID,
15613 &pBSSSes);
15614
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 /*-----------------------------------------------------------------------
15616 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 -----------------------------------------------------------------------*/
15619 if ( NULL == pBSSSes )
15620 {
15621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15622 "Association sequence for this BSS does not yet exist "
15623 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015624
15625 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015630
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 /*Save data for this BSS*/
15632 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15633 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15644 pBSSSes->bcastStaIdx =
15645 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015646
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015648
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 /*-------------------------------------------------------------------------
15650 Add Peer STA
15651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15654 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015655
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 wdiAddSTAParam.ucHTCapable =
15660 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15661 wdiAddSTAParam.ucStaType =
15662 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15663
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15666 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015668
15669 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15670 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15671 WDI_MAC_ADDR_LEN);
15672
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015686
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15688 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015689
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15691 /*-------------------------------------------------------------------------
15692 Add Broadcast STA only in AP mode
15693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070015695 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 {
15697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15698 "Add BCAST STA to table for index: %d",
15699 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015700
15701 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015703
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15705 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15706 }
15707 wpalMutexRelease(&pWDICtx->wptMutex);
15708 }
15709 else
15710 {
15711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15712 "Config BSS RSP failed with status : %s(%d)",
15713 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015714 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 halConfigBssRspMsg.configBssRspParams.status);
15716
Jeff Johnsone7245742012-09-05 17:12:55 -070015717
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 /*Association was failed by HAL - remove session*/
15719 WDI_DeleteSession(pWDICtx, pBSSSes);
15720
15721 /*Association no longer in progress */
15722 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15723
15724 /*Association no longer in progress - prepare pending assoc for processing*/
15725 WDI_DequeueAssocRequest(pWDICtx);
15726
15727 }
15728
15729 /*Notify UMAC*/
15730 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15731
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015733}/*WDI_ProcessConfigBSSRsp*/
15734
15735
15736/**
15737 @brief Process Del BSS Response function (called when a response
15738 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015739
15740 @param pWDICtx: pointer to the WLAN DAL context
15741 pEventData: pointer to the event information structure
15742
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 @see
15744 @return Result of the function call
15745*/
15746WDI_Status
15747WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015748(
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 WDI_ControlBlockType* pWDICtx,
15750 WDI_EventInfoType* pEventData
15751)
15752{
15753 WDI_DelBSSRspParamsType wdiDelBSSParams;
15754 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 WDI_BSSSessionType* pBSSSes = NULL;
15757
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15760
15761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015763 -------------------------------------------------------------------------*/
15764 if (( NULL == pEventData ) ||
15765 ( NULL == pEventData->pEventData))
15766 {
15767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 }
15772
15773 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15774
15775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15779 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 sizeof(halDelBssRspMsg.deleteBssRspParams));
15781
15782
15783 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015785
15786 wpalMutexAcquire(&pWDICtx->wptMutex);
15787
15788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015789 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15792 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15793 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015794
15795 /*-----------------------------------------------------------------------
15796 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 -----------------------------------------------------------------------*/
15799 if ( NULL == pBSSSes )
15800 {
15801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15802 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015803 "association no longer in progress - mysterious HAL response");
15804
15805 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15806
15807 wpalMutexRelease(&pWDICtx->wptMutex);
15808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015810
15811 /*Extract BSSID for the response to UMAC*/
15812 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15813 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15814
15815 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15816
15817 /*-----------------------------------------------------------------------
15818 The current session will be deleted
15819 -----------------------------------------------------------------------*/
15820 WDI_DeleteSession(pWDICtx, pBSSSes);
15821
15822
15823 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15824 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015826 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015827 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015828
15829 /* Delete the STA's in this BSS */
15830 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15831
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 wpalMutexRelease(&pWDICtx->wptMutex);
15833
15834 /*Notify UMAC*/
15835 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15836
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015838}/*WDI_ProcessDelBSSRsp*/
15839
15840/**
15841 @brief Process Post Assoc Rsp function (called when a response
15842 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015843
15844 @param pWDICtx: pointer to the WLAN DAL context
15845 pEventData: pointer to the event information structure
15846
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 @see
15848 @return Result of the function call
15849*/
15850WDI_Status
15851WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015852(
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 WDI_ControlBlockType* pWDICtx,
15854 WDI_EventInfoType* pEventData
15855)
15856{
15857 WDI_PostAssocRspParamsType wdiPostAssocParams;
15858 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15863
15864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 -------------------------------------------------------------------------*/
15867 if (( NULL == pEventData ) ||
15868 ( NULL == pEventData->pEventData))
15869 {
15870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 }
15875
15876 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15877
15878 /*-------------------------------------------------------------------------
15879 Extract response and send it to UMAC
15880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15882 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 sizeof(halPostAssocRspMsg.postAssocRspParams));
15884
15885 /*Extract the Post Assoc STA Params */
15886
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15893
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 wdiPostAssocParams.wdiStatus =
15895 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015896
15897 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15898 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015899 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15900 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 WDI_MAC_ADDR_LEN);
15902
15903 /* Extract Post Assoc BSS Params */
15904
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15906 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15907 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015908
15909 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15910 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15913 .macSTA, WDI_MAC_ADDR_LEN);
15914
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15917
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15920
15921 wdiPostAssocParams.bssParams.ucBSSIdx =
15922 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15923
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15926
15927 wpalMutexAcquire(&pWDICtx->wptMutex);
15928
15929 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015934 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015935
15936 /*-----------------------------------------------------------------------
15937 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 -----------------------------------------------------------------------*/
15940 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15943 {
15944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15945 "Association sequence for this BSS does not yet exist or "
15946 "association no longer in progress - mysterious HAL response");
15947
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15949
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 }
15953
15954 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 -----------------------------------------------------------------------*/
15957 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15958 {
15959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15960 "Post Assoc not allowed before JOIN - failing request "
15961 "strange HAL response");
15962
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15964
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 }
15968
15969 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 -----------------------------------------------------------------------*/
15972 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15973 {
15974 /*Association was failed by HAL - remove session*/
15975 WDI_DeleteSession(pWDICtx, pBSSSes);
15976 }
15977 else
15978 {
15979 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015981
15982 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015989 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15991
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15994 }
15995
15996 /*Association no longer in progress */
15997 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15998
15999 /*Association no longer in progress - prepare pending assoc for processing*/
16000 WDI_DequeueAssocRequest(pWDICtx);
16001
16002 wpalMutexRelease(&pWDICtx->wptMutex);
16003
16004 /*Notify UMAC*/
16005 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16006
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016008}/*WDI_ProcessPostAssocRsp*/
16009
16010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016011 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016013
16014 @param pWDICtx: pointer to the WLAN DAL context
16015 pEventData: pointer to the event information structure
16016
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 @see
16018 @return Result of the function call
16019*/
16020WDI_Status
16021WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016022(
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 WDI_ControlBlockType* pWDICtx,
16024 WDI_EventInfoType* pEventData
16025)
16026{
16027 WDI_DelSTARspParamsType wdiDelSTARsp;
16028 WDI_DelSTARspCb wdiDelSTARspCb;
16029 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16032
16033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 -------------------------------------------------------------------------*/
16036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16037 ( NULL == pEventData->pEventData))
16038 {
16039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 }
16044
16045 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16046
16047 /*-------------------------------------------------------------------------
16048 Extract response and send it to UMAC
16049 -------------------------------------------------------------------------*/
16050 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016051 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016052 sizeof(halDelStaRspMsg.delStaRspParams));
16053
16054 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016055 wdiDelSTARsp.wdiStatus =
16056 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016057
16058 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16059
16060 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16061 if(staType == WDI_STA_ENTRY_SELF)
16062 {
16063 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16064
16065 /* At this point add the self-STA */
16066
16067 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16068 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16069 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16070
16071#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16072#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16073
16074 //all DPU indices are the same for self STA
16075 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16076 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16077 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16078 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16079 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16080 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016081
16082 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 }
16084 else
16085 {
16086 //Delete the station in the table
16087 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16088 }
16089
16090 /*Notify UMAC*/
16091 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16092
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016094}/*WDI_ProcessDelSTARsp*/
16095
16096
16097/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016099==========================================================================*/
16100
16101/**
16102 @brief Process Set BSS Key Rsp function (called when a response
16103 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016104
16105 @param pWDICtx: pointer to the WLAN DAL context
16106 pEventData: pointer to the event information structure
16107
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 @see
16109 @return Result of the function call
16110*/
16111WDI_Status
16112WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016113(
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 WDI_ControlBlockType* pWDICtx,
16115 WDI_EventInfoType* pEventData
16116)
16117{
16118 WDI_Status wdiStatus;
16119 eHalStatus halStatus;
16120 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16122
16123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 -------------------------------------------------------------------------*/
16126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16127 ( NULL == pEventData->pEventData))
16128 {
16129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 }
16134
16135 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16136
16137 /*-------------------------------------------------------------------------
16138 Extract response and send it to UMAC
16139 -------------------------------------------------------------------------*/
16140 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016142
16143 if ( eHAL_STATUS_SUCCESS != halStatus )
16144 {
16145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16146 "Set BSS Key failed with status %s (%d)",
16147 WDI_getHALStatusMsgString(halStatus),
16148 halStatus);
16149 /* send the status to UMAC, don't return from here*/
16150 }
16151
16152 /*Notify UMAC*/
16153 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16154
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016156}/*WDI_ProcessSetBssKeyRsp*/
16157
16158/**
16159 @brief Process Remove BSS Key Rsp function (called when a response
16160 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016161
16162 @param pWDICtx: pointer to the WLAN DAL context
16163 pEventData: pointer to the event information structure
16164
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 @see
16166 @return Result of the function call
16167*/
16168WDI_Status
16169WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016170(
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 WDI_ControlBlockType* pWDICtx,
16172 WDI_EventInfoType* pEventData
16173)
16174{
16175 WDI_Status wdiStatus;
16176 eHalStatus halStatus;
16177 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16179
16180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 -------------------------------------------------------------------------*/
16183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16184 ( NULL == pEventData->pEventData))
16185 {
16186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 }
16191
16192 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16193
16194 /*-------------------------------------------------------------------------
16195 Extract response and send it to UMAC
16196 -------------------------------------------------------------------------*/
16197 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016199
16200 if ( eHAL_STATUS_SUCCESS != halStatus )
16201 {
16202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16203 "Remove BSS Key failed with status %s (%d )",
16204 WDI_getHALStatusMsgString(halStatus),
16205 halStatus);
16206 /* send the status to UMAC, don't return from here*/
16207 }
16208
16209 /*Notify UMAC*/
16210 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16211
Jeff Johnsone7245742012-09-05 17:12:55 -070016212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016213}/*WDI_ProcessSetBssKeyRsp*/
16214
16215
16216/**
16217 @brief Process Set STA Key Rsp function (called when a response
16218 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016219
16220 @param pWDICtx: pointer to the WLAN DAL context
16221 pEventData: pointer to the event information structure
16222
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 @see
16224 @return Result of the function call
16225*/
16226WDI_Status
16227WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016228(
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 WDI_ControlBlockType* pWDICtx,
16230 WDI_EventInfoType* pEventData
16231)
16232{
16233 WDI_Status wdiStatus;
16234 eHalStatus halStatus;
16235 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16237
16238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 -------------------------------------------------------------------------*/
16241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16242 ( NULL == pEventData->pEventData))
16243 {
16244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 }
16249
16250 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16251
16252 /*-------------------------------------------------------------------------
16253 Extract response and send it to UMAC
16254 -------------------------------------------------------------------------*/
16255 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016257
16258 if ( eHAL_STATUS_SUCCESS != halStatus )
16259 {
16260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16261 "Set STA Key failed with status %s (%d)",
16262 WDI_getHALStatusMsgString(halStatus),
16263 halStatus);
16264 /* send the status to UMAC, don't return from here*/
16265 }
16266
16267 /*Notify UMAC*/
16268 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16269
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016271}/*WDI_ProcessSetSTAKeyRsp*/
16272
16273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016276
16277 @param pWDICtx: pointer to the WLAN DAL context
16278 pEventData: pointer to the event information structure
16279
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 @see
16281 @return Result of the function call
16282*/
16283WDI_Status
16284WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016285(
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 WDI_ControlBlockType* pWDICtx,
16287 WDI_EventInfoType* pEventData
16288)
16289{
16290 WDI_Status wdiStatus;
16291 eHalStatus halStatus;
16292 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16294
16295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 -------------------------------------------------------------------------*/
16298 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16299 ( NULL == pEventData->pEventData))
16300 {
16301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 }
16306
16307 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16308
16309 /*-------------------------------------------------------------------------
16310 Extract response and send it to UMAC
16311 -------------------------------------------------------------------------*/
16312 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016314
16315 if ( eHAL_STATUS_SUCCESS != halStatus )
16316 {
16317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16318 "Remove STA Key failed with status %s (%d)",
16319 WDI_getHALStatusMsgString(halStatus),
16320 halStatus);
16321 /* send the status to UMAC, don't return from here*/
16322 }
16323
16324 /*Notify UMAC*/
16325 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16326
Jeff Johnsone7245742012-09-05 17:12:55 -070016327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016328}/*WDI_ProcessRemoveStaKeyRsp*/
16329
16330/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016331 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016333
16334 @param pWDICtx: pointer to the WLAN DAL context
16335 pEventData: pointer to the event information structure
16336
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 @see
16338 @return Result of the function call
16339*/
16340WDI_Status
16341WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016342(
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 WDI_ControlBlockType* pWDICtx,
16344 WDI_EventInfoType* pEventData
16345)
16346{
16347 WDI_Status wdiStatus;
16348 eHalStatus halStatus;
16349 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16351
16352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 -------------------------------------------------------------------------*/
16355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16356 ( NULL == pEventData->pEventData))
16357 {
16358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 }
16363
16364 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16365
16366 /*-------------------------------------------------------------------------
16367 Extract response and send it to UMAC
16368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016369 wpalMemoryCopy( &halStatus,
16370 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 sizeof(halStatus));
16372
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016374
16375 if ( eHAL_STATUS_SUCCESS != halStatus )
16376 {
16377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16378 "Set STA Key failed with status %s (%d)",
16379 WDI_getHALStatusMsgString(halStatus),
16380 halStatus);
16381 /* send the status to UMAC, don't return from here*/
16382 }
16383
16384 /*Notify UMAC*/
16385 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16386
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016388}/*WDI_ProcessSetSTABcastKeyRsp*/
16389
16390/**
16391 @brief Process Remove STA Bcast Key Rsp function (called when a
16392 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016393
16394 @param pWDICtx: pointer to the WLAN DAL context
16395 pEventData: pointer to the event information structure
16396
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 @see
16398 @return Result of the function call
16399*/
16400WDI_Status
16401WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016402(
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 WDI_ControlBlockType* pWDICtx,
16404 WDI_EventInfoType* pEventData
16405)
16406{
16407 WDI_Status wdiStatus;
16408 eHalStatus halStatus;
16409 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16411
16412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 -------------------------------------------------------------------------*/
16415 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16416 ( NULL == pEventData->pEventData))
16417 {
16418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 }
16423
16424 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16425
16426 /*-------------------------------------------------------------------------
16427 Extract response and send it to UMAC
16428 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 wpalMemoryCopy( &halStatus,
16430 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 sizeof(halStatus));
16432
Jeff Johnsone7245742012-09-05 17:12:55 -070016433 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016434
16435 if ( eHAL_STATUS_SUCCESS != halStatus )
16436 {
16437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16438 "Remove STA Key failed with status %s (%d)",
16439 WDI_getHALStatusMsgString(halStatus),
16440 halStatus);
16441 /* send the status to UMAC, don't return from here*/
16442 }
16443
16444 /*Notify UMAC*/
16445 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16446
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016448}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16449
16450
16451/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016452 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016453==========================================================================*/
16454
16455/**
16456 @brief Process Add TSpec Rsp function (called when a response
16457 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016458
16459 @param pWDICtx: pointer to the WLAN DAL context
16460 pEventData: pointer to the event information structure
16461
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 @see
16463 @return Result of the function call
16464*/
16465WDI_Status
16466WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016467(
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 WDI_ControlBlockType* pWDICtx,
16469 WDI_EventInfoType* pEventData
16470)
16471{
16472 WDI_Status wdiStatus;
16473 eHalStatus halStatus;
16474 WDI_AddTsRspCb wdiAddTsRspCb;
16475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16476
16477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 -------------------------------------------------------------------------*/
16480 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16481 ( NULL == pEventData->pEventData))
16482 {
16483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 }
16488
16489 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16490
16491 /*-------------------------------------------------------------------------
16492 Extract response and send it to UMAC
16493 -------------------------------------------------------------------------*/
16494 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016495 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016496
16497 /*Notify UMAC*/
16498 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16499
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016501}/*WDI_ProcessAddTSpecRsp*/
16502
16503
16504/**
16505 @brief Process Del TSpec Rsp function (called when a response
16506 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016507
16508 @param pWDICtx: pointer to the WLAN DAL context
16509 pEventData: pointer to the event information structure
16510
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 @see
16512 @return Result of the function call
16513*/
16514WDI_Status
16515WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016516(
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 WDI_ControlBlockType* pWDICtx,
16518 WDI_EventInfoType* pEventData
16519)
16520{
16521 WDI_Status wdiStatus;
16522 eHalStatus halStatus;
16523 WDI_DelTsRspCb wdiDelTsRspCb;
16524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16525
16526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 -------------------------------------------------------------------------*/
16529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16530 ( NULL == pEventData->pEventData))
16531 {
16532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 }
16537
16538 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16539
16540 /*-------------------------------------------------------------------------
16541 Extract response and send it to UMAC
16542 -------------------------------------------------------------------------*/
16543 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016545
16546 /*Notify UMAC*/
16547 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16548
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016550}/*WDI_ProcessDelTSpecRsp*/
16551
16552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016555
16556 @param pWDICtx: pointer to the WLAN DAL context
16557 pEventData: pointer to the event information structure
16558
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 @see
16560 @return Result of the function call
16561*/
16562WDI_Status
16563WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016564(
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 WDI_ControlBlockType* pWDICtx,
16566 WDI_EventInfoType* pEventData
16567)
16568{
16569 WDI_Status wdiStatus;
16570 eHalStatus halStatus;
16571 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16573
16574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 -------------------------------------------------------------------------*/
16577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16578 ( NULL == pEventData->pEventData))
16579 {
16580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 }
16585
16586 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16587
16588 /*-------------------------------------------------------------------------
16589 Extract response and send it to UMAC
16590 -------------------------------------------------------------------------*/
16591 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016593
16594 /*Notify UMAC*/
16595 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16596
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016598}/*WDI_ProcessUpdateEDCAParamsRsp*/
16599
16600
16601/**
16602 @brief Process Add BA Rsp function (called when a response
16603 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016604
16605 @param pWDICtx: pointer to the WLAN DAL context
16606 pEventData: pointer to the event information structure
16607
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 @see
16609 @return Result of the function call
16610*/
16611WDI_Status
16612WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016613(
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 WDI_ControlBlockType* pWDICtx,
16615 WDI_EventInfoType* pEventData
16616)
16617{
16618 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16619
16620 tAddBASessionRspParams halBASessionRsp;
16621 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16622
Jeff Johnsone7245742012-09-05 17:12:55 -070016623
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16625
16626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 -------------------------------------------------------------------------*/
16629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16630 ( NULL == pEventData->pEventData))
16631 {
16632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 }
16637
16638 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16639
16640 /*-------------------------------------------------------------------------
16641 Extract response and send it to UMAC
16642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 wpalMemoryCopy( &halBASessionRsp,
16644 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 sizeof(halBASessionRsp));
16646
16647 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16648
Jeff Johnson43971f52012-07-17 12:26:56 -070016649 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 {
16651 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16652 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16653 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16654 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16655 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16656 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16657 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16658 }
16659
16660 /*Notify UMAC*/
16661 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16662
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016664}/*WDI_ProcessAddSessionBARsp*/
16665
16666
16667/**
16668 @brief Process Del BA Rsp function (called when a response
16669 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016670
16671 @param pWDICtx: pointer to the WLAN DAL context
16672 pEventData: pointer to the event information structure
16673
Jeff Johnson295189b2012-06-20 16:38:30 -070016674 @see
16675 @return Result of the function call
16676*/
16677WDI_Status
16678WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016679(
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 WDI_ControlBlockType* pWDICtx,
16681 WDI_EventInfoType* pEventData
16682)
16683{
16684 WDI_Status wdiStatus;
16685 eHalStatus halStatus;
16686 WDI_DelBARspCb wdiDelBARspCb;
16687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16688
16689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 -------------------------------------------------------------------------*/
16692 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16693 ( NULL == pEventData->pEventData))
16694 {
16695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 }
16700
16701 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16702
16703 /*-------------------------------------------------------------------------
16704 Extract response and send it to UMAC
16705 -------------------------------------------------------------------------*/
16706 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016708
16709 if ( eHAL_STATUS_SUCCESS == halStatus )
16710 {
16711 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16712 }
16713
16714 /*Notify UMAC*/
16715 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16716
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016718}/*WDI_ProcessDelBARsp*/
16719
16720#ifdef FEATURE_WLAN_CCX
16721/**
16722 @brief Process TSM Stats Rsp function (called when a response
16723 is being received over the bus from HAL)
16724
16725 @param pWDICtx: pointer to the WLAN DAL context
16726 pEventData: pointer to the event information structure
16727
16728 @see
16729 @return Result of the function call
16730*/
16731WDI_Status
16732WDI_ProcessTsmStatsRsp
16733(
16734 WDI_ControlBlockType* pWDICtx,
16735 WDI_EventInfoType* pEventData
16736)
16737{
16738 WDI_TsmRspCb wdiTsmStatsRspCb;
16739 tTsmStatsRspMsg halTsmStatsRspMsg;
16740 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16742
16743 /*-------------------------------------------------------------------------
16744 Sanity check
16745 -------------------------------------------------------------------------*/
16746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16747 ( NULL == pEventData->pEventData))
16748 {
16749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 WDI_ASSERT(0);
16752 return WDI_STATUS_E_FAILURE;
16753 }
16754
16755 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16756
16757 /*-------------------------------------------------------------------------
16758 Unpack HAL Response Message - the header was already extracted by the
16759 main Response Handling procedure
16760 -------------------------------------------------------------------------*/
16761 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16762 pEventData->pEventData,
16763 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16764
16765 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16766 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16767 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16768 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16769 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16770 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16771 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16772 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16773 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16774 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16775 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16776 halTsmStatsRspMsg.tsmStatsRspParams.status);
16777
16778 /*Notify UMAC*/
16779 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16780
16781 return WDI_STATUS_SUCCESS;
16782}/*WDI_ProcessTsmStatsRsp*/
16783
16784#endif
16785
16786
16787
16788/**
16789 @brief Process Flush AC Rsp function (called when a response
16790 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016791
16792 @param pWDICtx: pointer to the WLAN DAL context
16793 pEventData: pointer to the event information structure
16794
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 @see
16796 @return Result of the function call
16797*/
16798WDI_Status
16799WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016800(
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 WDI_ControlBlockType* pWDICtx,
16802 WDI_EventInfoType* pEventData
16803)
16804{
16805 WDI_Status wdiStatus;
16806 eHalStatus halStatus;
16807 WDI_FlushAcRspCb wdiFlushAcRspCb;
16808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16809
16810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 -------------------------------------------------------------------------*/
16813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16814 ( NULL == pEventData->pEventData))
16815 {
16816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 }
16821
16822 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16823
16824 /*-------------------------------------------------------------------------
16825 Extract response and send it to UMAC
16826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016827 wpalMemoryCopy( &halStatus,
16828 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 sizeof(halStatus));
16830
Jeff Johnsone7245742012-09-05 17:12:55 -070016831 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016832
16833 /*Notify UMAC*/
16834 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16835
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016837}/*WDI_ProcessFlushAcRsp*/
16838
16839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016842
16843 @param pWDICtx: pointer to the WLAN DAL context
16844 pEventData: pointer to the event information structure
16845
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 @see
16847 @return Result of the function call
16848*/
16849WDI_Status
16850WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016851(
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 WDI_ControlBlockType* pWDICtx,
16853 WDI_EventInfoType* pEventData
16854)
16855{
16856 WDI_Status wdiStatus;
16857 eHalStatus halStatus;
16858 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16860
16861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 -------------------------------------------------------------------------*/
16864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16865 ( NULL == pEventData->pEventData))
16866 {
16867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 }
16872
16873 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16874
16875 /*-------------------------------------------------------------------------
16876 Extract response and send it to UMAC
16877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wpalMemoryCopy( &halStatus,
16879 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 sizeof(halStatus));
16881
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016883
16884 /*Notify UMAC*/
16885 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16886
Jeff Johnsone7245742012-09-05 17:12:55 -070016887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016888}/*WDI_ProcessBtAmpEventRsp*/
16889
16890
16891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016892 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016894
16895 @param pWDICtx: pointer to the WLAN DAL context
16896 pEventData: pointer to the event information structure
16897
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 @see
16899 @return Result of the function call
16900*/
16901WDI_Status
16902WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016903(
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 WDI_ControlBlockType* pWDICtx,
16905 WDI_EventInfoType* pEventData
16906)
16907{
16908 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16909 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16910 tAddStaSelfRspMsg halAddStaSelfRsp;
16911 WDI_AddStaParams wdiAddSTAParam = {0};
16912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16913
16914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 -------------------------------------------------------------------------*/
16917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16918 ( NULL == pEventData->pEventData))
16919 {
16920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 }
16925
Jeff Johnsone7245742012-09-05 17:12:55 -070016926 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16928
16929 /*-------------------------------------------------------------------------
16930 Extract response and send it to UMAC
16931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16933 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16935
16936
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 wdiAddSTASelfParams.wdiStatus =
16938 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016939
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016942 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16946
16947 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16948 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16949 WDI_MAC_ADDR_LEN);
16950
16951
16952#ifdef HAL_SELF_STA_PER_BSS
16953
16954 /* At this point add the self-STA */
16955
16956 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16957 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16958 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16959
16960 //all DPU indices are the same for self STA
16961
16962 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16965 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16966 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16967 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16968 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16969
16970 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16971 WDI_MAC_ADDR_LEN);
16972
16973 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16974 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16975
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16978 {
16979 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16980 }
16981#endif
16982
16983 /*Notify UMAC*/
16984 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16985
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016987}/*WDI_ProcessAddSTASelfRsp*/
16988
16989
16990
16991/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016992 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016994
16995 @param pWDICtx: pointer to the WLAN DAL context
16996 pEventData: pointer to the event information structure
16997
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 @see
16999 @return Result of the function call
17000*/
17001WDI_Status
17002WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017003(
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 WDI_ControlBlockType* pWDICtx,
17005 WDI_EventInfoType* pEventData
17006)
17007{
17008 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17009 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17010 tDelStaSelfRspParams delStaSelfRspParams;
17011 wpt_uint8 ucStaIdx;
17012
17013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17014
17015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017017 -------------------------------------------------------------------------*/
17018 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17019 ( NULL == pEventData->pEventData))
17020 {
17021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 }
17026
17027 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17028
17029 /*-------------------------------------------------------------------------
17030 Extract response and send it to UMAC
17031 -------------------------------------------------------------------------*/
17032
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 (wpt_uint8*)pEventData->pEventData,
17035 sizeof(tDelStaSelfRspParams));
17036
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wdiDelStaSelfRspParams.wdiStatus =
17038 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017039
Jeff Johnsone7245742012-09-05 17:12:55 -070017040 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17042 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17043 {
17044 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 delStaSelfRspParams.selfMacAddr,
17047 &ucStaIdx);
17048 if(WDI_STATUS_E_FAILURE == wdiStatus)
17049 {
17050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017051 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 }
17055 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17056 }
17057
17058 /*Notify UMAC*/
17059 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17060
17061 return WDI_STATUS_SUCCESS;
17062}
17063
Jeff Johnsone7245742012-09-05 17:12:55 -070017064#ifdef FEATURE_OEM_DATA_SUPPORT
17065/**
17066 @brief Start Oem Data Rsp function (called when a
17067 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017068
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 @param pWDICtx: pointer to the WLAN DAL context
17070 pEventData: pointer to the event information structure
17071
17072 @see
17073 @return Result of the function call
17074*/
17075#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17076
17077WDI_Status
17078WDI_ProcessStartOemDataRsp
17079(
17080 WDI_ControlBlockType* pWDICtx,
17081 WDI_EventInfoType* pEventData
17082)
17083{
17084 WDI_oemDataRspCb wdiOemDataRspCb;
17085 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17086 tStartOemDataRspParams* halStartOemDataRspParams;
17087
17088 /*-------------------------------------------------------------------------
17089 Sanity check
17090 -------------------------------------------------------------------------*/
17091 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17092 ( NULL == pEventData->pEventData))
17093 {
17094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017095 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 WDI_ASSERT(0);
17097 return WDI_STATUS_E_FAILURE;
17098 }
17099
17100 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17101
17102 /*-------------------------------------------------------------------------
17103 Extract response and send it to UMAC
17104 -------------------------------------------------------------------------*/
17105 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17106
17107
17108 //It is the responsibility of the application code to check for failure
17109 //conditions!
17110
17111 //Allocate memory for WDI OEM DATA RSP structure
17112 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17113
17114 if(NULL == wdiOemDataRspParams)
17115 {
17116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17117 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17118 pWDICtx, pEventData, pEventData->pEventData);
17119 WDI_ASSERT(0);
17120 return WDI_STATUS_E_FAILURE;
17121 }
17122
17123 /* Populate WDI structure members */
17124 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17125
17126 /*Notify UMAC*/
17127 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17128
17129 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17130 wpalMemoryFree(wdiOemDataRspParams);
17131
17132 return WDI_STATUS_SUCCESS;
17133}/*WDI_PrcoessStartOemDataRsp*/
17134#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017135
17136/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017138===========================================================================*/
17139
17140/**
17141 @brief Process Channel Switch Rsp function (called when a response
17142 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017143
17144 @param pWDICtx: pointer to the WLAN DAL context
17145 pEventData: pointer to the event information structure
17146
Jeff Johnson295189b2012-06-20 16:38:30 -070017147 @see
17148 @return Result of the function call
17149*/
17150WDI_Status
17151WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017152(
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 WDI_ControlBlockType* pWDICtx,
17154 WDI_EventInfoType* pEventData
17155)
17156{
17157 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17158 WDI_SwitchChRspCb wdiChSwitchRspCb;
17159 tSwitchChannelRspParams halSwitchChannelRsp;
17160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17161
17162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 -------------------------------------------------------------------------*/
17165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17166 ( NULL == pEventData->pEventData))
17167 {
17168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 }
17173
17174 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17175
17176 /*-------------------------------------------------------------------------
17177 Extract response and send it to UMAC
17178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 (wpt_uint8*)pEventData->pEventData,
17181 sizeof(halSwitchChannelRsp));
17182
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 wdiSwitchChRsp.wdiStatus =
17184 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17186
17187#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017189#endif
17190
17191 /*Notify UMAC*/
17192 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17193
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195}/*WDI_ProcessChannelSwitchRsp*/
17196
17197
17198/**
17199 @brief Process Config STA Rsp function (called when a response
17200 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017201
17202 @param pWDICtx: pointer to the WLAN DAL context
17203 pEventData: pointer to the event information structure
17204
Jeff Johnson295189b2012-06-20 16:38:30 -070017205 @see
17206 @return Result of the function call
17207*/
17208WDI_Status
17209WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017210(
Jeff Johnson295189b2012-06-20 16:38:30 -070017211 WDI_ControlBlockType* pWDICtx,
17212 WDI_EventInfoType* pEventData
17213)
17214{
17215 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17216 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17217 WDI_AddStaParams wdiAddSTAParam;
17218
17219 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017221
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17224
17225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 -------------------------------------------------------------------------*/
17228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17229 ( NULL == pEventData->pEventData))
17230 {
17231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 }
17236
17237 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17238
17239 /*-------------------------------------------------------------------------
17240 Extract response and send it to UMAC
17241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017242 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17243 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 sizeof(halConfigStaRsp.configStaRspParams));
17245
17246
17247 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17248 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17249 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17250 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17251 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17252
17253 /* MAC Address of STA - take from cache as it does not come back in the
17254 response*/
17255 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017258
17259 wdiCfgSTAParams.wdiStatus =
17260 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017261
17262 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17263 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17264 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17265
17266 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17267 {
17268 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17269 {
17270 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17273 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017274
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017278 wdiAddSTAParam.ucHTCapable =
17279 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17280 wdiAddSTAParam.ucStaType =
17281 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017282 wdiAddSTAParam.ucRmfEnabled =
17283 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017284
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017286 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17287 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017288 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017289
17290 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17291 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17292 WDI_MAC_ADDR_LEN);
17293
17294 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17295 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17296 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017297
17298 if ( NULL == pBSSSes )
17299 {
17300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17301 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017302
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017305 }
17306
17307 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017308 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017316 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017317
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17319 }
17320 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17321 {
17322 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17323
Jeff Johnsone7245742012-09-05 17:12:55 -070017324 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017325 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017334 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 halConfigStaRsp.configStaRspParams.ucUcastSig;
17338 }
17339 }
17340
17341 /*Notify UMAC*/
17342 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17343
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017345}/*WDI_ProcessConfigStaRsp*/
17346
17347
17348/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017349 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017351
17352 @param pWDICtx: pointer to the WLAN DAL context
17353 pEventData: pointer to the event information structure
17354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 @see
17356 @return Result of the function call
17357*/
17358WDI_Status
17359WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017360(
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ControlBlockType* pWDICtx,
17362 WDI_EventInfoType* pEventData
17363)
17364{
17365 WDI_Status wdiStatus;
17366 eHalStatus halStatus;
17367 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17368
17369 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17372
17373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 -------------------------------------------------------------------------*/
17376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17377 ( NULL == pEventData->pEventData))
17378 {
17379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 }
17384
17385 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17386
17387 wpalMutexAcquire(&pWDICtx->wptMutex);
17388
17389 /*If the link is being transitioned to idle - the BSS is to be deleted
17390 - this type of ending a session is possible when UMAC has failed an
17391 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017392 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17394 {
17395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17399 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17400 &pBSSSes);
17401
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 /*-----------------------------------------------------------------------
17403 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 -----------------------------------------------------------------------*/
17406 if ( NULL == pBSSSes )
17407 {
17408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17409 "Set link response received outside association session");
17410 }
17411 else
17412 {
17413 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17414 will be del BSS coming after this to stop the beaconing & cleaning up the
17415 sessions*/
17416 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17417 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17418 {
17419 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 -----------------------------------------------------------------------*/
17422 WDI_DeleteSession(pWDICtx, pBSSSes);
17423
17424 /*-----------------------------------------------------------------------
17425 Check to see if this association is in progress - if so disable the
17426 flag as this has ended
17427 -----------------------------------------------------------------------*/
17428 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 /*Association no longer in progress */
17431 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17432 /*Association no longer in progress - prepare pending assoc for processing*/
17433 WDI_DequeueAssocRequest(pWDICtx);
17434 }
17435 }
17436 }
17437 }
17438 /* If the link state has been set to POST ASSOC, reset the "association in
17439 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17442 {
17443 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17444 WDI_DequeueAssocRequest(pWDICtx);
17445 }
17446
17447 wpalMutexRelease(&pWDICtx->wptMutex);
17448
17449 /*-------------------------------------------------------------------------
17450 Extract response and send it to UMAC
17451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 wpalMemoryCopy( &halStatus,
17453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 sizeof(halStatus));
17455
Jeff Johnsone7245742012-09-05 17:12:55 -070017456 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017457
17458 /*Notify UMAC*/
17459 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17460
Jeff Johnsone7245742012-09-05 17:12:55 -070017461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017462}/*WDI_ProcessSetLinkStateRsp*/
17463
17464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017465 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017467
17468 @param pWDICtx: pointer to the WLAN DAL context
17469 pEventData: pointer to the event information structure
17470
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 @see
17472 @return Result of the function call
17473*/
17474WDI_Status
17475WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017476(
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 WDI_ControlBlockType* pWDICtx,
17478 WDI_EventInfoType* pEventData
17479)
17480{
17481 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17482 WDI_GetStatsRspCb wdiGetStatsRspCb;
17483 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017484
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17486
17487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 -------------------------------------------------------------------------*/
17490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17491 ( NULL == pEventData->pEventData))
17492 {
17493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 }
17498
17499 /*-------------------------------------------------------------------------
17500 Extract response and send it to UMAC
17501 -------------------------------------------------------------------------*/
17502 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17503
17504 /*allocate the stats response buffer */
17505 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17506 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17507 + sizeof(WDI_GetStatsRspParamsType));
17508
17509 if(NULL == wdiGetStatsRsp)
17510 {
17511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17512 "Failed to allocate memory in Get Stats Response %x %x %x ",
17513 pWDICtx, pEventData, pEventData->pEventData);
17514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516 }
17517
17518 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17519
17520 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17521 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17522 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17523 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17524 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17525 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17526
17527 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17528 wpalMemoryCopy(wdiGetStatsRsp + 1,
17529 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17530 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17531
17532 /*Notify UMAC*/
17533 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17534
17535 wpalMemoryFree(wdiGetStatsRsp);
17536
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017538}/*WDI_ProcessGetStatsRsp*/
17539
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080017540#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17541/**
17542 @brief Process Get Roam Rssi Rsp function (called when a response is
17543 being received over the bus from HAL)
17544
17545 @param pWDICtx: pointer to the WLAN DAL context
17546 pEventData: pointer to the event information structure
17547
17548 @see
17549 @return Result of the function call
17550*/
17551WDI_Status
17552WDI_ProcessGetRoamRssiRsp
17553(
17554 WDI_ControlBlockType* pWDICtx,
17555 WDI_EventInfoType* pEventData
17556)
17557{
17558 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17559 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17560 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17562
17563 /*-------------------------------------------------------------------------
17564 Sanity check
17565 -------------------------------------------------------------------------*/
17566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17567 ( NULL == pEventData->pEventData))
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17570 "%s: Invalid parameters", __func__);
17571 WDI_ASSERT(0);
17572 return WDI_STATUS_E_FAILURE;
17573 }
17574
17575 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17576 if(NULL == wdiGetRoamRssiRspCb)
17577 {
17578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17579 "%s: call back function is NULL", __func__);
17580 WDI_ASSERT(0);
17581 return WDI_STATUS_E_FAILURE;
17582 }
17583
17584 /*-------------------------------------------------------------------------
17585 Extract response and send it to UMAC
17586 -------------------------------------------------------------------------*/
17587 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17588 pEventData->pEventData,
17589 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17590
17591 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17592 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17593 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17594
17595 /*Notify UMAC*/
17596 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17597
17598 return WDI_STATUS_SUCCESS;
17599}/*WDI_ProcessGetRoamRssiRsp*/
17600#endif
17601
Jeff Johnson295189b2012-06-20 16:38:30 -070017602
17603/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017606
17607 @param pWDICtx: pointer to the WLAN DAL context
17608 pEventData: pointer to the event information structure
17609
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 @see
17611 @return Result of the function call
17612*/
17613WDI_Status
17614WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017615(
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 WDI_ControlBlockType* pWDICtx,
17617 WDI_EventInfoType* pEventData
17618)
17619{
17620 WDI_Status wdiStatus;
17621 eHalStatus halStatus;
17622 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17624
17625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 -------------------------------------------------------------------------*/
17628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17629 ( NULL == pEventData->pEventData))
17630 {
17631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 }
17636
17637 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17638
17639 /*-------------------------------------------------------------------------
17640 Extract response and send it to UMAC
17641 -------------------------------------------------------------------------*/
17642 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017643 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017644
17645 /*Notify UMAC*/
17646 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17647
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017649}/*WDI_ProcessUpdateCfgRsp*/
17650
17651
17652
17653/**
17654 @brief Process Add BA Rsp function (called when a response
17655 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017656
17657 @param pWDICtx: pointer to the WLAN DAL context
17658 pEventData: pointer to the event information structure
17659
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 @see
17661 @return Result of the function call
17662*/
17663WDI_Status
17664WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017665(
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 WDI_ControlBlockType* pWDICtx,
17667 WDI_EventInfoType* pEventData
17668)
17669{
17670 WDI_AddBARspCb wdiAddBARspCb;
17671
17672 tAddBARspParams halAddBARsp;
17673 WDI_AddBARspinfoType wdiAddBARsp;
17674
17675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17676
17677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 -------------------------------------------------------------------------*/
17680 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17681 ( NULL == pEventData->pEventData))
17682 {
17683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 }
17688
17689 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17690
17691 /*-------------------------------------------------------------------------
17692 Extract response and send it to UMAC
17693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 wpalMemoryCopy( &halAddBARsp,
17695 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017696 sizeof(halAddBARsp));
17697
17698 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17699
Jeff Johnson43971f52012-07-17 12:26:56 -070017700 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 {
17702 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17703 }
17704
17705 /*Notify UMAC*/
17706 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17707
Jeff Johnsone7245742012-09-05 17:12:55 -070017708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017709}/*WDI_ProcessAddSessionBARsp*/
17710
17711/**
17712 @brief Process Add BA Rsp function (called when a response
17713 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017714
17715 @param pWDICtx: pointer to the WLAN DAL context
17716 pEventData: pointer to the event information structure
17717
Jeff Johnson295189b2012-06-20 16:38:30 -070017718 @see
17719 @return Result of the function call
17720*/
17721WDI_Status
17722WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017723(
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 WDI_ControlBlockType* pWDICtx,
17725 WDI_EventInfoType* pEventData
17726)
17727{
17728 WDI_TriggerBARspCb wdiTriggerBARspCb;
17729
17730 tTriggerBARspParams* halTriggerBARsp;
17731 tTriggerBaRspCandidate* halBaCandidate;
17732 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17733 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17734 wpt_uint16 index;
17735 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017736 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17738
17739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017741 -------------------------------------------------------------------------*/
17742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17743 ( NULL == pEventData->pEventData))
17744 {
17745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 }
17750
17751 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17752
17753 /*-------------------------------------------------------------------------
17754 Extract response and send it to UMAC
17755 -------------------------------------------------------------------------*/
17756 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17757
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017758 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17759
17760 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17761 {
17762 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017765
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017766 if(NULL == wdiTriggerBARsp)
17767 {
17768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17769 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17770 pWDICtx, pEventData, pEventData->pEventData);
17771 WDI_ASSERT(0);
17772 return WDI_STATUS_E_FAILURE;
17773 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017774
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017775 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17776
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17780
17781 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17782 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17783
17784 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17785 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17788 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17789 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017792 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17794 }
17795 wdiTriggerBARspCandidate++;
17796 halBaCandidate++;
17797 }
17798 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017799 else
17800 {
17801 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17802
17803 if(NULL == wdiTriggerBARsp)
17804 {
17805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17806 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17807 pWDICtx, pEventData, pEventData->pEventData);
17808 WDI_ASSERT(0);
17809 return WDI_STATUS_E_FAILURE;
17810 }
17811
17812 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17813
17814 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017815
17816 /*Notify UMAC*/
17817 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17818
17819 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017821}/*WDI_ProcessAddSessionBARsp*/
17822
17823/**
17824 @brief Process Update Beacon Params Rsp function (called when a response
17825 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017826
17827 @param pWDICtx: pointer to the WLAN DAL context
17828 pEventData: pointer to the event information structure
17829
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 @see
17831 @return Result of the function call
17832*/
17833WDI_Status
17834WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017835(
Jeff Johnson295189b2012-06-20 16:38:30 -070017836 WDI_ControlBlockType* pWDICtx,
17837 WDI_EventInfoType* pEventData
17838)
17839{
17840 WDI_Status wdiStatus;
17841 eHalStatus halStatus;
17842 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17844
17845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 -------------------------------------------------------------------------*/
17848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17849 ( NULL == pEventData->pEventData))
17850 {
17851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 }
17856
17857 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17858
17859 /*-------------------------------------------------------------------------
17860 Extract response and send it to UMAC
17861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 wpalMemoryCopy( &halStatus,
17863 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 sizeof(halStatus));
17865
Jeff Johnsone7245742012-09-05 17:12:55 -070017866 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017867
17868 /*Notify UMAC*/
17869 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17870
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017872}/*WDI_ProcessUpdateBeaconParamsRsp*/
17873
17874/**
17875 @brief Process Send Beacon template Rsp function (called when a response
17876 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017877
17878 @param pWDICtx: pointer to the WLAN DAL context
17879 pEventData: pointer to the event information structure
17880
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 @see
17882 @return Result of the function call
17883*/
17884WDI_Status
17885WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017886(
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 WDI_ControlBlockType* pWDICtx,
17888 WDI_EventInfoType* pEventData
17889)
17890{
17891 WDI_Status wdiStatus;
17892 eHalStatus halStatus;
17893 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17895
17896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017898 -------------------------------------------------------------------------*/
17899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17900 ( NULL == pEventData->pEventData))
17901 {
17902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 }
17907
17908 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17909
17910 /*-------------------------------------------------------------------------
17911 Extract response and send it to UMAC
17912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 wpalMemoryCopy( &halStatus,
17914 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 sizeof(halStatus));
17916
Jeff Johnsone7245742012-09-05 17:12:55 -070017917 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017918
17919 /*Notify UMAC*/
17920 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17921
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017923}/*WDI_ProcessSendBeaconParamsRsp*/
17924
Jeff Johnsone7245742012-09-05 17:12:55 -070017925
Jeff Johnson295189b2012-06-20 16:38:30 -070017926/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017929
17930 @param pWDICtx: pointer to the WLAN DAL context
17931 pEventData: pointer to the event information structure
17932
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 @see
17934 @return Result of the function call
17935*/
17936WDI_Status
17937WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017938(
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 WDI_ControlBlockType* pWDICtx,
17940 WDI_EventInfoType* pEventData
17941)
17942{
17943 WDI_Status wdiStatus;
17944 eHalStatus halStatus;
17945 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17947
17948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 -------------------------------------------------------------------------*/
17951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17952 ( NULL == pEventData->pEventData))
17953 {
17954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 }
17959
17960 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17961
17962 /*-------------------------------------------------------------------------
17963 Extract response and send it to UMAC
17964 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017965 wpalMemoryCopy( &halStatus,
17966 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 sizeof(halStatus));
17968
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017970
17971 /*Notify UMAC*/
17972 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17973
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017975}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17976
17977 /**
17978 @brief Process Set Max Tx Power Rsp function (called when a response
17979 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017980
17981 @param pWDICtx: pointer to the WLAN DAL context
17982 pEventData: pointer to the event information structure
17983
Jeff Johnson295189b2012-06-20 16:38:30 -070017984 @see
17985 @return Result of the function call
17986*/
17987WDI_Status
17988WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017989(
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 WDI_ControlBlockType* pWDICtx,
17991 WDI_EventInfoType* pEventData
17992)
17993{
17994 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017995
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017997
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18000
18001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 -------------------------------------------------------------------------*/
18004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18005 ( NULL == pEventData->pEventData))
18006 {
18007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018011 }
18012
18013 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18014
18015 /*-------------------------------------------------------------------------
18016 Extract response and send it to UMAC
18017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018018 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18019 pEventData->pEventData,
18020 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018021
18022 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18023 {
18024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18025 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018026 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018028 }
18029
Jeff Johnsone7245742012-09-05 17:12:55 -070018030 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018031 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018033
18034 /*Notify UMAC*/
18035 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18036
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018038}
18039
schang86c22c42013-03-13 18:41:24 -070018040 /**
18041 @brief Process Set Tx Power Rsp function (called when a response
18042 is being received over the bus from HAL)
18043
18044 @param pWDICtx: pointer to the WLAN DAL context
18045 pEventData: pointer to the event information structure
18046
18047 @see
18048 @return Result of the function call
18049*/
18050WDI_Status
18051WDI_ProcessSetTxPowerRsp
18052(
18053 WDI_ControlBlockType* pWDICtx,
18054 WDI_EventInfoType* pEventData
18055)
18056{
18057 tSetTxPwrRspMsg halTxpowerrsp;
18058 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18059 WDA_SetTxPowerRspCb wdiReqStatusCb;
18060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18061
18062 /*-------------------------------------------------------------------------
18063 Sanity check
18064 -------------------------------------------------------------------------*/
18065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18066 ( NULL == pEventData->pEventData))
18067 {
18068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18069 "%s: Invalid parameters", __func__);
18070 WDI_ASSERT(0);
18071 return WDI_STATUS_E_FAILURE;
18072 }
18073
18074 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18075
18076 /*-------------------------------------------------------------------------
18077 Extract response and send it to UMAC
18078 -------------------------------------------------------------------------*/
18079 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18080 pEventData->pEventData,
18081 sizeof(halTxpowerrsp.setTxPwrRspParams));
18082
18083 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18084 {
18085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18086 "Error status returned in Set Tx Power Response ");
18087 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18088 return WDI_STATUS_E_FAILURE;
18089 }
18090
18091 wdiSetTxPowerRspMsg.wdiStatus =
18092 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18093
18094 /*Notify UMAC*/
18095 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18096
18097 return WDI_STATUS_SUCCESS;
18098}
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018099#ifdef FEATURE_WLAN_TDLS
18100/**
18101 @brief Process TDLS Link Establish Rsp function (called
18102 when a response is being received over the bus from HAL)
18103
18104 @param pWDICtx: pointer to the WLAN DAL context
18105 pEventData: pointer to the event information structure
18106
18107 @see
18108 @return Result of the function call
18109*/
18110WDI_Status
18111WDI_ProcessLinkEstablishReqRsp
18112(
18113 WDI_ControlBlockType* pWDICtx,
18114 WDI_EventInfoType* pEventData
18115)
18116{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018117 eHalStatus halStatus;
18118 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018119 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18120 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18121
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18123
18124 /*-------------------------------------------------------------------------
18125 Sanity check
18126 -------------------------------------------------------------------------*/
18127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18128 ( NULL == pEventData->pEventData))
18129 {
18130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18131 "%s: Invalid parameters", __func__);
18132 WDI_ASSERT(0);
18133 return WDI_STATUS_E_FAILURE;
18134 }
18135
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018136 /*-------------------------------------------------------------------------
18137 Extract indication and send it to UMAC
18138 -------------------------------------------------------------------------*/
18139 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18140 pEventData->pEventData,
18141 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18142
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018143 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18144
18145 /*-------------------------------------------------------------------------
18146 Extract response and send it to UMAC
18147 -------------------------------------------------------------------------*/
18148 wpalMemoryCopy( &halStatus,
18149 pEventData->pEventData,
18150 sizeof(halStatus));
18151
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018152 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18153 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018154
18155 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018156 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018157
18158 return WDI_STATUS_SUCCESS;
18159}/*WDI_ProcessLinkEstablishReqRsp*/
18160#endif
schang86c22c42013-03-13 18:41:24 -070018161
Jeff Johnson295189b2012-06-20 16:38:30 -070018162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018165
18166 @param pWDICtx: pointer to the WLAN DAL context
18167 pEventData: pointer to the event information structure
18168
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 @see
18170 @return Result of the function call
18171*/
18172WDI_Status
18173WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018174(
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 WDI_ControlBlockType* pWDICtx,
18176 WDI_EventInfoType* pEventData
18177)
18178{
18179 WDI_Status wdiStatus;
18180 eHalStatus halStatus;
18181 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18183
18184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018186 -------------------------------------------------------------------------*/
18187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18188 ( NULL == pEventData->pEventData))
18189 {
18190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 }
18195
18196 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18197
18198 /*-------------------------------------------------------------------------
18199 Extract response and send it to UMAC
18200 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018201 wpalMemoryCopy( &halStatus,
18202 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 sizeof(halStatus));
18204
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018206
18207 /*Notify UMAC*/
18208 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18209
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018211}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018213 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018215
18216 @param pWDICtx: pointer to the WLAN DAL context
18217 pEventData: pointer to the event information structure
18218
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 @see
18220 @return Result of the function call
18221*/
18222WDI_Status
18223WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018224(
Jeff Johnson295189b2012-06-20 16:38:30 -070018225 WDI_ControlBlockType* pWDICtx,
18226 WDI_EventInfoType* pEventData
18227)
18228{
18229 WDI_Status wdiStatus;
18230 eHalStatus halStatus;
18231 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018232 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18234
18235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 -------------------------------------------------------------------------*/
18238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18239 ( NULL == pEventData->pEventData))
18240 {
18241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 }
18246
18247 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18248
18249 /*-------------------------------------------------------------------------
18250 Extract response and send it to UMAC
18251 -------------------------------------------------------------------------*/
18252 halStatus = *((eHalStatus*)pEventData->pEventData);
18253
Jeff Johnsone7245742012-09-05 17:12:55 -070018254 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018255
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018256 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18257 * Other module states are taken care by PMC.
18258 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18259 */
18260 if (wdiStatus != WDI_STATUS_SUCCESS) {
18261
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18263 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18264 halStatus);
18265 /* Call Back is not required as we are putting the DXE in FULL
18266 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018267 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18268
18269 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18271 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18272 WDI_ASSERT(0);
18273 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018274 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 /*Notify UMAC*/
18276 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18277
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018279}/*WDI_ProcessEnterImpsRsp*/
18280
18281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018282 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018284
18285 @param pWDICtx: pointer to the WLAN DAL context
18286 pEventData: pointer to the event information structure
18287
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 @see
18289 @return Result of the function call
18290*/
18291WDI_Status
18292WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018293(
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 WDI_ControlBlockType* pWDICtx,
18295 WDI_EventInfoType* pEventData
18296)
18297{
18298 WDI_Status wdiStatus;
18299 eHalStatus halStatus;
18300 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018301 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18303
18304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 -------------------------------------------------------------------------*/
18307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18308 ( NULL == pEventData->pEventData))
18309 {
18310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 }
18315
18316 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18317
18318 /*-------------------------------------------------------------------------
18319 Extract response and send it to UMAC
18320 -------------------------------------------------------------------------*/
18321 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018322 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018323
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018324 if (halStatus != eHAL_STATUS_SUCCESS)
18325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18326 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18327
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018329 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18330 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18331 {
18332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18333 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18334 WDI_ASSERT(0);
18335 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 /*Notify UMAC*/
18337 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18338
Jeff Johnsone7245742012-09-05 17:12:55 -070018339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018340}/*WDI_ProcessExitImpsRsp*/
18341
18342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018345
18346 @param pWDICtx: pointer to the WLAN DAL context
18347 pEventData: pointer to the event information structure
18348
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 @see
18350 @return Result of the function call
18351*/
18352WDI_Status
18353WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018354(
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 WDI_ControlBlockType* pWDICtx,
18356 WDI_EventInfoType* pEventData
18357)
18358{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018359 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18360 tHalEnterBmpsRspParams halEnterBmpsRsp;
18361 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18362 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018363 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18365
18366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 -------------------------------------------------------------------------*/
18369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18370 ( NULL == pEventData->pEventData))
18371 {
18372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 }
18377
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018379 Extract response and send it to UMAC
18380 -------------------------------------------------------------------------*/
18381 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18382 {
18383 wpalMemoryCopy( &halEnterBmpsRsp,
18384 pEventData->pEventData,
18385 sizeof(halEnterBmpsRsp));
18386
18387 //Used to print debug message
18388 halStatus = halEnterBmpsRsp.status;
18389 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18390 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18391 }
18392 else
18393 {
18394 halStatus = *((eHalStatus*)pEventData->pEventData);
18395 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18396 }
18397
18398 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018399
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018400 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18401 * Other module states are taken care by PMC.
18402 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18403 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018404 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18405 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018408 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18409 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018410 /* Call Back is not required as we are putting the DXE in FULL
18411 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018412 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18413 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18414 {
18415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18416 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18417 WDI_ASSERT(0);
18418 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018419 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018420 }
18421
Jeff Johnson295189b2012-06-20 16:38:30 -070018422 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018423 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018424
Jeff Johnsone7245742012-09-05 17:12:55 -070018425 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018426}/*WDI_ProcessEnterBmpsRsp*/
18427
18428/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018429 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018431
18432 @param pWDICtx: pointer to the WLAN DAL context
18433 pEventData: pointer to the event information structure
18434
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 @see
18436 @return Result of the function call
18437*/
18438WDI_Status
18439WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018440(
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 WDI_ControlBlockType* pWDICtx,
18442 WDI_EventInfoType* pEventData
18443)
18444{
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 eHalStatus halStatus;
18446 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018447 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080018448 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18449 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18451
18452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 -------------------------------------------------------------------------*/
18455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18456 ( NULL == pEventData->pEventData))
18457 {
18458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 }
18463
18464 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18465
18466 /*-------------------------------------------------------------------------
18467 Extract response and send it to UMAC
18468 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018469
18470 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18471 {
18472 wpalMemoryCopy( &halExitBmpsRsp,
18473 pEventData->pEventData,
18474 sizeof(halExitBmpsRsp));
18475
18476 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18477 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18478 }
18479 else
18480 {
18481 halStatus = *((eHalStatus*)pEventData->pEventData);
18482 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18483 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018484
18485 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018486 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18487 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18488 {
18489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18490 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18491 WDI_ASSERT(0);
18492 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18494
18495 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018496 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018497
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018499}/*WDI_ProcessExitBmpsRsp*/
18500
18501/**
18502 @brief Process Enter UAPSD Rsp function (called when a response
18503 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018504
18505 @param pWDICtx: pointer to the WLAN DAL context
18506 pEventData: pointer to the event information structure
18507
Jeff Johnson295189b2012-06-20 16:38:30 -070018508 @see
18509 @return Result of the function call
18510*/
18511WDI_Status
18512WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018513(
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 WDI_ControlBlockType* pWDICtx,
18515 WDI_EventInfoType* pEventData
18516)
18517{
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018519 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018521 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18522
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18524
18525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018527 -------------------------------------------------------------------------*/
18528 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18529 ( NULL == pEventData->pEventData))
18530 {
18531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 }
18536
18537 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18538
18539 /*-------------------------------------------------------------------------
18540 Extract response and send it to UMAC
18541 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018542 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18543 {
18544 wpalMemoryCopy( &halEnterUapsdRsp,
18545 pEventData->pEventData,
18546 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018547
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018548 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18549 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18550 }
18551 else
18552 {
18553 halStatus = *((eHalStatus*)pEventData->pEventData);
18554 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18555 }
18556
18557 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 {
18559 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18560 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18561 // the traffic to decide when to suspend the trigger frames when there is no traffic
18562 // activity on the trigger enabled ACs
18563 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18564
18565#ifdef WLAN_PERF
18566 // Increment the BD signature to refresh the fast path BD utilization
18567 pWDICtx->uBdSigSerialNum++;
18568#endif
18569 }
18570
18571 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018572 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018573
Jeff Johnsone7245742012-09-05 17:12:55 -070018574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018575}/*WDI_ProcessEnterUapsdRsp*/
18576
18577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018578 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018580
18581 @param pWDICtx: pointer to the WLAN DAL context
18582 pEventData: pointer to the event information structure
18583
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 @see
18585 @return Result of the function call
18586*/
18587WDI_Status
18588WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018589(
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 WDI_ControlBlockType* pWDICtx,
18591 WDI_EventInfoType* pEventData
18592)
18593{
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 eHalStatus halStatus;
18595 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018596 tHalExitUapsdRspParams halExitUapsdRsp;
18597 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18599
18600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 -------------------------------------------------------------------------*/
18603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18604 ( NULL == pEventData->pEventData))
18605 {
18606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 }
18611
18612 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18613
18614 /*-------------------------------------------------------------------------
18615 Extract response and send it to UMAC
18616 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018617 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18618 {
18619 wpalMemoryCopy( &halExitUapsdRsp,
18620 pEventData->pEventData,
18621 sizeof(halExitUapsdRsp));
18622
18623 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18624 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18625 }
18626 else
18627 {
18628 halStatus = *((eHalStatus*)pEventData->pEventData);
18629 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18630 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18632 // directly instead of the FW WQ.
18633 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18634
18635#ifdef WLAN_PERF
18636 // Increment the BD signature to refresh the fast path BD utilization
18637 pWDICtx->uBdSigSerialNum++;
18638#endif
18639
18640 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018641 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018642
Jeff Johnsone7245742012-09-05 17:12:55 -070018643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018644}/*WDI_ProcessExitUapsdRsp*/
18645
18646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018647 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018649
18650 @param pWDICtx: pointer to the WLAN DAL context
18651 pEventData: pointer to the event information structure
18652
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 @see
18654 @return Result of the function call
18655*/
18656WDI_Status
18657WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018658(
Jeff Johnson295189b2012-06-20 16:38:30 -070018659 WDI_ControlBlockType* pWDICtx,
18660 WDI_EventInfoType* pEventData
18661)
18662{
18663 WDI_Status wdiStatus;
18664 eHalStatus halStatus;
18665 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18667
18668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 -------------------------------------------------------------------------*/
18671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18672 ( NULL == pEventData->pEventData))
18673 {
18674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 }
18679
18680 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18681
18682 /*-------------------------------------------------------------------------
18683 Extract response and send it to UMAC
18684 -------------------------------------------------------------------------*/
18685 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018687
18688 /*Notify UMAC*/
18689 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18690
Jeff Johnsone7245742012-09-05 17:12:55 -070018691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018692}/*WDI_ProcessSetUapsdAcParamsRsp*/
18693
18694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018697
18698 @param pWDICtx: pointer to the WLAN DAL context
18699 pEventData: pointer to the event information structure
18700
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 @see
18702 @return Result of the function call
18703*/
18704WDI_Status
18705WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018706(
Jeff Johnson295189b2012-06-20 16:38:30 -070018707 WDI_ControlBlockType* pWDICtx,
18708 WDI_EventInfoType* pEventData
18709)
18710{
18711 WDI_Status wdiStatus;
18712 eHalStatus halStatus;
18713 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18715
18716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 -------------------------------------------------------------------------*/
18719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18720 ( NULL == pEventData->pEventData))
18721 {
18722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018726 }
18727
18728 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18729
18730 /*-------------------------------------------------------------------------
18731 Extract response and send it to UMAC
18732 -------------------------------------------------------------------------*/
18733 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018734 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018735
18736 /*Notify UMAC*/
18737 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18738
Jeff Johnsone7245742012-09-05 17:12:55 -070018739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018740}/*WDI_ProcessUpdateUapsdParamsRsp*/
18741
18742/**
18743 @brief Process Configure RXP filter Rsp function (called when a
18744 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018745
18746 @param pWDICtx: pointer to the WLAN DAL context
18747 pEventData: pointer to the event information structure
18748
Jeff Johnson295189b2012-06-20 16:38:30 -070018749 @see
18750 @return Result of the function call
18751*/
18752WDI_Status
18753WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018754(
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 WDI_ControlBlockType* pWDICtx,
18756 WDI_EventInfoType* pEventData
18757)
18758{
18759 WDI_Status wdiStatus;
18760 eHalStatus halStatus;
18761 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18763
18764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018766 -------------------------------------------------------------------------*/
18767 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18768 ( NULL == pEventData->pEventData))
18769 {
18770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018774 }
18775
18776 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18777
18778 /*-------------------------------------------------------------------------
18779 Extract response and send it to UMAC
18780 -------------------------------------------------------------------------*/
18781 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018782 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018783
18784 /*Notify UMAC*/
18785 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18786
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018788}/*WDI_ProcessConfigureRxpFilterRsp*/
18789
18790/**
18791 @brief Process Set beacon filter Rsp function (called when a
18792 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018793
18794 @param pWDICtx: pointer to the WLAN DAL context
18795 pEventData: pointer to the event information structure
18796
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 @see
18798 @return Result of the function call
18799*/
18800WDI_Status
18801WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018802(
Jeff Johnson295189b2012-06-20 16:38:30 -070018803 WDI_ControlBlockType* pWDICtx,
18804 WDI_EventInfoType* pEventData
18805)
18806{
18807 WDI_Status wdiStatus;
18808 eHalStatus halStatus;
18809 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18811
18812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 -------------------------------------------------------------------------*/
18815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18816 ( NULL == pEventData->pEventData))
18817 {
18818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018822 }
18823
18824 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18825
18826 /*-------------------------------------------------------------------------
18827 Extract response and send it to UMAC
18828 -------------------------------------------------------------------------*/
18829 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018831
18832 /*Notify UMAC*/
18833 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18834
Jeff Johnsone7245742012-09-05 17:12:55 -070018835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018836}/*WDI_ProcessSetBeaconFilterRsp*/
18837
18838/**
18839 @brief Process remove beacon filter Rsp function (called when a
18840 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018841
18842 @param pWDICtx: pointer to the WLAN DAL context
18843 pEventData: pointer to the event information structure
18844
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 @see
18846 @return Result of the function call
18847*/
18848WDI_Status
18849WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018850(
Jeff Johnson295189b2012-06-20 16:38:30 -070018851 WDI_ControlBlockType* pWDICtx,
18852 WDI_EventInfoType* pEventData
18853)
18854{
18855 WDI_Status wdiStatus;
18856 eHalStatus halStatus;
18857 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18859
18860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 -------------------------------------------------------------------------*/
18863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18864 ( NULL == pEventData->pEventData))
18865 {
18866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 }
18871
18872 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18873
18874 /*-------------------------------------------------------------------------
18875 Extract response and send it to UMAC
18876 -------------------------------------------------------------------------*/
18877 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018879
18880 /*Notify UMAC*/
18881 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18882
Jeff Johnsone7245742012-09-05 17:12:55 -070018883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018884}/*WDI_ProcessRemBeaconFilterRsp*/
18885
18886/**
18887 @brief Process set RSSI thresholds Rsp function (called when a
18888 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018889
18890 @param pWDICtx: pointer to the WLAN DAL context
18891 pEventData: pointer to the event information structure
18892
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 @see
18894 @return Result of the function call
18895*/
18896WDI_Status
18897WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018898(
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 WDI_ControlBlockType* pWDICtx,
18900 WDI_EventInfoType* pEventData
18901)
18902{
18903 WDI_Status wdiStatus;
18904 eHalStatus halStatus;
18905 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18907
18908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 -------------------------------------------------------------------------*/
18911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18912 ( NULL == pEventData->pEventData))
18913 {
18914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 }
18919
18920 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18921
18922 /*-------------------------------------------------------------------------
18923 Extract response and send it to UMAC
18924 -------------------------------------------------------------------------*/
18925 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018927
18928 /*Notify UMAC*/
18929 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18930
Jeff Johnsone7245742012-09-05 17:12:55 -070018931 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018932}/*WDI_ProcessSetRSSIThresoldsRsp*/
18933
18934/**
18935 @brief Process host offload Rsp function (called when a
18936 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018937
18938 @param pWDICtx: pointer to the WLAN DAL context
18939 pEventData: pointer to the event information structure
18940
Jeff Johnson295189b2012-06-20 16:38:30 -070018941 @see
18942 @return Result of the function call
18943*/
18944WDI_Status
18945WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018946(
Jeff Johnson295189b2012-06-20 16:38:30 -070018947 WDI_ControlBlockType* pWDICtx,
18948 WDI_EventInfoType* pEventData
18949)
18950{
18951 WDI_Status wdiStatus;
18952 eHalStatus halStatus;
18953 WDI_HostOffloadCb wdiHostOffloadCb;
18954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18955
18956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 -------------------------------------------------------------------------*/
18959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18960 ( NULL == pEventData->pEventData))
18961 {
18962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 }
18967
18968 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18969
18970 /*-------------------------------------------------------------------------
18971 Extract response and send it to UMAC
18972 -------------------------------------------------------------------------*/
18973 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018975
18976 /*Notify UMAC*/
18977 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18978
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018980}/*WDI_ProcessHostOffloadRsp*/
18981
18982/**
18983 @brief Process keep alive Rsp function (called when a
18984 response is being received over the bus 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_ProcessKeepAliveRsp
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_KeepAliveCb wdiKeepAliveCb;
19002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19004 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19005
19006
19007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 -------------------------------------------------------------------------*/
19010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19011 ( NULL == pEventData->pEventData))
19012 {
19013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 }
19018
Jeff Johnsone7245742012-09-05 17:12:55 -070019019 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19020
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 /*-------------------------------------------------------------------------
19022 Extract response and send it to UMAC
19023 -------------------------------------------------------------------------*/
19024 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019026
19027 /*Notify UMAC*/
19028 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19029
Jeff Johnsone7245742012-09-05 17:12:55 -070019030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019031}/*WDI_ProcessKeepAliveRsp*/
19032
19033/**
19034 @brief Process wowl add ptrn Rsp function (called when a
19035 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019036
19037 @param pWDICtx: pointer to the WLAN DAL context
19038 pEventData: pointer to the event information structure
19039
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 @see
19041 @return Result of the function call
19042*/
19043WDI_Status
19044WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019045(
Jeff Johnson295189b2012-06-20 16:38:30 -070019046 WDI_ControlBlockType* pWDICtx,
19047 WDI_EventInfoType* pEventData
19048)
19049{
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 eHalStatus halStatus;
19051 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019052 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19053 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19054
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19056
19057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019059 -------------------------------------------------------------------------*/
19060 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19061 ( NULL == pEventData->pEventData))
19062 {
19063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 }
19068
19069 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19070
19071 /*-------------------------------------------------------------------------
19072 Extract response and send it to UMAC
19073 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019074 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19075 {
19076 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19077 pEventData->pEventData,
19078 sizeof(halAddWowlBcastPtrRsp));
19079
19080 wdiWowlAddBcPtrRsp.wdiStatus =
19081 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19082 }
19083 else
19084 {
19085 halStatus = *((eHalStatus*)pEventData->pEventData);
19086 wdiWowlAddBcPtrRsp.wdiStatus =
19087 WDI_HAL_2_WDI_STATUS(halStatus);
19088 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019089
19090 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019091 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019092
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019094}/*WDI_ProcessWowlAddBcPtrnRsp*/
19095
19096/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019099
19100 @param pWDICtx: pointer to the WLAN DAL context
19101 pEventData: pointer to the event information structure
19102
Jeff Johnson295189b2012-06-20 16:38:30 -070019103 @see
19104 @return Result of the function call
19105*/
19106WDI_Status
19107WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019108(
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 WDI_ControlBlockType* pWDICtx,
19110 WDI_EventInfoType* pEventData
19111)
19112{
Jeff Johnson295189b2012-06-20 16:38:30 -070019113 eHalStatus halStatus;
19114 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019115 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19116 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19118
19119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 -------------------------------------------------------------------------*/
19122 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19123 ( NULL == pEventData->pEventData))
19124 {
19125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 }
19130
19131 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19132
19133 /*-------------------------------------------------------------------------
19134 Extract response and send it to UMAC
19135 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019136 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19137 {
19138 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19139 pEventData->pEventData,
19140 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019141
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019142 wdiWowlDelBcstPtrRsp.wdiStatus =
19143 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19144 }
19145 else
19146 {
19147 halStatus = *((eHalStatus*)pEventData->pEventData);
19148 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19149 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019150 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019151 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019152
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019154}/*WDI_ProcessWowlDelBcPtrnRsp*/
19155
19156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019159
19160 @param pWDICtx: pointer to the WLAN DAL context
19161 pEventData: pointer to the event information structure
19162
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 @see
19164 @return Result of the function call
19165*/
19166WDI_Status
19167WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019168(
Jeff Johnson295189b2012-06-20 16:38:30 -070019169 WDI_ControlBlockType* pWDICtx,
19170 WDI_EventInfoType* pEventData
19171)
19172{
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 eHalStatus halStatus;
19174 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019175 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19176 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19178
19179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019181 -------------------------------------------------------------------------*/
19182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19183 ( NULL == pEventData->pEventData))
19184 {
19185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 }
19190
19191 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19192
19193 /*-------------------------------------------------------------------------
19194 Extract response and send it to UMAC
19195 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019196 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19197 {
19198 wpalMemoryCopy( &halEnterWowlRspParams,
19199 (wpt_uint8*)pEventData->pEventData,
19200 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019202 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19203 wdiwowlEnterRsp.status =
19204 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19205 }
19206 else
19207 {
19208 halStatus = *((eHalStatus*)pEventData->pEventData);
19209 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19210 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019212 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019213
Jeff Johnsone7245742012-09-05 17:12:55 -070019214 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019215}/*WDI_ProcessWowlEnterRsp*/
19216
19217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019220
19221 @param pWDICtx: pointer to the WLAN DAL context
19222 pEventData: pointer to the event information structure
19223
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 @see
19225 @return Result of the function call
19226*/
19227WDI_Status
19228WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019229(
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_ControlBlockType* pWDICtx,
19231 WDI_EventInfoType* pEventData
19232)
19233{
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 eHalStatus halStatus;
19235 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019236 tHalExitWowlRspParams halExitWowlRspParams;
19237 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19238
Jeff Johnson295189b2012-06-20 16:38:30 -070019239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19240
19241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 -------------------------------------------------------------------------*/
19244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19245 ( NULL == pEventData->pEventData))
19246 {
19247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019251 }
19252
19253 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19254
19255 /*-------------------------------------------------------------------------
19256 Extract response and send it to UMAC
19257 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019258 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19259 {
19260 wpalMemoryCopy( &halExitWowlRspParams,
19261 pEventData->pEventData,
19262 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019263
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019264 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19265 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19266
19267 }
19268 else
19269 {
19270 halStatus = *((eHalStatus*)pEventData->pEventData);
19271 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19272 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019273 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019274 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019275
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019277}/*WDI_ProcessWowlExitRsp*/
19278
19279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019280 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 (called when a response is being received over the bus
19282 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019283
19284 @param pWDICtx: pointer to the WLAN DAL context
19285 pEventData: pointer to the event information structure
19286
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 @see
19288 @return Result of the function call
19289*/
19290WDI_Status
19291WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019292(
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 WDI_ControlBlockType* pWDICtx,
19294 WDI_EventInfoType* pEventData
19295)
19296{
19297 WDI_Status wdiStatus;
19298 eHalStatus halStatus;
19299 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19301
19302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019304 -------------------------------------------------------------------------*/
19305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19306 ( NULL == pEventData->pEventData))
19307 {
19308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 }
19313
19314 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19315
19316 /*-------------------------------------------------------------------------
19317 Extract response and send it to UMAC
19318 -------------------------------------------------------------------------*/
19319 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019321
19322 /*Notify UMAC*/
19323 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19324
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019326}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19327
19328
19329/**
19330 @brief Process Nv download(called when a response
19331 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019332
19333 @param pWDICtx: pointer to the WLAN DAL context
19334 pEventData: pointer to the event information structure
19335
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 @see
19337 @return Result of the function call
19338*/
19339WDI_Status
19340WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019341(
Jeff Johnson295189b2012-06-20 16:38:30 -070019342 WDI_ControlBlockType* pWDICtx,
19343 WDI_EventInfoType* pEventData
19344)
19345{
19346
19347 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19348 tHalNvImgDownloadRspParams halNvDownloadRsp;
19349 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19350
19351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 -------------------------------------------------------------------------*/
19354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19355 ( NULL == pEventData->pEventData))
19356 {
19357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019361 }
19362
19363 /*-------------------------------------------------------------------------
19364 Extract response and send it to UMAC
19365 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019366 wpalMemoryCopy( &halNvDownloadRsp,
19367 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 sizeof(halNvDownloadRsp));
19369
19370 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19371
19372 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19374 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 {
19376 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 }
19379 else
19380 {
19381 /*Reset the Nv related global information in WDI context information */
19382 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19383 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19384 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19385 /*call WDA callback function for last fragment */
19386 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19387 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19388 }
19389
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019391}
19392#ifdef WLAN_FEATURE_VOWIFI_11R
19393/**
19394 @brief Process Add TSpec Rsp function (called when a response
19395 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019396
19397 @param pWDICtx: pointer to the WLAN DAL context
19398 pEventData: pointer to the event information structure
19399
Jeff Johnson295189b2012-06-20 16:38:30 -070019400 @see
19401 @return Result of the function call
19402*/
19403WDI_Status
19404WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019405(
Jeff Johnson295189b2012-06-20 16:38:30 -070019406 WDI_ControlBlockType* pWDICtx,
19407 WDI_EventInfoType* pEventData
19408)
19409{
19410 WDI_Status wdiStatus;
19411 tAggrAddTsRspParams aggrAddTsRsp;
19412 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19414
19415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019417 -------------------------------------------------------------------------*/
19418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19419 ( NULL == pEventData->pEventData))
19420 {
19421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 }
19426
19427 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19428
19429 /*-------------------------------------------------------------------------
19430 Extract response and send it to UMAC
19431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019432 wpalMemoryCopy( &aggrAddTsRsp,
19433 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019434 sizeof(aggrAddTsRsp));
19435
19436 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019438
19439 /*Notify UMAC*/
19440 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19441
Jeff Johnsone7245742012-09-05 17:12:55 -070019442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019443}/*WDI_ProcessAddTSpecRsp*/
19444#endif /* WLAN_FEATURE_VOWIFI_11R */
19445
19446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019447 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019449
19450 @param pWDICtx: pointer to the WLAN DAL context
19451 pEventData: pointer to the event information structure
19452
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 @see
19454 @return Result of the function call
19455*/
19456WDI_Status
19457WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019458(
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 WDI_ControlBlockType* pWDICtx,
19460 WDI_EventInfoType* pEventData
19461)
19462{
19463 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19464 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19465 tHalHostResumeRspParams hostResumeRspMsg;
19466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19467
19468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 -------------------------------------------------------------------------*/
19471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19472 ( NULL == pEventData->pEventData))
19473 {
19474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 }
19479
19480 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19481
19482 /*-------------------------------------------------------------------------
19483 Extract response and send it to UMAC
19484 -------------------------------------------------------------------------*/
19485
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019487 (wpt_uint8*)pEventData->pEventData,
19488 sizeof(hostResumeRspMsg));
19489
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 wdiResumeRspParams.wdiStatus =
19491 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019492
19493 /*Notify UMAC*/
19494 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19495
19496 return WDI_STATUS_SUCCESS;
19497}
19498
19499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019502
19503 @param pWDICtx: pointer to the WLAN DAL context
19504 pEventData: pointer to the event information structure
19505
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 @see
19507 @return Result of the function call
19508*/
19509WDI_Status
19510WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019511(
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 WDI_ControlBlockType* pWDICtx,
19513 WDI_EventInfoType* pEventData
19514)
19515{
19516 WDI_Status wdiStatus;
19517 eHalStatus halStatus;
19518 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19520
19521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 -------------------------------------------------------------------------*/
19524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19525 ( NULL == pEventData->pEventData))
19526 {
19527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019532
19533 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019534
19535 /*-------------------------------------------------------------------------
19536 Extract response and send it to UMAC
19537 -------------------------------------------------------------------------*/
19538 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019539 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019540
19541 /*Notify UMAC*/
19542 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19543
Jeff Johnsone7245742012-09-05 17:12:55 -070019544 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019545}/*WDI_ProcessSetTxPerTrackingRsp*/
19546
19547/*==========================================================================
19548 Indications from HAL
19549 ==========================================================================*/
19550/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 indication of this kind is being received over the bus
19553 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019554
19555 @param pWDICtx: pointer to the WLAN DAL context
19556 pEventData: pointer to the event information structure
19557
Jeff Johnson295189b2012-06-20 16:38:30 -070019558 @see
19559 @return Result of the function call
19560*/
19561WDI_Status
19562WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019563(
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 WDI_ControlBlockType* pWDICtx,
19565 WDI_EventInfoType* pEventData
19566)
19567{
19568 WDI_LowLevelIndType wdiInd;
19569 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19571
19572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 -------------------------------------------------------------------------*/
19575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19576 ( NULL == pEventData->pEventData))
19577 {
19578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 }
19583
19584 /*-------------------------------------------------------------------------
19585 Extract indication and send it to UMAC
19586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19588 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 sizeof(tHalRSSINotification));
19590
19591 /*Fill in the indication parameters*/
19592 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19593 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19594 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19595 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19596 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19597 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19598 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19599 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19600 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19601 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19602 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19603 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19604 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080019605 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19606 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019607
ltimariub77f24b2013-01-24 18:54:33 -080019608 if ( pWDICtx->wdiLowLevelIndCB )
19609 {
19610 /*Notify UMAC of indication*/
19611 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19612 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019613
19614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019615}/*WDI_ProcessLowRSSIInd*/
19616
19617
19618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 an indication of this kind is being received over the
19621 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019622
19623 @param pWDICtx: pointer to the WLAN DAL context
19624 pEventData: pointer to the event information structure
19625
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 @see
19627 @return Result of the function call
19628*/
19629WDI_Status
19630WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019631(
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 WDI_ControlBlockType* pWDICtx,
19633 WDI_EventInfoType* pEventData
19634)
19635{
19636 WDI_Status wdiStatus;
19637 eHalStatus halStatus;
19638 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019639 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19641
19642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 -------------------------------------------------------------------------*/
19645 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19646 ( NULL == pEventData->pEventData))
19647 {
19648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019653 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 /*-------------------------------------------------------------------------
19655 Extract indication and send it to UMAC
19656 -------------------------------------------------------------------------*/
19657 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19658 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019659 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019660
19661 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019663 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19664 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080019665 if ( pWDICtx->wdiLowLevelIndCB )
19666 {
19667 /*Notify UMAC*/
19668 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19669 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019670
19671 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019672}/*WDI_ProcessMissedBeaconInd*/
19673
19674
19675/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 an indication of this kind is being received over the
19678 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019679
19680 @param pWDICtx: pointer to the WLAN DAL context
19681 pEventData: pointer to the event information structure
19682
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 @see
19684 @return Result of the function call
19685*/
19686WDI_Status
19687WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019688(
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 WDI_ControlBlockType* pWDICtx,
19690 WDI_EventInfoType* pEventData
19691)
19692{
19693 WDI_Status wdiStatus;
19694 eHalStatus halStatus;
19695 WDI_LowLevelIndType wdiInd;
19696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19697
19698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 -------------------------------------------------------------------------*/
19701 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19702 ( NULL == pEventData->pEventData))
19703 {
19704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019705 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 }
19709
19710 /*-------------------------------------------------------------------------
19711 Extract indication and send it to UMAC
19712 -------------------------------------------------------------------------*/
19713 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19714 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019716
19717 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019718 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 /* ! TO DO - fill in from HAL struct:
19720 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19721
ltimariub77f24b2013-01-24 18:54:33 -080019722 if ( pWDICtx->wdiLowLevelIndCB )
19723 {
19724 /*Notify UMAC*/
19725 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19726 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019727
19728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019729}/*WDI_ProcessUnkAddrFrameInd*/
19730
19731
19732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 indication of this kind is being received over the bus
19735 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019736
19737 @param pWDICtx: pointer to the WLAN DAL context
19738 pEventData: pointer to the event information structure
19739
Jeff Johnson295189b2012-06-20 16:38:30 -070019740 @see
19741 @return Result of the function call
19742*/
19743WDI_Status
19744WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019745(
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 WDI_ControlBlockType* pWDICtx,
19747 WDI_EventInfoType* pEventData
19748)
19749{
19750 WDI_LowLevelIndType wdiInd;
19751 tpSirMicFailureInd pHalMicFailureInd;
19752
19753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19754
19755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 -------------------------------------------------------------------------*/
19758 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19759 ( NULL == pEventData->pEventData))
19760 {
19761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019766
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19768 /*-------------------------------------------------------------------------
19769 Extract indication and send it to UMAC
19770 -------------------------------------------------------------------------*/
19771
19772 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019773 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19775 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19776 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19777 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19778 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19779 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19780 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19781 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019782 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019786 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 pHalMicFailureInd->info.keyId;
19788 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19789 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19790 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19791 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080019792
19793 if ( pWDICtx->wdiLowLevelIndCB )
19794 {
19795 /*Notify UMAC*/
19796 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19797 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019798
19799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019800}/*WDI_ProcessMicFailureInd*/
19801
19802
19803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019804 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 an indication of this kind is being received over the
19806 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019807
19808 @param pWDICtx: pointer to the WLAN DAL context
19809 pEventData: pointer to the event information structure
19810
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 @see
19812 @return Result of the function call
19813*/
19814WDI_Status
19815WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019816(
Jeff Johnson295189b2012-06-20 16:38:30 -070019817 WDI_ControlBlockType* pWDICtx,
19818 WDI_EventInfoType* pEventData
19819)
19820{
19821 WDI_Status wdiStatus;
19822 eHalStatus halStatus;
19823 WDI_LowLevelIndType wdiInd;
19824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19825
19826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 -------------------------------------------------------------------------*/
19829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19830 ( NULL == pEventData->pEventData))
19831 {
19832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 }
19837
19838 /*-------------------------------------------------------------------------
19839 Extract indication and send it to UMAC
19840 -------------------------------------------------------------------------*/
19841
19842 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19843 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019844 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019845
19846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19847 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019848
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019850 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19851 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019852
ltimariub77f24b2013-01-24 18:54:33 -080019853 if ( pWDICtx->wdiLowLevelIndCB )
19854 {
19855 /*Notify UMAC*/
19856 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19857 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019858
19859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019860}/*WDI_ProcessFatalErrorInd*/
19861
19862/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019863 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 an indication of this kind is being received over the
19865 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019866
19867 @param pWDICtx: pointer to the WLAN DAL context
19868 pEventData: pointer to the event information structure
19869
Jeff Johnson295189b2012-06-20 16:38:30 -070019870 @see
19871 @return Result of the function call
19872*/
19873WDI_Status
19874WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019875(
Jeff Johnson295189b2012-06-20 16:38:30 -070019876 WDI_ControlBlockType* pWDICtx,
19877 WDI_EventInfoType* pEventData
19878)
19879{
19880 tDeleteStaContextParams halDelSTACtx;
19881 WDI_LowLevelIndType wdiInd;
19882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19883
19884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019886 -------------------------------------------------------------------------*/
19887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19888 ( NULL == pEventData->pEventData))
19889 {
19890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 }
19895
19896 /*-------------------------------------------------------------------------
19897 Extract indication and send it to UMAC
19898 -------------------------------------------------------------------------*/
19899
19900 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019901 wpalMemoryCopy( &halDelSTACtx,
19902 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019903 sizeof(halDelSTACtx));
19904
19905 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019907
19908 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19909 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19910 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19911 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19912
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019917 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19918 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019919
ltimariub77f24b2013-01-24 18:54:33 -080019920 if ( pWDICtx->wdiLowLevelIndCB )
19921 {
19922 /*Notify UMAC*/
19923 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19924 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019925
19926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019927}/*WDI_ProcessDelSTAInd*/
19928
19929/**
19930*@brief Process Coex Indication function (called when
19931 an indication of this kind is being received over the
19932 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019933
19934 @param pWDICtx: pointer to the WLAN DAL context
19935 pEventData: pointer to the event information structure
19936
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 @see
19938 @return Result of the function call
19939*/
19940WDI_Status
19941WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019942(
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 WDI_ControlBlockType* pWDICtx,
19944 WDI_EventInfoType* pEventData
19945)
19946{
19947 WDI_LowLevelIndType wdiInd;
19948 tCoexIndMsg halCoexIndMsg;
19949 wpt_uint32 index;
19950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19951
19952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019954 -------------------------------------------------------------------------*/
19955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19956 ( NULL == pEventData->pEventData ))
19957 {
19958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 }
19963
19964 /*-------------------------------------------------------------------------
19965 Extract indication and send it to UMAC
19966 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019967 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19968 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 sizeof(halCoexIndMsg.coexIndParams) );
19970
19971 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 wdiInd.wdiIndicationType = WDI_COEX_IND;
19973 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19975 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 }
19978
19979 // DEBUG
19980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19981 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19983 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19984 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19985 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19986 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019987
ltimariub77f24b2013-01-24 18:54:33 -080019988 if ( pWDICtx->wdiLowLevelIndCB )
19989 {
19990 /*Notify UMAC*/
19991 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19992 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019993
19994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019995}/*WDI_ProcessCoexInd*/
19996
19997/**
19998*@brief Process Tx Complete Indication function (called when
19999 an indication of this kind is being received over the
20000 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020001
20002 @param pWDICtx: pointer to the WLAN DAL context
20003 pEventData: pointer to the event information structure
20004
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 @see
20006 @return Result of the function call
20007*/
20008WDI_Status
20009WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020010(
Jeff Johnson295189b2012-06-20 16:38:30 -070020011 WDI_ControlBlockType* pWDICtx,
20012 WDI_EventInfoType* pEventData
20013)
20014{
20015 WDI_LowLevelIndType wdiInd;
20016 tTxComplIndMsg halTxComplIndMsg;
20017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20018
20019 /*-------------------------------------------------------------------------
20020 Sanity check
20021 -------------------------------------------------------------------------*/
20022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20023 ( NULL == pEventData->pEventData ))
20024 {
20025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 WDI_ASSERT( 0 );
20028 return WDI_STATUS_E_FAILURE;
20029 }
20030
20031 /*-------------------------------------------------------------------------
20032 Extract indication and send it to UMAC
20033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20035 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 sizeof(halTxComplIndMsg.txComplParams) );
20037
20038 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020039 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20040 wdiInd.wdiIndicationData.tx_complete_status
20041 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020042
ltimariub77f24b2013-01-24 18:54:33 -080020043 if ( pWDICtx->wdiLowLevelIndCB )
20044 {
20045 /*Notify UMAC*/
20046 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20047 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020048
20049 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020050}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020051#ifdef FEATURE_WLAN_TDLS
20052/**
20053*@brief Process TDLS Indication function (called when
20054 an indication of this kind is being received over the
20055 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020056
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020057 @param pWDICtx: pointer to the WLAN DAL context
20058 pEventData: pointer to the event information structure
20059
20060 @see
20061 @return Result of the function call
20062*/
20063WDI_Status
20064WDI_ProcessTdlsInd
20065(
20066 WDI_ControlBlockType* pWDICtx,
20067 WDI_EventInfoType* pEventData
20068)
20069{
20070 WDI_LowLevelIndType wdiInd;
20071 tTdlsIndMsg halTdlsIndMsg;
20072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20073
20074 /*-------------------------------------------------------------------------
20075 Sanity check
20076 -------------------------------------------------------------------------*/
20077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20078 ( NULL == pEventData->pEventData ))
20079 {
20080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20081 "%s: Invalid parameters", __func__);
20082 WDI_ASSERT( 0 );
20083 return WDI_STATUS_E_FAILURE;
20084 }
20085
20086 /*-------------------------------------------------------------------------
20087 Extract indication and send it to UMAC
20088 -------------------------------------------------------------------------*/
20089 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20090 pEventData->pEventData,
20091 sizeof(halTdlsIndMsg.tdlsIndParams) );
20092
20093 /*Fill in the indication parameters*/
20094 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20095
20096 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20097 = halTdlsIndMsg.tdlsIndParams.status;
20098
20099 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20100 = halTdlsIndMsg.tdlsIndParams.staIdx;
20101
20102 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20103 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20104
20105 /*Notify UMAC*/
20106 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20107
20108 return WDI_STATUS_SUCCESS;
20109}/*WDI_ProcessTdlsInd*/
20110#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020111/**
Viral Modid86bde22012-12-10 13:09:21 -080020112*@brief Process Noa Start Indication function (called when
20113 an indication of this kind is being received over the
20114 bus from HAL)
20115
20116 @param pWDICtx: pointer to the WLAN DAL context
20117 pEventData: pointer to the event information structure
20118
20119 @see
20120 @return Result of the function call
20121*/
20122WDI_Status
20123WDI_ProcessP2pNoaStartInd
20124(
20125 WDI_ControlBlockType* pWDICtx,
20126 WDI_EventInfoType* pEventData
20127)
20128{
20129 WDI_LowLevelIndType wdiInd;
20130 tNoaStartIndMsg halNoaStartIndMsg;
20131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20132
20133 /*-------------------------------------------------------------------------
20134 Sanity check
20135 -------------------------------------------------------------------------*/
20136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20137 ( NULL == pEventData->pEventData ))
20138 {
20139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20140 "%s: Invalid parameters", __func__);
20141 WDI_ASSERT( 0 );
20142 return WDI_STATUS_E_FAILURE;
20143 }
20144
20145 /*-------------------------------------------------------------------------
20146 Extract indication and send it to UMAC
20147 -------------------------------------------------------------------------*/
20148 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20149 pEventData->pEventData,
20150 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20151
20152 /*Fill in the indication parameters*/
20153 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20154
20155 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20156 = halNoaStartIndMsg.noaStartIndParams.status;
20157
20158 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20159 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20160
20161 /*Notify UMAC*/
20162 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20163
20164 return WDI_STATUS_SUCCESS;
20165}/*WDI_ProcessNoaAttrInd*/
20166
20167/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020168*@brief Process Noa Attr Indication function (called when
20169 an indication of this kind is being received over the
20170 bus from HAL)
20171
20172 @param pWDICtx: pointer to the WLAN DAL context
20173 pEventData: pointer to the event information structure
20174
20175 @see
20176 @return Result of the function call
20177*/
20178WDI_Status
20179WDI_ProcessP2pNoaAttrInd
20180(
20181 WDI_ControlBlockType* pWDICtx,
20182 WDI_EventInfoType* pEventData
20183)
20184{
20185 WDI_LowLevelIndType wdiInd;
20186 tNoaAttrIndMsg halNoaAttrIndMsg;
20187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20188
20189 /*-------------------------------------------------------------------------
20190 Sanity check
20191 -------------------------------------------------------------------------*/
20192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20193 ( NULL == pEventData->pEventData ))
20194 {
20195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020197 WDI_ASSERT( 0 );
20198 return WDI_STATUS_E_FAILURE;
20199 }
20200
20201 /*-------------------------------------------------------------------------
20202 Extract indication and send it to UMAC
20203 -------------------------------------------------------------------------*/
20204 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20205 pEventData->pEventData,
20206 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20207
20208 /*Fill in the indication parameters*/
20209 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020210
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20212 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020213
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20215 = halNoaAttrIndMsg.noaAttrIndParams.index;
20216 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20217 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20218 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20219 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020220
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20222 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20223 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20224 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20225 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20226 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20227 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20228 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020229
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20231 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20232 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20233 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20234 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20235 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20236 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20237 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20238
ltimariub77f24b2013-01-24 18:54:33 -080020239 if ( pWDICtx->wdiLowLevelIndCB )
20240 {
20241 /*Notify UMAC*/
20242 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20243 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020244
20245 return WDI_STATUS_SUCCESS;
20246}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020247
20248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 an indication of this kind is being received over the
20251 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020252
20253 @param pWDICtx: pointer to the WLAN DAL context
20254 pEventData: pointer to the event information structure
20255
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 @see
20257 @return Result of the function call
20258*/
20259WDI_Status
20260WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020261(
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 WDI_ControlBlockType* pWDICtx,
20263 WDI_EventInfoType* pEventData
20264)
20265{
20266 WDI_LowLevelIndType wdiInd;
20267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020268
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 /*-------------------------------------------------------------------------
20270 Extract indication and send it to UMAC
20271 -------------------------------------------------------------------------*/
20272 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20274
ltimariub77f24b2013-01-24 18:54:33 -080020275 if ( pWDICtx->wdiLowLevelIndCB )
20276 {
20277 /*Notify UMAC*/
20278 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20279 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020280
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020282}/*WDI_ProcessTxPerHitInd*/
20283
Jeff Johnson295189b2012-06-20 16:38:30 -070020284/**
Yue Mab9c86f42013-08-14 15:59:08 -070020285 @brief Process Periodic Tx Pattern Fw Indication function
20286
20287 @param pWDICtx: pointer to the WLAN DAL context
20288 pEventData: pointer to the event information structure
20289
20290 @see
20291 @return Result of the function call
20292*/
20293WDI_Status
20294WDI_ProcessPeriodicTxPtrnFwInd
20295(
20296 WDI_ControlBlockType* pWDICtx,
20297 WDI_EventInfoType* pEventData
20298)
20299{
20300 WDI_LowLevelIndType wdiInd;
20301
20302 /*-------------------------------------------------------------------------
20303 Sanity check
20304 -------------------------------------------------------------------------*/
20305 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20306 (NULL == pEventData->pEventData))
20307 {
20308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20309 "%s: Invalid parameters", __func__);
20310 WDI_ASSERT(0);
20311 return WDI_STATUS_E_FAILURE;
20312 }
20313
20314 /*-------------------------------------------------------------------------
20315 Extract indication and send it to UMAC
20316 -------------------------------------------------------------------------*/
20317 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20318 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20319 sizeof(tHalPeriodicTxPtrnFwInd));
20320
20321 if (pWDICtx->wdiLowLevelIndCB)
20322 {
20323 /*Notify UMAC*/
20324 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20325 }
20326
20327 return WDI_STATUS_SUCCESS;
20328}
20329
20330/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 @brief WDI_ProcessFTMCommandReq
20332 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020333
20334 @param pWDICtx: pointer to the WLAN DAL context
20335 pEventData: pointer to the event information structure
20336
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 @see
20338 @return Result of the function call
20339*/
20340WDI_Status
20341WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020342(
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 WDI_ControlBlockType* pWDICtx,
20344 WDI_EventInfoType* pEventData
20345)
20346{
20347 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20348 wpt_uint8 *ftmCommandBuffer = NULL;
20349 wpt_uint16 dataOffset;
20350 wpt_uint16 bufferSize;
20351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 -------------------------------------------------------------------------*/
20354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20355 ( NULL == pEventData->pEventData))
20356
20357 {
20358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 }
20363
20364 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20365
20366 /* Get MSG Buffer */
20367 WDI_GetMessageBuffer(pWDICtx,
20368 WDI_FTM_CMD_REQ,
20369 ftmCommandReq->bodyLength,
20370 &ftmCommandBuffer,
20371 &dataOffset,
20372 &bufferSize);
20373
20374 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20375 ftmCommandReq->FTMCommandBody,
20376 ftmCommandReq->bodyLength);
20377
20378 /* Send MSG */
20379 return WDI_SendMsg(pWDICtx,
20380 ftmCommandBuffer,
20381 bufferSize,
20382 pEventData->pCBfnc,
20383 pEventData->pUserData,
20384 WDI_FTM_CMD_RESP);
20385}
20386
20387/**
20388 @brief WDI_ProcessFTMCommandRsp
20389 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020390
20391 @param pWDICtx: pointer to the WLAN DAL context
20392 pEventData: pointer to the event information structure
20393
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 @see
20395 @return Result of the function call
20396*/
20397WDI_Status
20398WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020399(
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 WDI_ControlBlockType* pWDICtx,
20401 WDI_EventInfoType* pEventData
20402)
20403{
20404 WDI_FTMCommandRspCb ftmCMDRspCb;
20405 tProcessPttRspParams *ftmCMDRspData = NULL;
20406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20407
20408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020410 -------------------------------------------------------------------------*/
20411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20412 ( NULL == pEventData->pEventData))
20413 {
20414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 }
20419
20420 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20421
20422 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20423
Jeff Johnsone7245742012-09-05 17:12:55 -070020424 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20425 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20427
20428 /*Notify UMAC*/
20429 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20430
Jeff Johnsone7245742012-09-05 17:12:55 -070020431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020432}
Jeff Johnson295189b2012-06-20 16:38:30 -070020433/**
20434 @brief WDI_ProcessHalDumpCmdReq
20435 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020436
20437 @param pWDICtx: pointer to the WLAN DAL context
20438 pEventData: pointer to the event information structure
20439
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 @see
20441 @return Result of the function call
20442*/
20443WDI_Status
20444WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020445(
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 WDI_ControlBlockType* pWDICtx,
20447 WDI_EventInfoType* pEventData
20448)
20449{
20450 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20451 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20452 wpt_uint16 usDataOffset = 0;
20453 wpt_uint16 usSendSize = 0;
20454 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020456
20457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 -------------------------------------------------------------------------*/
20460 if (( NULL == pEventData ) ||
20461 ( NULL == pEventData->pEventData) ||
20462 ( NULL == pEventData->pCBfnc ))
20463 {
20464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 }
20469
20470 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20471 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20472
20473 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020474 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020475 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020478 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020484
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 /*-----------------------------------------------------------------------
20486 Get message buffer
20487 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20490 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20493 {
20494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20495 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20496 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 }
20500
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 wpalMemoryCopy( pSendBuffer+usDataOffset,
20502 &halDumpCmdReqMsg.dumpCmdReqParams,
20503 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020504
20505 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020507
20508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20512 wdiHALDumpCmdRspCb, pEventData->pUserData,
20513 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020514}
20515
20516/**
20517 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 Process hal Dump Command Response from HAL, simply route to HDD
20519
20520 @param pWDICtx: pointer to the WLAN DAL context
20521 pEventData: pointer to the event information structure
20522
Jeff Johnson295189b2012-06-20 16:38:30 -070020523 @see
20524 @return Result of the function call
20525*/
20526WDI_Status
20527WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020528(
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 WDI_ControlBlockType* pWDICtx,
20530 WDI_EventInfoType* pEventData
20531)
20532{
20533 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020534 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20536
20537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 -------------------------------------------------------------------------*/
20540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20541 ( NULL == pEventData->pEventData))
20542 {
20543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 }
20548
Jeff Johnsone7245742012-09-05 17:12:55 -070020549 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020550
20551 /*Initialize the WDI Response structure */
20552 wdiHALDumpCmdRsp.usBufferLen = 0;
20553 wdiHALDumpCmdRsp.pBuffer = NULL;
20554
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020555 wpalMemoryCopy( &halDumpCmdRspParams,
20556 pEventData->pEventData,
20557 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020558
20559 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020560 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020561
20562 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020563 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 {
20565 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020566 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20567 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20568
20569 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20570 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053020571 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020573
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 /*Notify UMAC*/
20575 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20576
20577 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20578 {
20579 /* Free the allocated buffer */
20580 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20581 }
20582 return WDI_STATUS_SUCCESS;
20583}
20584
20585/*==========================================================================
20586 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020587
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020589 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020590==========================================================================*/
20591/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020592 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020593 when it wishes to send up a notification like the ones
20594 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020595
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020597
20598 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020600 wctsNotifyCBData: the callback data of the user
20601
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020603
20604 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020605*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020606void
Jeff Johnson295189b2012-06-20 16:38:30 -070020607WDI_NotifyMsgCTSCB
20608(
Jeff Johnsone7245742012-09-05 17:12:55 -070020609 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 WCTS_NotifyEventType wctsEvent,
20611 void* wctsNotifyCBData
20612)
20613{
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20616
20617 if (NULL == pWDICtx )
20618 {
20619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 }
20624
20625 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20626 {
20627 /* callback presumably occurred after close */
20628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020629 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020630 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020631 }
20632
20633 if ( WCTS_EVENT_OPEN == wctsEvent )
20634 {
20635 /*Flag must be set atomically as it is checked from incoming request
20636 functions*/
20637 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020639
20640 /*Nothing to do - so try to dequeue any pending request that may have
20641 occurred while we were trying to establish this*/
20642 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 {
20647 /*Flag must be set atomically as it is checked from incoming request
20648 functions*/
20649 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020651
20652 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020653 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 wpalMutexRelease(&pWDICtx->wptMutex);
20655
20656 /*Notify that the Control Channel is closed */
20657 wpalEventSet(&pWDICtx->wctsActionEvent);
20658 }
20659
20660}/*WDI_NotifyMsgCTSCB*/
20661
20662
20663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 when it wishes to send up a packet received over the
20666 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020667
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020669
20670 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 pMsg: the packet
20672 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 wctsRxMsgCBData: the callback data of the user
20674
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020676
20677 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020678*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020679void
20680WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020681(
Jeff Johnsone7245742012-09-05 17:12:55 -070020682 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020683 void* pMsg,
20684 wpt_uint32 uLen,
20685 void* wctsRxMsgCBData
20686)
20687{
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 tHalMsgHeader *pHalMsgHeader;
20689 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20692
20693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 ( uLen < sizeof(tHalMsgHeader)))
20698 {
20699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020702 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 }
20704
20705 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20706 {
20707 /* callback presumably occurred after close */
20708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020709 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 }
20712
Jeff Johnsone7245742012-09-05 17:12:55 -070020713 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 context - so no serialization is necessary here
20715 ! - revisit this assumption */
20716
20717 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20718
20719 if ( uLen != pHalMsgHeader->msgLen )
20720 {
20721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20722 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20724 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 }
20726
20727 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20728
20729 /*The message itself starts after the header*/
20730 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20731 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20732 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20733 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20734
20735
20736 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20737 {
20738 /*Stop the timer as the response was received */
20739 /*!UT - check for potential race conditions between stop and response */
20740 wpalTimerStop(&pWDICtx->wptResponseTimer);
20741 }
20742 /* Check if we receive a response message which is not expected */
20743 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20744 {
20745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20746 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20747 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20750 pWDICtx->wdiExpectedResponse);
20751 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa64eae792013-08-29 15:27:56 -070020752 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 return;
20754 }
20755
20756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20757 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20758
20759 /*Post response event to the state machine*/
20760 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20761
20762}/*WDI_RXMsgCTSCB*/
20763
20764
20765/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020767========================================================================*/
20768
20769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020772
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 @param pWDICtx - pointer to the control block
20774
20775 @return Result of the function call
20776*/
20777WPT_INLINE WDI_Status
20778WDI_CleanCB
20779(
20780 WDI_ControlBlockType* pWDICtx
20781)
20782{
20783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20784
20785 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020787
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20790 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20791
20792 WDI_ResetAssocSessions( pWDICtx );
20793
20794 return WDI_STATUS_SUCCESS;
20795}/*WDI_CleanCB*/
20796
20797
20798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020800
Jeff Johnsone7245742012-09-05 17:12:55 -070020801
20802 @param pWDICtx: pointer to the WLAN DAL context
20803 pEventData: pointer to the event information structure
20804
Jeff Johnson295189b2012-06-20 16:38:30 -070020805 @see
20806 @return Result of the function call
20807*/
20808WPT_INLINE WDI_Status
20809WDI_ProcessRequest
20810(
20811 WDI_ControlBlockType* pWDICtx,
20812 WDI_EventInfoType* pEventData
20813)
20814{
20815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20816
Jeff Johnsone7245742012-09-05 17:12:55 -070020817 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 already checked these pointers*/
20819
20820 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20821 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020822 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20824 "Calling request processing function for req %s (%d) %x",
20825 WDI_getReqMsgString(pEventData->wdiRequest),
20826 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20827 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20828 }
20829 else
20830 {
20831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 pEventData->wdiRequest);
20834 return WDI_STATUS_E_NOT_IMPLEMENT;
20835 }
20836}/*WDI_ProcessRequest*/
20837
20838
20839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020840 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 prefixes it with a send message header
20843
20844 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 wdiReqType: type of the request being sent
20846 uBufferLen: message buffer len
20847 pMsgBuffer: resulting allocated buffer
20848 pusDataOffset: offset in the buffer where the caller
20849 can start copying its message data
20850 puBufferSize: the resulting buffer size (offset+buff
20851 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020852
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 @see
20854 @return Result of the function call
20855*/
20856WDI_Status
20857WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020858(
20859 WDI_ControlBlockType* pWDICtx,
20860 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 wpt_uint8** pMsgBuffer,
20863 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 wpt_uint16* pusBufferSize
20865)
20866{
20867 tHalMsgHeader halMsgHeader;
20868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20869
Jeff Johnsone7245742012-09-05 17:12:55 -070020870 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 again*/
20872
20873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20878 if ( NULL == *pMsgBuffer )
20879 {
20880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20881 "Unable to allocate message buffer for req %s (%d)",
20882 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020885 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 }
20887
20888 /*-------------------------------------------------------------------------
20889 Fill in the message header
20890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20892 /* Fill msgVersion */
20893#ifdef WLAN_FEATURE_11AC
20894 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020895 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020896 else
20897#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020898 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020899
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20901 *pusDataOffset = sizeof(halMsgHeader);
20902 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20903
20904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020905}/*WDI_GetMessageBuffer*/
20906
20907
20908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 the CB
20912
20913 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020915
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 usSendSize size of the buffer to be sent
20917 pRspCb: response callback - save in the WDI
20918 CB
20919 pUserData: user data associated with the
20920 callback
20921 wdiExpectedResponse: the code of the response that is
20922 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020923
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 @see
20925 @return Result of the function call
20926*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020927WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020928WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020929(
20930 WDI_ControlBlockType* pWDICtx,
20931 wpt_uint8* pSendBuffer,
20932 wpt_uint32 usSendSize,
20933 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020934 void* pUserData,
20935 WDI_ResponseEnumType wdiExpectedResponse
20936)
20937{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020938 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080020939 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20941
20942 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 ------------------------------------------------------------------------*/
20945 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020946 pWDICtx->pfncRspCB = pRspCb;
20947 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948
20949 /*-----------------------------------------------------------------------
20950 Call the CTS to send this message over - free message afterwards
20951 - notify transport failure
20952 Note: CTS is reponsible for freeing the message buffer.
20953 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080020954 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20955 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20956 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 "Failed to send message over the bus - catastrophic failure");
20960
Jeff Johnsond13512a2012-07-17 11:42:19 -070020961 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080020963 else
20964 {
20965 /* even when message was placed in CTS deferred Q, we will treat it
20966 success but log this info
20967 */
20968 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20969 {
20970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20971 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20972 "response %s (%d)",
20973 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20974 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080020975 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080020976 }
20977 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020978
Jeff Johnsond13512a2012-07-17 11:42:19 -070020979 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020980 if ( NULL != pWDICtx->wdiReqStatusCB )
20981 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020982 /*Inform originator whether request went through or not*/
20983 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20984 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 pWDICtx->wdiReqStatusCB = NULL;
20986 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020987 callback(wdiStatus, callbackContext);
20988
20989 /*For WDI requests which have registered a request callback,
20990 inform the WDA caller of the same via setting the return value
20991 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20992 end up repeating the functonality in the req callback for the
20993 WDI_STATUS_E_FAILURE case*/
20994 if (wdiStatus == WDI_STATUS_E_FAILURE)
20995 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 }
20997
Jeff Johnsond13512a2012-07-17 11:42:19 -070020998 if ( wdiStatus == WDI_STATUS_SUCCESS )
20999 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 /*Start timer for the expected response */
21001 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021002
21003 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021004 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021005 }
21006 else
21007 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021008 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021009 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021011
Jeff Johnsond13512a2012-07-17 11:42:19 -070021012 return wdiStatus;
21013
Jeff Johnson295189b2012-06-20 16:38:30 -070021014}/*WDI_SendMsg*/
21015
21016
21017
21018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 the bus using the control transport and saves some info
21021 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021022
21023 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 pSendBuffer: buffer to be sent
21025 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021026
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 @see
21028 @return Result of the function call
21029*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021031WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021032(
21033 WDI_ControlBlockType* pWDICtx,
21034 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 wpt_uint32 usSendSize
21036)
21037{
21038 wpt_uint32 uStatus ;
21039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21040
21041 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 Note: CTS is reponsible for freeing the message buffer.
21044 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021045 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021046 (void*)pSendBuffer, usSendSize );
21047
21048 /*Inform Upper MAC about the outcome of the request*/
21049 if ( NULL != pWDICtx->wdiReqStatusCB )
21050 {
21051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21052 "Send indication status : %d", uStatus);
21053
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021054 /* even if CTS placed indication into its deferred Q, we treat it
21055 * as success and let CTS drain its queue as per smd interrupt to CTS
21056 */
21057 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 -070021058 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 }
21060
21061 /*If sending of the message failed - it is considered catastrophic and
21062 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021063 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21064 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21065
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 {
21067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021069
21070 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21071 return WDI_STATUS_E_FAILURE;
21072 }
21073
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021075}/*WDI_SendIndication*/
21076
21077
21078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021079 @brief WDI_DetectedDeviceError - called internally by DAL when
21080 it has detected a failure in the device
21081
21082 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 usErrorCode: error code detected by WDI or received
21084 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021085
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021088*/
21089void
21090WDI_DetectedDeviceError
21091(
21092 WDI_ControlBlockType* pWDICtx,
21093 wpt_uint16 usErrorCode
21094)
21095{
21096 WDI_LowLevelIndType wdiInd;
21097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21098
21099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21100 "Device Error detected code: %d - transitioning to stopped state",
21101 usErrorCode);
21102
21103 wpalMutexAcquire(&pWDICtx->wptMutex);
21104
21105 WDI_STATableStop(pWDICtx);
21106
21107 WDI_ResetAssocSessions(pWDICtx);
21108
21109 /*Set the expected state transition to stopped - because the device
21110 experienced a failure*/
21111 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21112
21113 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021114 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021115
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021117
21118 /*TO DO: - there should be an attempt to reset the device here*/
21119
21120 wpalMutexRelease(&pWDICtx->wptMutex);
21121
21122 /*------------------------------------------------------------------------
21123 Notify UMAC if a handler is registered
21124 ------------------------------------------------------------------------*/
21125 if (pWDICtx->wdiLowLevelIndCB)
21126 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21128 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021129
21130 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21131 }
21132}/*WDI_DetectedDeviceError*/
21133
21134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 we started on send message has expire - this should
21137 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 reply - trigger catastrophic failure
21139 @param
21140
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021142
21143 @see
21144 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021145*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021146void
Jeff Johnson295189b2012-06-20 16:38:30 -070021147WDI_ResponseTimerCB
21148(
21149 void *pUserData
21150)
21151{
21152 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21154
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021155 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 }
21162
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021163 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021164 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021165
21166 /* If response timer is running at this time that means this timer
21167 * event is not for the last request but rather last-to-last request and
21168 * this timer event has come after we recevied respone for last-to-last
21169 * message
21170 */
21171 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21172 {
21173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21174 "WDI_ResponseTimerCB: timer in running state on timer event, "
21175 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21176 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21177 return;
21178 }
21179
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021180 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 {
21182
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021185 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021187 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21188 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021189
21190 /* WDI timeout means Riva is not responding or SMD communication to Riva
21191 * is not happening. The only possible way to recover from this error
21192 * is to initiate SSR from APPS.
21193 * There is also an option to re-enable wifi, which will eventually
21194 * trigger SSR
21195 */
21196 if (gWDICb.bEnableSSR == false)
21197 {
21198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21199 "SSR is not enabled on WDI timeout");
21200 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21201 return;
21202 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021203#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021204 wpalWcnssResetIntr();
21205 /* if this timer fires, it means Riva did not receive the FIQ */
21206 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021207#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021208 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21209 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021210#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 }
21212 else
21213 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021215 "Timeout occurred but not waiting for any response %d "
21216 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21217 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21218 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 }
21220
21221 return;
21222
21223}/*WDI_ResponseTimerCB*/
21224
21225
21226/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021227 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021228
Jeff Johnsone7245742012-09-05 17:12:55 -070021229
21230 @param pWDICtx: pointer to the WLAN DAL context
21231 pEventData: pointer to the event information structure
21232
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 @see
21234 @return Result of the function call
21235*/
21236WPT_INLINE WDI_Status
21237WDI_ProcessResponse
21238(
21239 WDI_ControlBlockType* pWDICtx,
21240 WDI_EventInfoType* pEventData
21241)
21242{
21243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21244
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 already checked these pointers
21247 ! - revisit this assumption */
21248 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21249 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 WDI_getRespMsgString(pEventData->wdiResponse),
21254 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21255 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21256 }
21257 else
21258 {
21259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 pEventData->wdiResponse);
21262 return WDI_STATUS_E_NOT_IMPLEMENT;
21263 }
21264}/*WDI_ProcessResponse*/
21265
21266
21267/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021269=========================================================================*/
21270
21271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 @brief Utility function used by the DAL Core to help queue a
21273 request that cannot be processed right away.
21274 @param
21275
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 pWDICtx: - pointer to the WDI control block
21277 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021278 queued
21279
21280 @see
21281 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021282*/
21283WDI_Status
21284WDI_QueuePendingReq
21285(
21286 WDI_ControlBlockType* pWDICtx,
21287 WDI_EventInfoType* pEventData
21288)
21289{
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21294
21295 if ( NULL == pEventDataQueue )
21296 {
21297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 WDI_ASSERT(0);
21300 return WDI_STATUS_MEM_FAILURE;
21301 }
21302
21303 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21304 pEventDataQueue->pUserData = pEventData->pUserData;
21305 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21306 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021308
21309 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21310 {
21311 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021312
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 if ( NULL == pEventInfo )
21314 {
21315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021317 WDI_ASSERT(0);
21318 wpalMemoryFree(pEventDataQueue);
21319 return WDI_STATUS_MEM_FAILURE;
21320 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021321
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21323
21324 }
21325 pEventDataQueue->pEventData = pEventInfo;
21326
21327 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021329
Jeff Johnsone7245742012-09-05 17:12:55 -070021330 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021331
21332 return WDI_STATUS_SUCCESS;
21333}/*WDI_QueuePendingReq*/
21334
21335/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 @param
21339
21340 pMsg - pointer to the message
21341
21342 @see
21343 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021344*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021345void
Jeff Johnson295189b2012-06-20 16:38:30 -070021346WDI_PALCtrlMsgCB
21347(
21348 wpt_msg *pMsg
21349)
21350{
21351 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021352 WDI_ControlBlockType* pWDICtx = NULL;
21353 WDI_Status wdiStatus;
21354 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 void* pUserData;
21356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21357
21358 if (( NULL == pMsg )||
21359 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21360 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21361 {
21362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 }
21367
21368 /*Transition back to the state that we had before serialization
21369 - serialization transitions us to BUSY to stop any incomming requests
21370 ! TO DO L: possible race condition here if a request comes in between the
21371 state transition and the post function*/
21372
Jeff Johnsone7245742012-09-05 17:12:55 -070021373 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021374
21375 /*-----------------------------------------------------------------------
21376 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 -----------------------------------------------------------------------*/
21379 switch ( pEventData->wdiRequest )
21380 {
21381
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021383 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21384 break;
21385
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 case WDI_NV_DOWNLOAD_REQ:
21387 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21388 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21389 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21390 {
21391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021392 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021393 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21394 }
21395 else
21396 {
21397 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21398 }
21399
21400 break;
21401
21402 default:
21403 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21404 break;
21405 }/*switch ( pEventData->wdiRequest )*/
21406
21407 if ( WDI_STATUS_SUCCESS != wdiStatus )
21408 {
21409 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21410
21411 if ( NULL != pfnReqStatusCB )
21412 {
21413 /*Fail the request*/
21414 pfnReqStatusCB( wdiStatus, pUserData);
21415 }
21416 }
21417
21418 /* Free data - that was allocated when queueing*/
21419 if( pEventData != NULL )
21420 {
21421 if( pEventData->pEventData != NULL )
21422 {
21423 wpalMemoryFree(pEventData->pEventData);
21424 }
21425 wpalMemoryFree(pEventData);
21426 }
21427
21428 if( pMsg != NULL )
21429 {
21430 wpalMemoryFree(pMsg);
21431 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021432
Jeff Johnson295189b2012-06-20 16:38:30 -070021433}/*WDI_PALCtrlMsgCB*/
21434
21435/**
21436 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021437 and schedule for execution a pending request
21438 @param
21439
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 pWDICtx: - pointer to the WDI control block
21441 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021442 queued
21443
21444 @see
21445 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021446*/
21447WDI_Status
21448WDI_DequeuePendingReq
21449(
21450 WDI_ControlBlockType* pWDICtx
21451)
21452{
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21457
Jeff Johnsone7245742012-09-05 17:12:55 -070021458 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021459
21460 if ( NULL == pNode )
21461 {
21462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 return WDI_STATUS_SUCCESS;
21465 }
21466
21467 /*The node actually points to the 1st element inside the Event Data struct -
21468 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021470
21471 /*Serialize processing in the control thread
21472 !TO DO: - check to see if these are all the messages params that need
21473 to be filled in*/
21474 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21475
21476 if ( NULL == palMsg )
21477 {
21478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 palMsg->callback = WDI_PALCtrlMsgCB;
21485 palMsg->ptr = pEventData;
21486
21487 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 palMsg->val = pWDICtx->uGlobalState;
21489
Jeff Johnson295189b2012-06-20 16:38:30 -070021490 /*Transition back to BUSY as we need to handle a queued request*/
21491 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021492
Jeff Johnson295189b2012-06-20 16:38:30 -070021493 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21494
21495 return WDI_STATUS_PENDING;
21496}/*WDI_DequeuePendingReq*/
21497
21498
21499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 away.- The assoc requests will be queued by BSSID
21503 @param
21504
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 pWDICtx: - pointer to the WDI control block
21506 pEventData: pointer to the evnt info that needs to be queued
21507 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021508
21509 @see
21510 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021511*/
21512WDI_Status
21513WDI_QueueNewAssocRequest
21514(
21515 WDI_ControlBlockType* pWDICtx,
21516 WDI_EventInfoType* pEventData,
21517 wpt_macAddr macBSSID
21518)
21519{
Jeff Johnsone7245742012-09-05 17:12:55 -070021520 wpt_uint8 i;
21521 WDI_BSSSessionType* pSession = NULL;
21522 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 void* pEventInfo;
21525 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021527
Jeff Johnsone7245742012-09-05 17:12:55 -070021528
21529 /*------------------------------------------------------------------------
21530 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 ------------------------------------------------------------------------*/
21532 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21533 {
21534 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21535 {
21536 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021537 pSession = &pWDICtx->aBSSSessions[i];
21538 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 }
21540 }
21541
21542 if ( i >= WDI_MAX_BSS_SESSIONS )
21543 {
21544 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021547
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 /*------------------------------------------------------------------------
21549 Fill in the BSSID for this session and set the usage flag
21550 ------------------------------------------------------------------------*/
21551 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021553
21554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 ------------------------------------------------------------------------*/
21557 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21558 if ( NULL == pEventDataQueue )
21559 {
21560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021561 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 WDI_ASSERT(0);
21563 return WDI_STATUS_MEM_FAILURE;
21564 }
21565
21566 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21567 if ( NULL == pSessionIdElement )
21568 {
21569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021570 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 WDI_ASSERT(0);
21572 wpalMemoryFree(pEventDataQueue);
21573 return WDI_STATUS_MEM_FAILURE;
21574 }
21575
21576 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21577 if ( NULL == pEventInfo )
21578 {
21579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021580 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 WDI_ASSERT(0);
21582 wpalMemoryFree(pSessionIdElement);
21583 wpalMemoryFree(pEventDataQueue);
21584 return WDI_STATUS_MEM_FAILURE;
21585 }
21586
21587 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21588 pEventDataQueue->pUserData = pEventData->pUserData;
21589 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21590 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021592
21593 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21594 pEventDataQueue->pEventData = pEventInfo;
21595
21596 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021598
21599 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021601
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021603
21604 /*We need to maintain a separate list that keeps track of the order in which
21605 the new assoc requests are being queued such that we can start processing
21606 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 pSessionIdElement->ucIndex = i;
21608 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021609
21610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21611 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021612 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021613
21614 /*Return pending as this is what the status of the request is since it has
21615 been queued*/
21616 return WDI_STATUS_PENDING;
21617}/*WDI_QueueNewAssocRequest*/
21618
21619/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 away.- The assoc requests will be queued by BSSID
21623 @param
21624
Jeff Johnson295189b2012-06-20 16:38:30 -070021625 pWDICtx: - pointer to the WDI control block
21626 pSession: - session in which to queue
21627 pEventData: pointer to the event info that needs to be
21628 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021629
21630 @see
21631 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021632*/
21633WDI_Status
21634WDI_QueueAssocRequest
21635(
21636 WDI_ControlBlockType* pWDICtx,
21637 WDI_BSSSessionType* pSession,
21638 WDI_EventInfoType* pEventData
21639)
21640{
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021645
21646 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 Sanity check
21648 ------------------------------------------------------------------------*/
21649 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21650 {
21651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021653
Jeff Johnsone7245742012-09-05 17:12:55 -070021654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 }
21656
21657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 ------------------------------------------------------------------------*/
21660 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21661 if ( NULL == pEventDataQueue )
21662 {
21663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021664 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 WDI_ASSERT(0);
21666 return WDI_STATUS_MEM_FAILURE;
21667 }
21668
21669 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21670 if ( NULL == pEventInfo )
21671 {
21672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21673 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021674 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 WDI_ASSERT(0);
21676 wpalMemoryFree(pEventDataQueue);
21677 return WDI_STATUS_MEM_FAILURE;
21678 }
21679
21680 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21681 pEventDataQueue->pUserData = pEventData->pUserData;
21682 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21683 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 pEventDataQueue->pEventData = pEventInfo;
21686
21687 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21688
21689 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021691
21692 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021694
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021696
21697 /*The result of this operation is pending because the request has been
21698 queued and it will be processed at a later moment in time */
21699 return WDI_STATUS_PENDING;
21700}/*WDI_QueueAssocRequest*/
21701
21702/**
21703 @brief Utility function used by the DAL Core to help dequeue
21704 an association request that was pending
21705 The request will be queued up in front of the main
21706 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 @param
21708
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
21711
21712 @see
21713 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021714*/
21715WDI_Status
21716WDI_DequeueAssocRequest
21717(
21718 WDI_ControlBlockType* pWDICtx
21719)
21720{
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 wpt_list_node* pNode = NULL;
21722 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 WDI_BSSSessionType* pSession;
21724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021725
21726 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021727 Sanity check
21728 ------------------------------------------------------------------------*/
21729 if ( NULL == pWDICtx )
21730 {
21731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021733
Jeff Johnsone7245742012-09-05 17:12:55 -070021734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021735 }
21736
21737 /*------------------------------------------------------------------------
21738 An association has been completed => a new association can occur
21739 Check to see if there are any pending associations ->
21740 If so , transfer all the pending requests into the busy queue for
21741 processing
21742 These requests have arrived prior to the requests in the busy queue
21743 (bc they needed to be processed in order to be placed in this queue)
21744 => they will be placed at the front of the busy queue
21745 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021746 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021747
21748 if ( NULL == pNode )
21749 {
21750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 return WDI_STATUS_SUCCESS;
21753 }
21754
21755 /*The node actually points to the 1st element inside the Session Id struct -
21756 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021758
21759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21760 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21761
21762 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21763 {
21764 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021765
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 the front of the main waiting queue for subsequent execution*/
21768 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 while ( NULL != pNode )
21770 {
21771 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21773 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021775 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021776 }
21777 else
21778 {
21779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 WPAL_ASSERT(0);
21782 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021785
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21787 wpalMemoryFree(pSessionIdElement);
21788 return WDI_STATUS_SUCCESS;
21789}/*WDI_DequeueAssocRequest*/
21790
21791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 pending requests - all req cb will be called with
21794 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021795 @param
21796
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021798
21799 @see
21800 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021801*/
21802WDI_Status
21803WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021804(
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 WDI_ControlBlockType* pWDICtx
21806)
21807{
Jeff Johnsone7245742012-09-05 17:12:55 -070021808 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 void* pUserData;
21812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21813
Jeff Johnsone7245742012-09-05 17:12:55 -070021814 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021815
21816 /*------------------------------------------------------------------------
21817 Go through all the requests and fail them - this will only be called
21818 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021819 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021820 ------------------------------------------------------------------------*/
21821 while( pNode )
21822 {
21823 /*The node actually points to the 1st element inside the Event Data struct -
21824 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 pEventDataQueue = (WDI_EventInfoType*)pNode;
21826
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21828 if ( NULL != pfnReqStatusCB )
21829 {
21830 /*Fail the request*/
21831 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21832 }
21833 /* Free data - that was allocated when queueing */
21834 if ( pEventDataQueue->pEventData != NULL )
21835 {
21836 wpalMemoryFree(pEventDataQueue->pEventData);
21837 }
21838 wpalMemoryFree(pEventDataQueue);
21839
21840 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21841 {
21842 break;
21843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 }
21845
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 return WDI_STATUS_SUCCESS;
21847}/*WDI_ClearPendingRequests*/
21848
21849/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021850 @brief Helper routine used to init the BSS Sessions in the WDI control block
21851
21852
21853 @param pWDICtx: pointer to the WLAN DAL context
21854
Jeff Johnson295189b2012-06-20 16:38:30 -070021855 @see
21856*/
21857void
21858WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021859(
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 WDI_ControlBlockType* pWDICtx
21861)
21862{
Jeff Johnsone7245742012-09-05 17:12:55 -070021863 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21865
21866 /*-------------------------------------------------------------------------
21867 No Sanity check
21868 -------------------------------------------------------------------------*/
21869 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21870 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21873 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21874 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21875 }
21876}/*WDI_ResetAssocSessions*/
21877
21878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021879 @brief Helper routine used to find a session based on the BSSID
21880
21881
21882 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021883 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021884 pSession: pointer to the session (if found)
21885
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021888*/
21889wpt_uint8
21890WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021891(
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 WDI_ControlBlockType* pWDICtx,
21893 wpt_macAddr macBSSID,
21894 WDI_BSSSessionType** ppSession
21895)
21896{
Jeff Johnsone7245742012-09-05 17:12:55 -070021897 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21899
21900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 -------------------------------------------------------------------------*/
21903 if ( NULL == ppSession )
21904 {
21905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021906 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 }
21909
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 /*------------------------------------------------------------------------
21913 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 ------------------------------------------------------------------------*/
21915 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21916 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021917 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21918 (eWLAN_PAL_TRUE ==
21919 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21920 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 {
21922 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021923 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 return i;
21925 }
21926 }
21927
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929}/*WDI_FindAssocSession*/
21930
21931/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 @brief Helper routine used to find a session based on the BSSID
21933
21934
21935 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 ucBSSIdx: BSS Index of the session
21937 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021938
Jeff Johnson295189b2012-06-20 16:38:30 -070021939 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021940 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021941*/
21942wpt_uint8
21943WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021944(
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 WDI_ControlBlockType* pWDICtx,
21946 wpt_uint16 ucBSSIdx,
21947 WDI_BSSSessionType** ppSession
21948)
21949{
Jeff Johnsone7245742012-09-05 17:12:55 -070021950 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21952
21953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 -------------------------------------------------------------------------*/
21956 if ( NULL == ppSession )
21957 {
21958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021959 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 }
21962
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021964
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 /*------------------------------------------------------------------------
21966 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 ------------------------------------------------------------------------*/
21968 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21969 {
21970 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21971 {
21972 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 return i;
21975 }
21976 }
21977
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021979}/*WDI_FindAssocSessionByBSSIdx*/
21980
21981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 @brief Helper routine used to find a session based on the BSSID
21983
21984
21985 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 ucBSSIdx: BSS Index of the session
21987 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021988
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021991*/
21992wpt_uint8
21993WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021994(
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 WDI_ControlBlockType* pWDICtx,
21996 wpt_uint16 usIdx,
21997 WDI_BSSSessionType** ppSession
21998)
21999{
22000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22001
22002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 -------------------------------------------------------------------------*/
22005 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22006 {
22007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022008 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 }
22011
22012 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022014
22015 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022016
Jeff Johnson295189b2012-06-20 16:38:30 -070022017}/*WDI_FindAssocSessionByBSSIdx*/
22018
22019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022020 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022022
22023
22024 @param pWDICtx: pointer to the WLAN DAL context
22025 pSession: pointer to the session (if found)
22026
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022028 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022029*/
22030wpt_uint8
22031WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022032(
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 WDI_ControlBlockType* pWDICtx,
22034 WDI_BSSSessionType** ppSession
22035)
22036{
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 -------------------------------------------------------------------------*/
22042 if ( NULL == ppSession )
22043 {
22044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022045 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 }
22048
Jeff Johnsone7245742012-09-05 17:12:55 -070022049 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022050
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 /*------------------------------------------------------------------------
22052 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 ------------------------------------------------------------------------*/
22054 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22055 {
22056 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22057 {
22058 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022059 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 return i;
22061 }
22062 }
22063
Jeff Johnsone7245742012-09-05 17:12:55 -070022064 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022065}/*WDI_FindEmptySession*/
22066
22067
22068/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022069 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022071
22072
22073 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022074 macBSSID: pointer to BSSID. If NULL, get all the session.
22075 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22076 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22077 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 @see
22079 @return Number of sessions in use
22080*/
22081wpt_uint8
22082WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022083(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022084 WDI_ControlBlockType* pWDICtx,
22085 wpt_macAddr macBSSID,
22086 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022087)
22088{
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022091
22092 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 Count all sessions in use
22094 ------------------------------------------------------------------------*/
22095 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22096 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022097 if ( macBSSID && skipBSSID &&
22098 (eWLAN_PAL_TRUE ==
22099 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22100 WDI_MAC_ADDR_LEN)))
22101 {
22102 continue;
22103 }
22104 else if ( pWDICtx->aBSSSessions[i].bInUse )
22105 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022107 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 }
22109
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111}/*WDI_GetActiveSessionsCount*/
22112
22113/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022116
22117
22118 @param pWDICtx: pointer to the WLAN DAL context
22119 pSession: pointer to the session (if found)
22120
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022123*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022124void
Jeff Johnson295189b2012-06-20 16:38:30 -070022125WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022126(
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 WDI_ControlBlockType* pWDICtx,
22128 WDI_BSSSessionType* ppSession
22129)
22130{
22131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 -------------------------------------------------------------------------*/
22134 if ( NULL == ppSession )
22135 {
22136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022137 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022138 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 }
22140
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 /*------------------------------------------------------------------------
22142 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 ------------------------------------------------------------------------*/
22144 wpal_list_destroy(&ppSession->wptPendingQueue);
22145 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22147 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22149 wpal_list_init(&ppSession->wptPendingQueue);
22150
22151}/*WDI_DeleteSession*/
22152
22153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 @param
22157
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 WDI_AddStaParams: - pointer to the WDI Add STA params
22159 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022160
22161 @see
22162 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022163*/
22164void
22165WDI_AddBcastSTAtoSTATable
22166(
22167 WDI_ControlBlockType* pWDICtx,
22168 WDI_AddStaParams * staParams,
22169 wpt_uint16 usBcastStaIdx
22170)
22171{
22172 WDI_AddStaParams wdiAddSTAParam = {0};
22173 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22175
22176 /*---------------------------------------------------------------------
22177 Sanity check
22178 ---------------------------------------------------------------------*/
22179 if ( NULL == staParams )
22180 {
22181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022183
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 }
22186
22187 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22188 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22189 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22190 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22191 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22192 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22193 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22194 WDI_MAC_ADDR_LEN );
22195 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22196 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22197 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22198 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22199 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22200 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22201 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022202
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22204}
22205
22206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 @brief NV blob will be divided into fragments of size 4kb and
22208 Sent to HAL
22209
22210 @param pWDICtx: pointer to the WLAN DAL context
22211 pEventData: pointer to the event information structure
22212
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 @see
22214 @return Result of the function call
22215 */
22216
22217WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022218(
Jeff Johnson295189b2012-06-20 16:38:30 -070022219 WDI_ControlBlockType* pWDICtx,
22220 WDI_EventInfoType* pEventData
22221)
22222{
22223
22224 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22225 wpt_uint8* pSendBuffer = NULL;
22226 wpt_uint16 usDataOffset = 0;
22227 wpt_uint16 usSendSize = 0;
22228 wpt_uint16 usCurrentFragmentSize =0;
22229 wpt_uint8* pSrcBuffer = NULL;
22230 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22231 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22232
22233 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22234 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22235 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22236
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22239
22240 /* Update the current Fragment Number */
22241 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22242
22243 /*Update the HAL REQ structure */
22244 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22245 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22246 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22247
22248 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 image will be sent to HAL*/
22251
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22258 usCurrentFragmentSize = FRAGMENT_SIZE;
22259
22260 /*Update the HAL REQ structure */
22261 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22262 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22263
22264 }
22265 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 usCurrentFragmentSize = FRAGMENT_SIZE;
22268
22269 /*Update the HAL REQ structure */
22270 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22271 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22272 }
22273
22274 /*-----------------------------------------------------------------------
22275 Get message buffer
22276 -----------------------------------------------------------------------*/
22277 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22278 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22279 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22282 {
22283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22284 "Unable to get send buffer in NV Download req %x %x ",
22285 pEventData, pwdiNvDownloadReqParams);
22286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 }
22289
22290 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22293
22294 /* Appending the NV image fragment */
22295 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22296 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22297 usCurrentFragmentSize);
22298
22299 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22303 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 WDI_NV_DOWNLOAD_RESP);
22305
22306}
Jeff Johnsone7245742012-09-05 17:12:55 -070022307/*============================================================================
22308 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 ============================================================================*/
22310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 @brief Helper routine used to find a session based on the BSSID
22312 @param pContext: pointer to the WLAN DAL context
22313 @param pDPContext: pointer to the Datapath context
22314
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022316 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022317*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022318WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022319WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22320{
22321 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22322
22323 pCB->pDPContext = pDPContext;
22324 return;
22325}
22326
22327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 @brief Helper routine used to find a session based on the BSSID
22329
22330
22331 @param pContext: pointer to the WLAN DAL context
22332
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 @see
22334 @return pointer to Datapath context
22335*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022336WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022337WDI_DS_GetDatapathContext (void *pContext)
22338{
22339 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22340 return pCB->pDPContext;
22341}
22342/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 @brief Helper routine used to find a session based on the BSSID
22344
22345
22346 @param pContext: pointer to the WLAN DAL context
22347 @param pDTDriverContext: pointer to the Transport Driver context
22348
Jeff Johnson295189b2012-06-20 16:38:30 -070022349 @see
22350 @return void
22351*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022352WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022353WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22354{
22355 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22356
22357 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022358 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022359}
22360
22361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 @brief Helper routine used to find a session based on the BSSID
22363
22364
22365 @param pWDICtx: pointer to the WLAN DAL context
22366
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022369*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022370WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022371WDT_GetTransportDriverContext (void *pContext)
22372{
22373 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022374 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022375}
22376
Jeff Johnsone7245742012-09-05 17:12:55 -070022377/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 Helper inline converters
22379 ============================================================================*/
22380/*Convert WDI driver type into HAL driver type*/
22381WPT_STATIC WPT_INLINE WDI_Status
22382WDI_HAL_2_WDI_STATUS
22383(
22384 eHalStatus halStatus
22385)
22386{
Jeff Johnsone7245742012-09-05 17:12:55 -070022387 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 the chances of getting inlined*/
22389 switch( halStatus )
22390 {
22391 case eHAL_STATUS_SUCCESS:
22392 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22393 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22394 return WDI_STATUS_SUCCESS;
22395 case eHAL_STATUS_FAILURE:
22396 return WDI_STATUS_E_FAILURE;
22397 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 return WDI_STATUS_MEM_FAILURE;
22399 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 default:
22402 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22403 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022404
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022406}/*WDI_HAL_2_WDI_STATUS*/
22407
22408/*Convert WDI request type into HAL request type*/
22409WPT_STATIC WPT_INLINE tHalHostMsgType
22410WDI_2_HAL_REQ_TYPE
22411(
22412 WDI_RequestEnumType wdiReqType
22413)
22414{
Jeff Johnsone7245742012-09-05 17:12:55 -070022415 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 the chances of getting inlined*/
22417 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 return WLAN_HAL_RMV_STAKEY_REQ;
22454 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022459 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 case WDI_DEL_BA_REQ:
22463 return WLAN_HAL_DEL_BA_REQ;
22464#ifdef FEATURE_WLAN_CCX
22465 case WDI_TSM_STATS_REQ:
22466 return WLAN_HAL_TSM_STATS_REQ;
22467#endif
22468 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 case WDI_ADD_BA_SESSION_REQ:
22479 return WLAN_HAL_ADD_BA_SESSION_REQ;
22480 case WDI_TRIGGER_BA_REQ:
22481 return WLAN_HAL_TRIGGER_BA_REQ;
22482 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22487 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22488 case WDI_SET_MAX_TX_POWER_REQ:
22489 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schang86c22c42013-03-13 18:41:24 -070022490 case WDI_SET_TX_POWER_REQ:
22491 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22493 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022494#ifdef FEATURE_WLAN_TDLS
22495 case WDI_TDLS_LINK_ESTABLISH_REQ:
22496 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22497#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 case WDI_REM_BEACON_FILTER_REQ:
22519 return WLAN_HAL_REM_BCN_FILTER_REQ;
22520 case WDI_SET_RSSI_THRESHOLDS_REQ:
22521 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22522 case WDI_HOST_OFFLOAD_REQ:
22523 return WLAN_HAL_HOST_OFFLOAD_REQ;
22524 case WDI_WOWL_ADD_BC_PTRN_REQ:
22525 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22526 case WDI_WOWL_DEL_BC_PTRN_REQ:
22527 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22528 case WDI_WOWL_ENTER_REQ:
22529 return WLAN_HAL_ENTER_WOWL_REQ;
22530 case WDI_WOWL_EXIT_REQ:
22531 return WLAN_HAL_EXIT_WOWL_REQ;
22532 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22533 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22534 case WDI_NV_DOWNLOAD_REQ:
22535 return WLAN_HAL_DOWNLOAD_NV_REQ;
22536 case WDI_FLUSH_AC_REQ:
22537 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22538 case WDI_BTAMP_EVENT_REQ:
22539 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22540#ifdef WLAN_FEATURE_VOWIFI_11R
22541 case WDI_AGGR_ADD_TS_REQ:
22542 return WLAN_HAL_AGGR_ADD_TS_REQ;
22543#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 case WDI_FTM_CMD_REQ:
22545 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 case WDI_ADD_STA_SELF_REQ:
22547 return WLAN_HAL_ADD_STA_SELF_REQ;
22548 case WDI_DEL_STA_SELF_REQ:
22549 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022550#ifdef FEATURE_OEM_DATA_SUPPORT
22551 case WDI_START_OEM_DATA_REQ:
22552 return WLAN_HAL_START_OEM_DATA_REQ;
22553#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 case WDI_HOST_RESUME_REQ:
22555 return WLAN_HAL_HOST_RESUME_REQ;
22556 case WDI_HOST_SUSPEND_IND:
22557 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080022558 case WDI_TRAFFIC_STATS_IND:
22559 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070022560#ifdef WLAN_FEATURE_11W
22561 case WDI_EXCLUDE_UNENCRYPTED_IND:
22562 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22563#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 case WDI_KEEP_ALIVE_REQ:
22565 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022566#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022567 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22568 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022569#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022570#ifdef FEATURE_WLAN_SCAN_PNO
22571 case WDI_SET_PREF_NETWORK_REQ:
22572 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22573 case WDI_SET_RSSI_FILTER_REQ:
22574 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22575 case WDI_UPDATE_SCAN_PARAMS_REQ:
22576 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22577#endif // FEATURE_WLAN_SCAN_PNO
22578 case WDI_SET_TX_PER_TRACKING_REQ:
22579 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22580#ifdef WLAN_FEATURE_PACKET_FILTERING
22581 case WDI_8023_MULTICAST_LIST_REQ:
22582 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22583 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22586 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22587 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22588 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22589#endif // WLAN_FEATURE_PACKET_FILTERING
22590 case WDI_HAL_DUMP_CMD_REQ:
22591 return WLAN_HAL_DUMP_COMMAND_REQ;
22592#ifdef WLAN_FEATURE_GTK_OFFLOAD
22593 case WDI_GTK_OFFLOAD_REQ:
22594 return WLAN_HAL_GTK_OFFLOAD_REQ;
22595 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22596 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22597#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22598
22599 case WDI_INIT_SCAN_CON_REQ:
22600 return WLAN_HAL_INIT_SCAN_CON_REQ;
22601 case WDI_SET_POWER_PARAMS_REQ:
22602 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22603 case WDI_SET_TM_LEVEL_REQ:
22604 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22605 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22606 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022607#ifdef WLAN_FEATURE_11AC
22608 case WDI_UPDATE_VHT_OP_MODE_REQ:
22609 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22610#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080022611 case WDI_GET_ROAM_RSSI_REQ:
22612 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053022613 case WDI_DHCP_START_IND:
22614 return WLAN_HAL_DHCP_START_IND;
22615 case WDI_DHCP_STOP_IND:
22616 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070022617#ifdef FEATURE_WLAN_LPHB
22618 case WDI_LPHB_CFG_REQ:
22619 return WLAN_HAL_LPHB_CFG_REQ;
22620#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070022621 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22622 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22623 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22624 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22625
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022629
Jeff Johnson295189b2012-06-20 16:38:30 -070022630}/*WDI_2_HAL_REQ_TYPE*/
22631
22632/*Convert WDI response type into HAL response type*/
22633WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22634HAL_2_WDI_RSP_TYPE
22635(
22636 tHalHostMsgType halMsg
22637)
22638{
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 the chances of getting inlined*/
22641 switch( halMsg )
22642 {
22643 case WLAN_HAL_START_RSP:
22644 return WDI_START_RESP;
22645 case WLAN_HAL_STOP_RSP:
22646 return WDI_STOP_RESP;
22647 case WLAN_HAL_INIT_SCAN_RSP:
22648 return WDI_INIT_SCAN_RESP;
22649 case WLAN_HAL_START_SCAN_RSP:
22650 return WDI_START_SCAN_RESP;
22651 case WLAN_HAL_END_SCAN_RSP:
22652 return WDI_END_SCAN_RESP;
22653 case WLAN_HAL_FINISH_SCAN_RSP:
22654 return WDI_FINISH_SCAN_RESP;
22655 case WLAN_HAL_CONFIG_STA_RSP:
22656 return WDI_CONFIG_STA_RESP;
22657 case WLAN_HAL_DELETE_STA_RSP:
22658 return WDI_DEL_STA_RESP;
22659 case WLAN_HAL_CONFIG_BSS_RSP:
22660 return WDI_CONFIG_BSS_RESP;
22661 case WLAN_HAL_DELETE_BSS_RSP:
22662 return WDI_DEL_BSS_RESP;
22663 case WLAN_HAL_JOIN_RSP:
22664 return WDI_JOIN_RESP;
22665 case WLAN_HAL_POST_ASSOC_RSP:
22666 return WDI_POST_ASSOC_RESP;
22667 case WLAN_HAL_SET_BSSKEY_RSP:
22668 return WDI_SET_BSS_KEY_RESP;
22669 case WLAN_HAL_SET_STAKEY_RSP:
22670 return WDI_SET_STA_KEY_RESP;
22671 case WLAN_HAL_RMV_BSSKEY_RSP:
22672 return WDI_RMV_BSS_KEY_RESP;
22673 case WLAN_HAL_RMV_STAKEY_RSP:
22674 return WDI_RMV_STA_KEY_RESP;
22675 case WLAN_HAL_SET_BCASTKEY_RSP:
22676 return WDI_SET_STA_BCAST_KEY_RESP;
22677 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22678 // return WDI_RMV_STA_BCAST_KEY_RESP;
22679 case WLAN_HAL_ADD_TS_RSP:
22680 return WDI_ADD_TS_RESP;
22681 case WLAN_HAL_DEL_TS_RSP:
22682 return WDI_DEL_TS_RESP;
22683 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22684 return WDI_UPD_EDCA_PRMS_RESP;
22685 case WLAN_HAL_ADD_BA_RSP:
22686 return WDI_ADD_BA_RESP;
22687 case WLAN_HAL_DEL_BA_RSP:
22688 return WDI_DEL_BA_RESP;
22689#ifdef FEATURE_WLAN_CCX
22690 case WLAN_HAL_TSM_STATS_RSP:
22691 return WDI_TSM_STATS_RESP;
22692#endif
22693 case WLAN_HAL_CH_SWITCH_RSP:
22694 return WDI_CH_SWITCH_RESP;
22695 case WLAN_HAL_SET_LINK_ST_RSP:
22696 return WDI_SET_LINK_ST_RESP;
22697 case WLAN_HAL_GET_STATS_RSP:
22698 return WDI_GET_STATS_RESP;
22699 case WLAN_HAL_UPDATE_CFG_RSP:
22700 return WDI_UPDATE_CFG_RESP;
22701 case WLAN_HAL_ADD_BA_SESSION_RSP:
22702 return WDI_ADD_BA_SESSION_RESP;
22703 case WLAN_HAL_TRIGGER_BA_RSP:
22704 return WDI_TRIGGER_BA_RESP;
22705 case WLAN_HAL_UPDATE_BEACON_RSP:
22706 return WDI_UPD_BCON_PRMS_RESP;
22707 case WLAN_HAL_SEND_BEACON_RSP:
22708 return WDI_SND_BCON_RESP;
22709 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22710 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22711 /*Indications*/
22712 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22713 return WDI_HAL_RSSI_NOTIFICATION_IND;
22714 case WLAN_HAL_MISSED_BEACON_IND:
22715 return WDI_HAL_MISSED_BEACON_IND;
22716 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22717 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22718 case WLAN_HAL_MIC_FAILURE_IND:
22719 return WDI_HAL_MIC_FAILURE_IND;
22720 case WLAN_HAL_FATAL_ERROR_IND:
22721 return WDI_HAL_FATAL_ERROR_IND;
22722 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22723 return WDI_HAL_DEL_STA_IND;
22724 case WLAN_HAL_COEX_IND:
22725 return WDI_HAL_COEX_IND;
22726 case WLAN_HAL_OTA_TX_COMPL_IND:
22727 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 case WLAN_HAL_P2P_NOA_ATTR_IND:
22729 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080022730 case WLAN_HAL_P2P_NOA_START_IND:
22731 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 case WLAN_HAL_TX_PER_HIT_IND:
22733 return WDI_HAL_TX_PER_HIT_IND;
22734 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22735 return WDI_SET_MAX_TX_POWER_RESP;
schang86c22c42013-03-13 18:41:24 -070022736 case WLAN_HAL_SET_TX_POWER_RSP:
22737 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 case WLAN_HAL_SET_P2P_GONOA_RSP:
22739 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022740#ifdef FEATURE_WLAN_TDLS
22741 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22742 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22743 case WLAN_HAL_TDLS_IND:
22744 return WDI_HAL_TDLS_IND;
22745#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022747 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22765 return WDI_SET_BEACON_FILTER_RESP;
22766 case WLAN_HAL_REM_BCN_FILTER_RSP:
22767 return WDI_REM_BEACON_FILTER_RESP;
22768 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22769 return WDI_SET_RSSI_THRESHOLDS_RESP;
22770 case WLAN_HAL_HOST_OFFLOAD_RSP:
22771 return WDI_HOST_OFFLOAD_RESP;
22772 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22773 return WDI_WOWL_ADD_BC_PTRN_RESP;
22774 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22775 return WDI_WOWL_DEL_BC_PTRN_RESP;
22776 case WLAN_HAL_ENTER_WOWL_RSP:
22777 return WDI_WOWL_ENTER_RESP;
22778 case WLAN_HAL_EXIT_WOWL_RSP:
22779 return WDI_WOWL_EXIT_RESP;
22780 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22781 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22782 case WLAN_HAL_DOWNLOAD_NV_RSP:
22783 return WDI_NV_DOWNLOAD_RESP;
22784 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22785 return WDI_FLUSH_AC_RESP;
22786 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22787 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022788 case WLAN_HAL_PROCESS_PTT_RSP:
22789 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 case WLAN_HAL_ADD_STA_SELF_RSP:
22791 return WDI_ADD_STA_SELF_RESP;
22792case WLAN_HAL_DEL_STA_SELF_RSP:
22793 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022794#ifdef FEATURE_OEM_DATA_SUPPORT
22795 case WLAN_HAL_START_OEM_DATA_RSP:
22796 return WDI_START_OEM_DATA_RESP;
22797#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 case WLAN_HAL_HOST_RESUME_RSP:
22799 return WDI_HOST_RESUME_RESP;
22800 case WLAN_HAL_KEEP_ALIVE_RSP:
22801 return WDI_KEEP_ALIVE_RESP;
22802#ifdef FEATURE_WLAN_SCAN_PNO
22803 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22804 return WDI_SET_PREF_NETWORK_RESP;
22805 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22808 return WDI_UPDATE_SCAN_PARAMS_RESP;
22809 case WLAN_HAL_PREF_NETW_FOUND_IND:
22810 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22811#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022812#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022813 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22814 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022815#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22817 return WDI_SET_TX_PER_TRACKING_RESP;
22818#ifdef WLAN_FEATURE_PACKET_FILTERING
22819 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22820 return WDI_8023_MULTICAST_LIST_RESP;
22821 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22822 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22823 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22824 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22825 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22826 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22827#endif // WLAN_FEATURE_PACKET_FILTERING
22828
22829 case WLAN_HAL_DUMP_COMMAND_RSP:
22830 return WDI_HAL_DUMP_CMD_RESP;
22831 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22832 return WDI_SET_POWER_PARAMS_RESP;
22833#ifdef WLAN_FEATURE_VOWIFI_11R
22834 case WLAN_HAL_AGGR_ADD_TS_RSP:
22835 return WDI_AGGR_ADD_TS_RESP;
22836#endif
22837
22838#ifdef WLAN_FEATURE_GTK_OFFLOAD
22839 case WLAN_HAL_GTK_OFFLOAD_RSP:
22840 return WDI_GTK_OFFLOAD_RESP;
22841 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22842 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22843#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22844#ifdef WLAN_WAKEUP_EVENTS
22845 case WLAN_HAL_WAKE_REASON_IND:
22846 return WDI_HAL_WAKE_REASON_IND;
22847#endif // WLAN_WAKEUP_EVENTS
22848
22849 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22850 return WDI_SET_TM_LEVEL_RESP;
22851 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22852 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022853#ifdef WLAN_FEATURE_11AC
22854 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22855 return WDI_UPDATE_VHT_OP_MODE_RESP;
22856#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080022857#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22858 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22859 return WDI_GET_ROAM_RSSI_RESP;
22860#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070022861
Leo Chang9056f462013-08-01 19:21:11 -070022862#ifdef FEATURE_WLAN_LPHB
22863 case WLAN_HAL_LPHB_IND:
22864 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22865 case WLAN_HAL_LPHB_CFG_RSP:
22866 return WDI_LPHB_CFG_RESP;
22867#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070022868
22869 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22870 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070022871 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22872 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070022873
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022875 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 }
22877
22878}/*HAL_2_WDI_RSP_TYPE*/
22879
22880
22881/*Convert WDI driver type into HAL driver type*/
22882WPT_STATIC WPT_INLINE tDriverType
22883WDI_2_HAL_DRV_TYPE
22884(
22885 WDI_DriverType wdiDriverType
22886)
22887{
Jeff Johnsone7245742012-09-05 17:12:55 -070022888 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 the chances of getting inlined*/
22890 switch( wdiDriverType )
22891 {
22892 case WDI_DRIVER_TYPE_PRODUCTION:
22893 return eDRIVER_TYPE_PRODUCTION;
22894 case WDI_DRIVER_TYPE_MFG:
22895 return eDRIVER_TYPE_MFG;
22896 case WDI_DRIVER_TYPE_DVT:
22897 return eDRIVER_TYPE_DVT;
22898 }
22899
Jeff Johnsone7245742012-09-05 17:12:55 -070022900 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022901}/*WDI_2_HAL_DRV_TYPE*/
22902
22903
22904/*Convert WDI stop reason into HAL stop reason*/
22905WPT_STATIC WPT_INLINE tHalStopType
22906WDI_2_HAL_STOP_REASON
22907(
22908 WDI_StopType wdiDriverType
22909)
22910{
Jeff Johnsone7245742012-09-05 17:12:55 -070022911 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022912 the chances of getting inlined*/
22913 switch( wdiDriverType )
22914 {
22915 case WDI_STOP_TYPE_SYS_RESET:
22916 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070022917 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22918 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022919 case WDI_STOP_TYPE_RF_KILL:
22920 return HAL_STOP_TYPE_RF_KILL;
22921 }
22922
Jeff Johnsone7245742012-09-05 17:12:55 -070022923 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022924}/*WDI_2_HAL_STOP_REASON*/
22925
22926
22927/*Convert WDI scan mode type into HAL scan mode type*/
22928WPT_STATIC WPT_INLINE eHalSysMode
22929WDI_2_HAL_SCAN_MODE
22930(
22931 WDI_ScanMode wdiScanMode
22932)
22933{
Jeff Johnsone7245742012-09-05 17:12:55 -070022934 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 the chances of getting inlined*/
22936 switch( wdiScanMode )
22937 {
22938 case WDI_SCAN_MODE_NORMAL:
22939 return eHAL_SYS_MODE_NORMAL;
22940 case WDI_SCAN_MODE_LEARN:
22941 return eHAL_SYS_MODE_LEARN;
22942 case WDI_SCAN_MODE_SCAN:
22943 return eHAL_SYS_MODE_SCAN;
22944 case WDI_SCAN_MODE_PROMISC:
22945 return eHAL_SYS_MODE_PROMISC;
22946 case WDI_SCAN_MODE_SUSPEND_LINK:
22947 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022948 case WDI_SCAN_MODE_ROAM_SCAN:
22949 return eHAL_SYS_MODE_ROAM_SCAN;
22950 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22951 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022952 }
22953
Jeff Johnsone7245742012-09-05 17:12:55 -070022954 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022955}/*WDI_2_HAL_SCAN_MODE*/
22956
22957/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022958WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022959WDI_2_HAL_SEC_CH_OFFSET
22960(
22961 WDI_HTSecondaryChannelOffset wdiSecChOffset
22962)
22963{
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 the chances of getting inlined*/
22966 switch( wdiSecChOffset )
22967 {
22968 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022973 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22974#ifdef WLAN_FEATURE_11AC
22975 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22976 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22977 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22978 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22979 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22980 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22981 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22982 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22983 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22984 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22985 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22986 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22987 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22988 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22989#endif
22990 default:
22991 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 }
22993
Jeff Johnsone7245742012-09-05 17:12:55 -070022994 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022995}/*WDI_2_HAL_SEC_CH_OFFSET*/
22996
22997/*Convert WDI BSS type into HAL BSS type*/
22998WPT_STATIC WPT_INLINE tSirBssType
22999WDI_2_HAL_BSS_TYPE
23000(
23001 WDI_BssType wdiBSSType
23002)
23003{
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 the chances of getting inlined*/
23006 switch( wdiBSSType )
23007 {
23008 case WDI_INFRASTRUCTURE_MODE:
23009 return eSIR_INFRASTRUCTURE_MODE;
23010 case WDI_INFRA_AP_MODE:
23011 return eSIR_INFRA_AP_MODE;
23012 case WDI_IBSS_MODE:
23013 return eSIR_IBSS_MODE;
23014 case WDI_BTAMP_STA_MODE:
23015 return eSIR_BTAMP_STA_MODE;
23016 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 case WDI_BSS_AUTO_MODE:
23019 return eSIR_AUTO_MODE;
23020 }
23021
Jeff Johnsone7245742012-09-05 17:12:55 -070023022 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023023}/*WDI_2_HAL_BSS_TYPE*/
23024
23025/*Convert WDI NW type into HAL NW type*/
23026WPT_STATIC WPT_INLINE tSirNwType
23027WDI_2_HAL_NW_TYPE
23028(
23029 WDI_NwType wdiNWType
23030)
23031{
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 the chances of getting inlined*/
23034 switch( wdiNWType )
23035 {
23036 case WDI_11A_NW_TYPE:
23037 return eSIR_11A_NW_TYPE;
23038 case WDI_11B_NW_TYPE:
23039 return eSIR_11B_NW_TYPE;
23040 case WDI_11G_NW_TYPE:
23041 return eSIR_11G_NW_TYPE;
23042 case WDI_11N_NW_TYPE:
23043 return eSIR_11N_NW_TYPE;
23044 }
23045
Jeff Johnsone7245742012-09-05 17:12:55 -070023046 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023047}/*WDI_2_HAL_NW_TYPE*/
23048
23049/*Convert WDI chanel bonding type into HAL cb type*/
23050WPT_STATIC WPT_INLINE ePhyChanBondState
23051WDI_2_HAL_CB_STATE
23052(
23053 WDI_PhyChanBondState wdiCbState
23054)
23055{
Jeff Johnsone7245742012-09-05 17:12:55 -070023056 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 the chances of getting inlined*/
23058 switch ( wdiCbState )
23059 {
23060 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23061 return PHY_SINGLE_CHANNEL_CENTERED;
23062 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23063 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23064 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23065 return PHY_DOUBLE_CHANNEL_CENTERED;
23066 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23067 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023068#ifdef WLAN_FEATURE_11AC
23069 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23070 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23071 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23072 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23073 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23074 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23075 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23076 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23077 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23078 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23079 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23080 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23081 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23082 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23083#endif
23084 case WDI_MAX_CB_STATE:
23085 default:
23086 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023088
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 return PHY_CHANNEL_BONDING_STATE_MAX;
23090}/*WDI_2_HAL_CB_STATE*/
23091
23092/*Convert WDI chanel bonding type into HAL cb type*/
23093WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23094WDI_2_HAL_HT_OPER_MODE
23095(
23096 WDI_HTOperatingMode wdiHTOperMode
23097)
23098{
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 the chances of getting inlined*/
23101 switch ( wdiHTOperMode )
23102 {
23103 case WDI_HT_OP_MODE_PURE:
23104 return eSIR_HT_OP_MODE_PURE;
23105 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23106 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23107 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23108 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23109 case WDI_HT_OP_MODE_MIXED:
23110 return eSIR_HT_OP_MODE_MIXED;
23111 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023112
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 return eSIR_HT_OP_MODE_MAX;
23114}/*WDI_2_HAL_HT_OPER_MODE*/
23115
23116/*Convert WDI mimo PS type into HAL mimo PS type*/
23117WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23118WDI_2_HAL_MIMO_PS
23119(
23120 WDI_HTMIMOPowerSaveState wdiHTOperMode
23121)
23122{
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 the chances of getting inlined*/
23125 switch ( wdiHTOperMode )
23126 {
23127 case WDI_HT_MIMO_PS_STATIC:
23128 return eSIR_HT_MIMO_PS_STATIC;
23129 case WDI_HT_MIMO_PS_DYNAMIC:
23130 return eSIR_HT_MIMO_PS_DYNAMIC;
23131 case WDI_HT_MIMO_PS_NA:
23132 return eSIR_HT_MIMO_PS_NA;
23133 case WDI_HT_MIMO_PS_NO_LIMIT:
23134 return eSIR_HT_MIMO_PS_NO_LIMIT;
23135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023136
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 return eSIR_HT_MIMO_PS_MAX;
23138}/*WDI_2_HAL_MIMO_PS*/
23139
23140/*Convert WDI ENC type into HAL ENC type*/
23141WPT_STATIC WPT_INLINE tAniEdType
23142WDI_2_HAL_ENC_TYPE
23143(
23144 WDI_EncryptType wdiEncType
23145)
23146{
Jeff Johnsone7245742012-09-05 17:12:55 -070023147 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 the chances of getting inlined*/
23149 switch ( wdiEncType )
23150 {
23151 case WDI_ENCR_NONE:
23152 return eSIR_ED_NONE;
23153
23154 case WDI_ENCR_WEP40:
23155 return eSIR_ED_WEP40;
23156
23157 case WDI_ENCR_WEP104:
23158 return eSIR_ED_WEP104;
23159
23160 case WDI_ENCR_TKIP:
23161 return eSIR_ED_TKIP;
23162
23163 case WDI_ENCR_CCMP:
23164 return eSIR_ED_CCMP;
23165
23166 case WDI_ENCR_AES_128_CMAC:
23167 return eSIR_ED_AES_128_CMAC;
23168#if defined(FEATURE_WLAN_WAPI)
23169 case WDI_ENCR_WPI:
23170 return eSIR_ED_WPI;
23171#endif
23172 default:
23173 return eSIR_ED_NOT_IMPLEMENTED;
23174 }
23175
23176}/*WDI_2_HAL_ENC_TYPE*/
23177
23178/*Convert WDI WEP type into HAL WEP type*/
23179WPT_STATIC WPT_INLINE tAniWepType
23180WDI_2_HAL_WEP_TYPE
23181(
23182 WDI_WepType wdiWEPType
23183)
23184{
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 the chances of getting inlined*/
23187 switch ( wdiWEPType )
23188 {
23189 case WDI_WEP_STATIC:
23190 return eSIR_WEP_STATIC;
23191
23192 case WDI_WEP_DYNAMIC:
23193 return eSIR_WEP_DYNAMIC;
23194 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023195
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 return eSIR_WEP_MAX;
23197}/*WDI_2_HAL_WEP_TYPE*/
23198
23199WPT_STATIC WPT_INLINE tSirLinkState
23200WDI_2_HAL_LINK_STATE
23201(
23202 WDI_LinkStateType wdiLinkState
23203)
23204{
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 the chances of getting inlined*/
23207 switch ( wdiLinkState )
23208 {
23209 case WDI_LINK_IDLE_STATE:
23210 return eSIR_LINK_IDLE_STATE;
23211
23212 case WDI_LINK_PREASSOC_STATE:
23213 return eSIR_LINK_PREASSOC_STATE;
23214
23215 case WDI_LINK_POSTASSOC_STATE:
23216 return eSIR_LINK_POSTASSOC_STATE;
23217
23218 case WDI_LINK_AP_STATE:
23219 return eSIR_LINK_AP_STATE;
23220
23221 case WDI_LINK_IBSS_STATE:
23222 return eSIR_LINK_IBSS_STATE;
23223
23224 case WDI_LINK_BTAMP_PREASSOC_STATE:
23225 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23226
23227 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23228 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23229
23230 case WDI_LINK_BTAMP_AP_STATE:
23231 return eSIR_LINK_BTAMP_AP_STATE;
23232
23233 case WDI_LINK_BTAMP_STA_STATE:
23234 return eSIR_LINK_BTAMP_STA_STATE;
23235
23236 case WDI_LINK_LEARN_STATE:
23237 return eSIR_LINK_LEARN_STATE;
23238
23239 case WDI_LINK_SCAN_STATE:
23240 return eSIR_LINK_SCAN_STATE;
23241
23242 case WDI_LINK_FINISH_SCAN_STATE:
23243 return eSIR_LINK_FINISH_SCAN_STATE;
23244
23245 case WDI_LINK_INIT_CAL_STATE:
23246 return eSIR_LINK_INIT_CAL_STATE;
23247
23248 case WDI_LINK_FINISH_CAL_STATE:
23249 return eSIR_LINK_FINISH_CAL_STATE;
23250
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 case WDI_LINK_LISTEN_STATE:
23252 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023253
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023254 case WDI_LINK_SEND_ACTION_STATE:
23255 return eSIR_LINK_SEND_ACTION_STATE;
23256
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 default:
23258 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023259 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023260}
23261
Jeff Johnsone7245742012-09-05 17:12:55 -070023262/*Translate a STA Context from WDI into HAL*/
23263WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023264void
23265WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023266(
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 tConfigStaParams* phalConfigSta,
23268 WDI_ConfigStaReqInfoType* pwdiConfigSta
23269)
23270{
23271 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023272#ifdef WLAN_FEATURE_11AC
23273 /* Get the Version 1 Handler */
23274 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23275 if (WDI_getFwWlanFeatCaps(DOT11AC))
23276 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023277 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 }
23279#endif
23280 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 the chances of getting inlined*/
23282
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 wpalMemoryCopy(phalConfigSta->bssId,
23284 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23285
23286 wpalMemoryCopy(phalConfigSta->staMac,
23287 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023288
23289 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23290 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23291 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23292 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23293 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23294 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23295 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23296 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23297 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23298 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23299 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23300 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23301 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23302 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23303 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23304 phalConfigSta->action = pwdiConfigSta->wdiAction;
23305 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23306 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23307 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23308 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23309 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23310 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23311 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023312
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23314
Jeff Johnsone7245742012-09-05 17:12:55 -070023315 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 pwdiConfigSta->wdiSupportedRates.opRateMode;
23317 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23318 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23321 }
23322 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23326 }
23327 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23328 {
23329 phalConfigSta->supportedRates.aniLegacyRates[i] =
23330 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23331 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023333 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23334 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23335 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023336 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23338 }
23339 phalConfigSta->supportedRates.rxHighestDataRate =
23340 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23341
Jeff Johnsone7245742012-09-05 17:12:55 -070023342#ifdef WLAN_FEATURE_11AC
23343 if(phalConfigSta_V1 != NULL)
23344 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023345 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23346 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23347 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23348 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 }
23350#endif
23351
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023353
Jeff Johnsone7245742012-09-05 17:12:55 -070023354#ifdef WLAN_FEATURE_11AC
23355 if(phalConfigSta_V1 != NULL)
23356 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023357 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23358 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080023359 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080023360 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23361 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23362
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 }
23364#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023365}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023366
23367/*Translate a Rate set info from WDI into HAL*/
23368WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023369WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023370(
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 tSirMacRateSet* pHalRateSet,
23372 WDI_RateSet* pwdiRateSet
23373)
23374{
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23377
23378 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23379 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23380
23381 for ( i = 0; i < pHalRateSet->numRates; i++ )
23382 {
23383 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23384 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023385
Jeff Johnson295189b2012-06-20 16:38:30 -070023386}/*WDI_CopyWDIRateSetToHALRateSet*/
23387
23388
23389/*Translate an EDCA Parameter Record from WDI into HAL*/
23390WPT_STATIC WPT_INLINE void
23391WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023392(
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 tSirMacEdcaParamRecord* phalEdcaParam,
23394 WDI_EdcaParamRecord* pWDIEdcaParam
23395)
23396{
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 the chances of getting inlined*/
23399
23400 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23401 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23402 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23403 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23404
23405 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23406 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23407 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23408}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23409
23410
23411/*Copy a management frame header from WDI fmt into HAL fmt*/
23412WPT_STATIC WPT_INLINE void
23413WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23414(
23415 tSirMacMgmtHdr* pmacMgmtHdr,
23416 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23417)
23418{
23419 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23420 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23421 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23422 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23423 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23424 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23425 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23426 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23427 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23428 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23429 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23430
23431 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23432 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23433
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 pwdiMacMgmtHdr->bssId, 6);
23440
23441 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23442 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23443 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23444
23445}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23446
23447
23448/*Copy config bss parameters from WDI fmt into HAL fmt*/
23449WPT_STATIC WPT_INLINE void
23450WDI_CopyWDIConfigBSSToHALConfigBSS
23451(
23452 tConfigBssParams* phalConfigBSS,
23453 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23454)
23455{
23456
23457 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023458#ifdef WLAN_FEATURE_11AC
23459 /* Get the Version 1 Handler */
23460 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23461 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023462 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023463#endif
23464
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 wpalMemoryCopy( phalConfigBSS->bssId,
23466 pwdiConfigBSS->macBSSID,
23467 WDI_MAC_ADDR_LEN);
23468
23469#ifdef HAL_SELF_STA_PER_BSS
23470 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23471 pwdiConfigBSS->macSelfAddr,
23472 WDI_MAC_ADDR_LEN);
23473#endif
23474
23475 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23476
23477 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23478 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23479
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 pwdiConfigBSS->ucShortSlotTimeSupported;
23482 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23483 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23484 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23485 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23486 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023487 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23489 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23490 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23491 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23492 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23493 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23494 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23495 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23496 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23497 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23498 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23499
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 phalConfigBSS->htOperMode =
23501 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023502
23503 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23504 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23505 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23506 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23507
23508#ifdef WLAN_FEATURE_VOWIFI
23509 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23510#endif
23511
23512 /*! Used 32 as magic number because that is how the ssid is declared inside the
23513 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023514 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23516 pwdiConfigBSS->wdiSSID.ucLength : 32;
23517 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 pwdiConfigBSS->wdiSSID.sSSID,
23519 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023520
23521 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23522 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023523
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23525 &pwdiConfigBSS->wdiRateSet);
23526
23527 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23528
23529 if(phalConfigBSS->edcaParamsValid)
23530 {
23531 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23532 &pwdiConfigBSS->wdiBEEDCAParams);
23533 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23534 &pwdiConfigBSS->wdiBKEDCAParams);
23535 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23536 &pwdiConfigBSS->wdiVIEDCAParams);
23537 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23538 &pwdiConfigBSS->wdiVOEDCAParams);
23539 }
23540
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023542
23543 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23544
23545#ifdef WLAN_FEATURE_VOWIFI_11R
23546
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023549
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 if( phalConfigBSS->extSetStaKeyParamValid )
23551 {
23552 /*-----------------------------------------------------------------------
23553 Copy the STA Key parameters into the HAL message
23554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23557
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023559 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23560
23561 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23562
23563 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23564
23565 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23566
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23568 keyIndex++)
23569 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023571 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23572 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23573 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23574 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23575 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23576 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23583 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023584 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 WDI_MAX_KEY_LENGTH);
23586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 }
23588 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23589 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 sizeof(phalConfigBSS->extSetStaKeyParam) );
23592 }
23593
23594#endif /*WLAN_FEATURE_VOWIFI_11R*/
23595
Jeff Johnsone7245742012-09-05 17:12:55 -070023596#ifdef WLAN_FEATURE_11AC
23597 if(phalConfigBSS_V1 != NULL)
23598 {
23599 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23600 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23601 }
23602#endif
23603
Jeff Johnson295189b2012-06-20 16:38:30 -070023604}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23605
23606
Jeff Johnsone7245742012-09-05 17:12:55 -070023607/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 pointed to by user data */
23609WPT_STATIC WPT_INLINE void
23610WDI_ExtractRequestCBFromEvent
23611(
23612 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 void** ppUserData
23615)
23616{
23617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23618 switch ( pEvent->wdiRequest )
23619 {
23620 case WDI_START_REQ:
23621 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23622 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23623 break;
23624 case WDI_STOP_REQ:
23625 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23626 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23627 break;
23628 case WDI_INIT_SCAN_REQ:
23629 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23630 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23631 break;
23632 case WDI_START_SCAN_REQ:
23633 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23634 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23635 break;
23636 case WDI_END_SCAN_REQ:
23637 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23638 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23639 break;
23640 case WDI_FINISH_SCAN_REQ:
23641 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23642 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23643 break;
23644 case WDI_JOIN_REQ:
23645 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23646 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23647 break;
23648 case WDI_CONFIG_BSS_REQ:
23649 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23650 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23651 break;
23652 case WDI_DEL_BSS_REQ:
23653 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23654 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23655 break;
23656 case WDI_POST_ASSOC_REQ:
23657 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23658 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23659 break;
23660 case WDI_DEL_STA_REQ:
23661 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23662 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23663 break;
23664 case WDI_DEL_STA_SELF_REQ:
23665 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23666 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23667 break;
23668
23669 case WDI_SET_BSS_KEY_REQ:
23670 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23671 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23672 break;
23673 case WDI_RMV_BSS_KEY_REQ:
23674 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23675 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23676 break;
23677 case WDI_SET_STA_KEY_REQ:
23678 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23679 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23680 break;
23681 case WDI_RMV_STA_KEY_REQ:
23682 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23683 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23684 break;
23685 case WDI_ADD_TS_REQ:
23686 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23687 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23688 break;
23689 case WDI_DEL_TS_REQ:
23690 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23691 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23692 break;
23693 case WDI_UPD_EDCA_PRMS_REQ:
23694 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23695 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23696 break;
23697 case WDI_ADD_BA_SESSION_REQ:
23698 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23699 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23700 break;
23701 case WDI_DEL_BA_REQ:
23702 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23703 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23704 break;
23705#ifdef FEATURE_WLAN_CCX
23706 case WDI_TSM_STATS_REQ:
23707 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23708 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23709 break;
23710#endif
23711 case WDI_CH_SWITCH_REQ:
23712 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23713 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23714 break;
23715 case WDI_CONFIG_STA_REQ:
23716 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23717 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23718 break;
23719 case WDI_SET_LINK_ST_REQ:
23720 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23721 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23722 break;
23723 case WDI_GET_STATS_REQ:
23724 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23725 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23726 break;
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023727#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23728 case WDI_GET_ROAM_RSSI_REQ:
23729 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23730 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23731 break;
23732#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 case WDI_UPDATE_CFG_REQ:
23734 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23735 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23736 break;
23737 case WDI_ADD_BA_REQ:
23738 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23739 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23740 break;
23741 case WDI_TRIGGER_BA_REQ:
23742 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23743 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23744 break;
23745 case WDI_UPD_BCON_PRMS_REQ:
23746 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23747 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23748 break;
23749 case WDI_SND_BCON_REQ:
23750 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23751 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23752 break;
23753 case WDI_ENTER_BMPS_REQ:
23754 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23755 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23756 break;
23757 case WDI_EXIT_BMPS_REQ:
23758 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23759 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23760 break;
23761 case WDI_ENTER_UAPSD_REQ:
23762 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23763 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23764 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070023765 case WDI_EXIT_UAPSD_REQ:
23766 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23767 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23768 break;
23769 case WDI_SET_UAPSD_PARAM_REQ:
23770 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23771 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23772 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023773 case WDI_UPDATE_UAPSD_PARAM_REQ:
23774 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23775 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23776 break;
23777 case WDI_CONFIGURE_RXP_FILTER_REQ:
23778 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23779 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23780 break;
23781 case WDI_SET_BEACON_FILTER_REQ:
23782 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23783 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23784 break;
23785 case WDI_REM_BEACON_FILTER_REQ:
23786 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23787 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023788 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 case WDI_SET_RSSI_THRESHOLDS_REQ:
23790 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23791 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23792 break;
23793 case WDI_HOST_OFFLOAD_REQ:
23794 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23795 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23796 break;
23797 case WDI_WOWL_ADD_BC_PTRN_REQ:
23798 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23799 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23800 break;
23801 case WDI_WOWL_DEL_BC_PTRN_REQ:
23802 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23803 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23804 break;
23805 case WDI_WOWL_ENTER_REQ:
23806 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23807 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23808 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070023809 case WDI_WOWL_EXIT_REQ:
23810 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23811 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23812 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23814 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23815 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23816 break;
23817 case WDI_FLUSH_AC_REQ:
23818 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23819 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23820 break;
23821 case WDI_BTAMP_EVENT_REQ:
23822 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23823 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23824 break;
23825 case WDI_KEEP_ALIVE_REQ:
23826 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23827 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23828 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070023829#if defined FEATURE_WLAN_SCAN_PNO
23830 case WDI_SET_PREF_NETWORK_REQ:
23831 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23832 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23833 break;
23834 case WDI_SET_RSSI_FILTER_REQ:
23835 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23836 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23837 break;
23838 case WDI_UPDATE_SCAN_PARAMS_REQ:
23839 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23840 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23841 break;
23842#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 case WDI_SET_TX_PER_TRACKING_REQ:
23844 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23845 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080023846 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070023847#if defined WLAN_FEATURE_PACKET_FILTERING
23848 case WDI_8023_MULTICAST_LIST_REQ:
23849 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23850 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23851 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080023852 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23853 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23854 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23855 break;
23856 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23857 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23858 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23859 break;
23860 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23861 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23862 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23863 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070023864#endif
23865 case WDI_SET_POWER_PARAMS_REQ:
23866 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23867 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23868 break;
23869#if defined WLAN_FEATURE_GTK_OFFLOAD
23870 case WDI_GTK_OFFLOAD_REQ:
23871 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23872 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23873 break;
23874 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23875 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23876 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23877 break;
23878#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080023879
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 default:
23881 *ppfnReqCB = NULL;
23882 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 }
23885}/*WDI_ExtractRequestCBFromEvent*/
23886
23887
23888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 frame xtl is enabled for a particular STA.
23891
23892 WDI_PostAssocReq must have been called.
23893
Jeff Johnsone7245742012-09-05 17:12:55 -070023894 @param uSTAIdx: STA index
23895
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 @see WDI_PostAssocReq
23897 @return Result of the function call
23898*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023899wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023900WDI_IsHwFrameTxTranslationCapable
23901(
23902 wpt_uint8 uSTAIdx
23903)
23904{
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 uma value*/
23907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 ------------------------------------------------------------------------*/
23910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23911 {
23912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23913 "WDI API call before module is initialized - Fail request");
23914
Jeff Johnsone7245742012-09-05 17:12:55 -070023915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 }
23917
Gopichand Nakkala976e3252013-01-03 15:45:56 -080023918#ifdef WLAN_SOFTAP_VSTA_FEATURE
23919 if (IS_VSTA_IDX(uSTAIdx))
23920 {
23921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23922 "STA %d is a Virtual STA, "
23923 "HW frame translation disabled", uSTAIdx);
23924 return eWLAN_PAL_FALSE;
23925 }
23926#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023927
Jeff Johnson295189b2012-06-20 16:38:30 -070023928 return gWDICb.bFrameTransEnabled;
23929}/*WDI_IsHwFrameTxTranslationCapable*/
23930
23931#ifdef FEATURE_WLAN_SCAN_PNO
23932/**
23933 @brief WDI_SetPreferredNetworkList
23934
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023937
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 wdiPNOScanCb: callback for passing back the response
23939 of the Set PNO operation received from the
23940 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023941
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 callback
23944
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 @return Result of the function call
23946*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023947WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023948WDI_SetPreferredNetworkReq
23949(
23950 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23951 WDI_PNOScanCb wdiPNOScanCb,
23952 void* pUserData
23953)
23954{
23955 WDI_EventInfoType wdiEventData = {{0}};
23956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23957
23958 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 ------------------------------------------------------------------------*/
23961 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23962 {
23963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23964 "WDI API call before module is initialized - Fail request");
23965
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 }
23968
23969 /*------------------------------------------------------------------------
23970 Fill in Event data and post to the Main FSM
23971 ------------------------------------------------------------------------*/
23972 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 wdiEventData.pUserData = pUserData;
23977
23978 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23979}
23980
23981
23982/**
23983 @brief WDI_SetRssiFilterReq
23984
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023987
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 wdiRssiFilterCb: callback for passing back the response
23989 of the Set RSSI Filter operation received from the
23990 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023991
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 callback
23994
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 @return Result of the function call
23996*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023998WDI_SetRssiFilterReq
23999(
24000 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24001 WDI_RssiFilterCb wdiRssiFilterCb,
24002 void* pUserData
24003)
24004{
24005 WDI_EventInfoType wdiEventData = {{0}};
24006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24007
24008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 ------------------------------------------------------------------------*/
24011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24012 {
24013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24014 "WDI API call before module is initialized - Fail request");
24015
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 }
24018
24019 /*------------------------------------------------------------------------
24020 Fill in Event data and post to the Main FSM
24021 ------------------------------------------------------------------------*/
24022 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 wdiEventData.pUserData = pUserData;
24027
24028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24029}/*WDI_SetRssiFilterReq*/
24030
24031/**
24032 @brief WDI_UpdateScanParamsReq
24033
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024036
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 wdiUpdateScanParamsCb: callback for passing back the response
24038 of the Set PNO operation received from the
24039 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024040
Jeff Johnson295189b2012-06-20 16:38:30 -070024041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 callback
24043
Jeff Johnson295189b2012-06-20 16:38:30 -070024044 @return Result of the function call
24045*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024046WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024047WDI_UpdateScanParamsReq
24048(
24049 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24050 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24051 void* pUserData
24052)
24053{
24054 WDI_EventInfoType wdiEventData = {{0}};
24055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24056
24057 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 ------------------------------------------------------------------------*/
24060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24061 {
24062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24063 "WDI API call before module is initialized - Fail request");
24064
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024066 }
24067
24068 /*------------------------------------------------------------------------
24069 Fill in Event data and post to the Main FSM
24070 ------------------------------------------------------------------------*/
24071 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 wdiEventData.pUserData = pUserData;
24076
24077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24078}
24079
24080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024083
24084 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 pwdiPNOScanReqParams: pointer to the info received
24086 from upper layers
24087 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 and its size
24089
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 @return Result of the function call
24091*/
24092
24093WDI_Status
24094WDI_PackPreferredNetworkList
24095(
24096 WDI_ControlBlockType* pWDICtx,
24097 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24098 wpt_uint8** ppSendBuffer,
24099 wpt_uint16* pSize
24100)
24101{
Jeff Johnsone7245742012-09-05 17:12:55 -070024102 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 wpt_uint16 usDataOffset = 0;
24104 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024105 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024106 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 /*-----------------------------------------------------------------------
24108 Get message buffer
24109 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024111 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024113 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 {
24115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24116 "Unable to get send buffer in Set PNO req %x ",
24117 pwdiPNOScanReqParams);
24118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 }
24121
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024122 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24123
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 /*-------------------------------------------------------------------------
24125 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24126 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024127 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024129 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24131
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024132 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24137
24138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24141 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24142 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24143
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024144 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024145 {
24146 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024147 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24149
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024150 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024152 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024153
24154 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024155 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024157
24158 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024159 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024161
Jeff Johnsone7245742012-09-05 17:12:55 -070024162 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024164 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024165 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24166 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24167 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24168 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024169
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024170 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024172 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024173
24174 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024175 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24177
24178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024179 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024180 pPrefNetwListParams->aNetworks[i].ssId.length,
24181 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 }
24183
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024184 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024185 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24187 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24188 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24189
24190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024191 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024192 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024193 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24194 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24195
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024196 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024198 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024199 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024200 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24202 }
24203
24204 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024205 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24207 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24208 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024209 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024210
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024211 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024212 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024213 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024215 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024216 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24217 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24218 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024220
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024221 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024222 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024223 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024224
24225 /*Set the output values*/
24226 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024227 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024228
24229 return WDI_STATUS_SUCCESS;
24230}/*WDI_PackPreferredNetworkList*/
24231
24232/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024235
24236 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 pwdiPNOScanReqParams: pointer to the info received
24238 from upper layers
24239 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 and its size
24241
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 @return Result of the function call
24243*/
24244
24245WDI_Status
24246WDI_PackPreferredNetworkListNew
24247(
24248 WDI_ControlBlockType* pWDICtx,
24249 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24250 wpt_uint8** ppSendBuffer,
24251 wpt_uint16* pSize
24252)
24253{
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 wpt_uint16 usDataOffset = 0;
24256 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024257 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024258 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024259
24260 /*-----------------------------------------------------------------------
24261 Get message buffer
24262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024264 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024266 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 {
24268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24269 "Unable to get send buffer in Set PNO req %x ",
24270 pwdiPNOScanReqParams);
24271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024273 }
24274
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024275 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24276
Jeff Johnson295189b2012-06-20 16:38:30 -070024277 /*-------------------------------------------------------------------------
24278 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24279 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024280 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024282 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24284
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024285 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24290
24291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024293 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24294 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24295 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24296
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024297 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 {
24299 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024300 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24302
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024303 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024305 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024306
24307 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024308 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024309 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024310
24311 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024312 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314
24315 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024316 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024321 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24323
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024324 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024326 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024327
24328 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024329 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24331
24332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024334 pPrefNetwListParams->aNetworks[i].ssId.length,
24335 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 }
24337
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024338 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24341 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24342 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24343
24344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024346 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24348 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24349
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024350 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024352 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024354 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24356 }
24357
24358 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024359 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24361 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24362 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024363 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024364
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024365 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024366 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024368
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024369 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24371 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24372 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024375 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024377 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024378
Jeff Johnson295189b2012-06-20 16:38:30 -070024379
24380 /*Set the output values*/
24381 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024383
24384 return WDI_STATUS_SUCCESS;
24385}/*WDI_PackPreferredNetworkListNew*/
24386
24387/**
24388 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024389
24390 @param pWDICtx: pointer to the WLAN DAL context
24391 pEventData: pointer to the event information structure
24392
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 @return Result of the function call
24394*/
24395WDI_Status
24396WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024397(
Jeff Johnson295189b2012-06-20 16:38:30 -070024398 WDI_ControlBlockType* pWDICtx,
24399 WDI_EventInfoType* pEventData
24400)
24401{
24402 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24403 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407
24408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 -------------------------------------------------------------------------*/
24411 if (( NULL == pEventData ) ||
24412 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24413 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24414 {
24415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 }
24420
24421 /*-------------------------------------------------------------------------
24422 Pack the PNO request structure based on version
24423 -------------------------------------------------------------------------*/
24424 if ( pWDICtx->wdiPNOVersion > 0 )
24425 {
24426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024427 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 pWDICtx->wdiPNOVersion);
24429
24430 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24431 &pSendBuffer, &usSendSize);
24432 }
24433 else
24434 {
24435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024436 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 pWDICtx->wdiPNOVersion);
24438
24439 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24440 &pSendBuffer, &usSendSize);
24441 }
24442
24443 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24444 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24445 {
24446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024447 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 }
24451
24452 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024454
24455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024456 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024458 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24459 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024460}
24461
24462/**
24463 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024464
24465 @param pWDICtx: pointer to the WLAN DAL context
24466 pEventData: pointer to the event information structure
24467
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 @see
24469 @return Result of the function call
24470*/
24471WDI_Status
24472WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024473(
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 WDI_ControlBlockType* pWDICtx,
24475 WDI_EventInfoType* pEventData
24476)
24477{
24478 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24479 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 wpt_uint16 usDataOffset = 0;
24482 wpt_uint16 usSendSize = 0;
24483 wpt_uint8 ucRssiThreshold;
24484
24485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024487 -------------------------------------------------------------------------*/
24488 if (( NULL == pEventData ) ||
24489 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24490 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24491 {
24492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 }
24497
24498 /*-----------------------------------------------------------------------
24499 Get message buffer
24500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024502 sizeof(ucRssiThreshold),
24503 &pSendBuffer, &usDataOffset, &usSendSize))||
24504 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24505 {
24506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24507 "Unable to get send buffer in Set PNO req %x %x %x",
24508 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 }
24512
24513 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24514
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 wpalMemoryCopy( pSendBuffer+usDataOffset,
24516 &ucRssiThreshold,
24517 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024518
24519 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024520 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024521
24522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024523 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024525 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24526 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024527}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024528#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24529/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024530 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024531
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024532 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024533 by the Device Interface
24534
24535 wdiRoamOffloadScancb: callback for passing back the response
24536 of the Roam Candidate Lookup Req operation received from the
24537 device
24538
24539 pUserData: user data will be passed back with the
24540 callback
24541 @return Result of the function call
24542*/
24543WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024544WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024545(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024546 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024547 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24548 void* pUserData
24549)
24550{
24551 WDI_EventInfoType wdiEventData = {{0}};
24552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24553
24554 /*------------------------------------------------------------------------
24555 Sanity Check
24556 ------------------------------------------------------------------------*/
24557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24558 {
24559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24560 "WDI API call before module is initialized - Fail request");
24561
24562 return WDI_STATUS_E_NOT_ALLOWED;
24563 }
24564
24565 /*------------------------------------------------------------------------
24566 Fill in Event data and post to the Main FSM
24567 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024568 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24569 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24570 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024571 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24572 wdiEventData.pUserData = pUserData;
24573
24574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24575}
24576
24577void
24578WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24579{
24580 switch (wdiEdType)
24581 {
24582 case WDI_ED_NONE:
24583 *EdType = eED_NONE;
24584 break;
24585 case WDI_ED_WEP40:
24586 case WDI_ED_WEP104:
24587 *EdType = eED_WEP;
24588 break;
24589 case WDI_ED_TKIP:
24590 *EdType = eED_TKIP;
24591 break;
24592 case WDI_ED_CCMP:
24593#ifdef WLAN_FEATURE_11W
24594 case WDI_ED_AES_128_CMAC:
24595#endif
24596 *EdType = eED_CCMP;
24597 break;
24598#ifdef FEATURE_WLAN_WAPI
24599 case WDI_ED_WPI:
24600 *EdType = eED_WPI;
24601 break;
24602#endif
24603 case WDI_ED_ANY:
24604 *EdType = eED_ANY;
24605 break;
24606
24607 default:
24608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24609 "%s: Unknown Encryption Type", __func__);
24610 break;
24611 }
24612}
24613
24614/**
24615 @brief Helper function to pack Start Roam Candidate Lookup
24616 Request parameters
24617
24618 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024619 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024620 from upper layers
24621 ppSendBuffer, pSize - out pointers of the packed buffer
24622 and its size
24623
24624 @return Result of the function call
24625*/
24626
24627WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024628WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024629(
24630 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024631 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024632 wpt_uint8** ppSendBuffer,
24633 wpt_uint16* pSize
24634)
24635{
24636 wpt_uint8* pSendBuffer = NULL;
24637 wpt_uint16 usDataOffset = 0;
24638 wpt_uint16 usSendSize = 0;
24639 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24640 wpt_uint8 i;
24641 /*-----------------------------------------------------------------------
24642 Get message buffer
24643 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024644 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024645 sizeof(tRoamCandidateListParams),
24646 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070024647 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024648 {
24649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24650 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024651 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024652 WDI_ASSERT(0);
24653 return WDI_STATUS_E_FAILURE;
24654 }
24655 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070024656 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024657 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024658 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024659 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024660 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024661 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024662 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024663 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024664 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024665 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024666
24667 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024668 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024669 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024670 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024671 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24672 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024673 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24674 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24675 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24676 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24677 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24678 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24679 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24680 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24681 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24682 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24683 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24684 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24685 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24686 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024687 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024688 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24689 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24690 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024691
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24693 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24694 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24695 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24696 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24697 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24698 "HomeAwayTime=%d\n",
24699 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24700 pRoamCandidateListParams->RoamScanOffloadEnabled,
24701 pRoamCandidateListParams->Command,
24702 pRoamCandidateListParams->StartScanReason,
24703 pRoamCandidateListParams->NeighborScanTimerPeriod,
24704 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24705 pRoamCandidateListParams->NeighborScanChannelMinTime,
24706 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24707 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24708 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24709 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24710 pRoamCandidateListParams->ConnectedNetwork.authentication,
24711 pRoamCandidateListParams->ConnectedNetwork.encryption,
24712 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24713 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24714 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024715 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024716 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024717 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024718 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024719 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24720 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024721 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024722 pRoamCandidateListParams->us24GProbeSize);
24723 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024724 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024725 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024726 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024727 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24728 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024729 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024730 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024731 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24732 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24733 pRoamCandidateListParams->nProbes =
24734 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24735 pRoamCandidateListParams->HomeAwayTime =
24736 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024738 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24739 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024741 }
24742
24743
24744 /*Set the output values*/
24745 *ppSendBuffer = pSendBuffer;
24746 *pSize = usSendSize;
24747 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024748}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024749
24750/**
24751 @brief Process Start Roam Candidate Lookup Request function
24752
24753 @param pWDICtx: pointer to the WLAN DAL context
24754 pEventData: pointer to the event information structure
24755
24756 @return Result of the function call
24757*/
24758WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024759WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024760(
24761 WDI_ControlBlockType* pWDICtx,
24762 WDI_EventInfoType* pEventData
24763)
24764{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024765 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024766 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24767 wpt_uint8* pSendBuffer = NULL;
24768 wpt_uint16 usSendSize = 0;
24769 WDI_Status wdiStatus;
24770 /*-------------------------------------------------------------------------
24771 Sanity check
24772 -------------------------------------------------------------------------*/
24773 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024774 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024775 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24776 {
24777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24778 "%s: Invalid parameters", __func__);
24779 WDI_ASSERT(0);
24780 return WDI_STATUS_E_FAILURE;
24781 }
24782
24783 /*-------------------------------------------------------------------------
24784 Pack the Start Roam Candidate Lookup request structure based on version
24785 -------------------------------------------------------------------------*/
24786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24787 "%s: Packing Roam Candidate Lookup request ", __func__);
24788
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024789 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024790 &pSendBuffer, &usSendSize);
24791
24792 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24793 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24794 {
24795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24796 "%s: failed to pack request parameters", __func__);
24797 WDI_ASSERT(0);
24798 return wdiStatus;
24799 }
24800
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024801 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24802 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024803
24804 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024805 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024806 -------------------------------------------------------------------------*/
24807 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024808 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024809}
24810
24811/**
24812 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24813 response is being received over the bus from HAL)
24814
24815 @param pWDICtx: pointer to the WLAN DAL context
24816 pEventData: pointer to the event information structure
24817
24818 @see
24819 @return Result of the function call
24820*/
24821WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024822WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024823(
24824 WDI_ControlBlockType* pWDICtx,
24825 WDI_EventInfoType* pEventData
24826)
24827{
24828 WDI_Status wdiStatus;
24829 eHalStatus halStatus;
24830 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24831
24832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24833
24834 /*-------------------------------------------------------------------------
24835 Sanity check
24836 -------------------------------------------------------------------------*/
24837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24838 ( NULL == pEventData->pEventData ))
24839 {
24840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24841 "%s: Invalid parameters", __func__);
24842 WDI_ASSERT(0);
24843 return WDI_STATUS_E_FAILURE;
24844 }
24845
24846 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24847
24848 /*-------------------------------------------------------------------------
24849 Extract response and send it to UMAC
24850 -------------------------------------------------------------------------*/
24851 halStatus = *((eHalStatus*)pEventData->pEventData);
24852 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24853
24854 /*Notify UMAC*/
24855 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24856
24857 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024858}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024859#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024860
24861/**
24862 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024863
24864 @param pWDICtx: pointer to the WLAN DAL context
24865 pEventData: pointer to the event information structure
24866
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 @see
24868 @return Result of the function call
24869*/
24870WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024871WDI_PackUpdateScanParamsReq
24872(
24873 WDI_ControlBlockType* pWDICtx,
24874 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24875 wpt_uint8** ppSendBuffer,
24876 wpt_uint16* pSize
24877)
24878{
24879 wpt_uint8* pSendBuffer = NULL;
24880 wpt_uint16 usDataOffset = 0;
24881 wpt_uint16 usSendSize = 0;
24882 tUpdateScanParams updateScanParams = {0};
24883
24884
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080024885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024886 "Begin WDI Update Scan Parameters Old Style Params");
24887 /*-----------------------------------------------------------------------
24888 Get message buffer
24889 -----------------------------------------------------------------------*/
24890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24891 sizeof(updateScanParams),
24892 &pSendBuffer, &usDataOffset, &usSendSize))||
24893 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24894 {
24895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24896 "Unable to get send buffer in Update Scan Params req %x",
24897 pwdiUpdateScanParams);
24898 WDI_ASSERT(0);
24899 return WDI_STATUS_E_FAILURE;
24900 }
24901
24902 //
24903 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24904 //
24905
24906 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24907 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24908
24909 updateScanParams.ucChannelCount =
24910 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24911 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24912 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24913 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24914
24915 wpalMemoryCopy( updateScanParams.aChannels,
24916 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24917 updateScanParams.ucChannelCount);
24918
24919
24920 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24921 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24922 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24923 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24924 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24925
24926 wpalMemoryCopy( pSendBuffer+usDataOffset,
24927 &updateScanParams,
24928 sizeof(updateScanParams));
24929
24930 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24931 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24932
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080024933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024934 "End Update Scan Parameters Old Style");
24935
24936 /*Set the output values*/
24937 *ppSendBuffer = pSendBuffer;
24938 *pSize = usSendSize;
24939
24940 return WDI_STATUS_SUCCESS;
24941}
24942
24943/**
24944 @brief Process Update Scan Params function
24945
24946 @param pWDICtx: pointer to the WLAN DAL context
24947 pEventData: pointer to the event information structure
24948
24949 @see
24950 @return Result of the function call
24951*/
24952WDI_Status
24953WDI_PackUpdateScanParamsReqEx
24954(
24955 WDI_ControlBlockType* pWDICtx,
24956 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24957 wpt_uint8** ppSendBuffer,
24958 wpt_uint16* pSize
24959)
24960{
24961 wpt_uint8* pSendBuffer = NULL;
24962 wpt_uint16 usDataOffset = 0;
24963 wpt_uint16 usSendSize = 0;
24964 tUpdateScanParamsEx updateScanParams = {0};
24965
24966
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024967 /*-----------------------------------------------------------------------
24968 Get message buffer
24969 -----------------------------------------------------------------------*/
24970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24971 sizeof(updateScanParams),
24972 &pSendBuffer, &usDataOffset, &usSendSize))||
24973 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24974 {
24975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24976 "Unable to get send buffer in Update Scan Params Ex req %x",
24977 pwdiUpdateScanParams);
24978 WDI_ASSERT(0);
24979 return WDI_STATUS_E_FAILURE;
24980 }
24981
24982 //
24983 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24984 //
24985
24986 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24987 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24988
24989 updateScanParams.ucChannelCount =
24990 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24991 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24992 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24993 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24994
24995 wpalMemoryCopy( updateScanParams.aChannels,
24996 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24997 updateScanParams.ucChannelCount);
24998
24999
25000 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25001 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25002 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25003 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25004 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25005
25006 wpalMemoryCopy( pSendBuffer+usDataOffset,
25007 &updateScanParams,
25008 sizeof(updateScanParams));
25009
25010 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25011 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25012
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025013 /*Set the output values*/
25014 *ppSendBuffer = pSendBuffer;
25015 *pSize = usSendSize;
25016
25017 return WDI_STATUS_SUCCESS;
25018}
25019
25020/**
25021 @brief Process Update Scan Params function
25022
25023 @param pWDICtx: pointer to the WLAN DAL context
25024 pEventData: pointer to the event information structure
25025
25026 @see
25027 @return Result of the function call
25028*/
25029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025030WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025031(
Jeff Johnson295189b2012-06-20 16:38:30 -070025032 WDI_ControlBlockType* pWDICtx,
25033 WDI_EventInfoType* pEventData
25034)
25035{
25036 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25037 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025038 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025039 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025040 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025041
25042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025044 -------------------------------------------------------------------------*/
25045 if (( NULL == pEventData ) ||
25046 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25047 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25048 {
25049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 }
25054
25055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25056 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025057
25058 //
25059 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25060 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025061 if ( pWDICtx->wlanVersion.revision < 1 )
25062 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025063 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025064 &pSendBuffer, &usSendSize);
25065 }
25066 else
25067 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025068 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25069 &pSendBuffer, &usSendSize);
25070 }
25071
25072 if(WDI_STATUS_SUCCESS != wdiStatus)
25073 {
25074 //memory allocation failed
25075 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025076 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025077
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025080 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025082 wdiUpdateScanParamsCb, pEventData->pUserData,
25083 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025084}
25085
25086/**
25087 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025088
25089 @param pWDICtx: pointer to the WLAN DAL context
25090 pEventData: pointer to the event information structure
25091
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 @see
25093 @return Result of the function call
25094*/
25095WDI_Status
25096WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025097(
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 WDI_ControlBlockType* pWDICtx,
25099 WDI_EventInfoType* pEventData
25100)
25101{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025102 WDI_LowLevelIndType wdiInd;
25103 tpPrefNetwFoundParams pNetwFoundParams;
25104 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105
25106
25107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 -------------------------------------------------------------------------*/
25110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25111 ( NULL == pEventData->pEventData ))
25112 {
25113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025115 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 }
25118
25119 /*-------------------------------------------------------------------------
25120 Extract indication and send it to UMAC
25121 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025122 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25123
25124 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25125 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25126 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25127
25128 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25129 {
25130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25131 "%s: fail to allocate memory", __func__);
25132 return WDI_STATUS_MEM_FAILURE;
25133 }
25134
25135 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25136 (pNetwFoundParams->ssId.length < 32 )?
25137 pNetwFoundParams->ssId.length : 32;
25138 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25139 pNetwFoundParams->ssId.ssId,
25140 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25141 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25142 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25143 pNetwFoundParams->frameLength;
25144 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25145 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25146 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025147
25148 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025150
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 // DEBUG
25152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25153 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
25154 wdiInd.wdiIndicationType,
25155 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25156 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25157
ltimariub77f24b2013-01-24 18:54:33 -080025158 if ( pWDICtx->wdiLowLevelIndCB )
25159 {
25160 /*Notify UMAC*/
25161 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25162 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025163
25164 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025165}
25166
25167/**
25168 @brief Process PNO Rsp function (called when a
25169 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025170
25171 @param pWDICtx: pointer to the WLAN DAL context
25172 pEventData: pointer to the event information structure
25173
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 @see
25175 @return Result of the function call
25176*/
25177WDI_Status
25178WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025179(
Jeff Johnson295189b2012-06-20 16:38:30 -070025180 WDI_ControlBlockType* pWDICtx,
25181 WDI_EventInfoType* pEventData
25182)
25183{
25184 WDI_Status wdiStatus;
25185 eHalStatus halStatus;
25186 WDI_PNOScanCb wdiPNOScanCb = NULL;
25187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25188
25189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 -------------------------------------------------------------------------*/
25192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25193 ( NULL == pEventData->pEventData ))
25194 {
25195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025199 }
25200
25201
Jeff Johnsone7245742012-09-05 17:12:55 -070025202 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025203
25204 /*-------------------------------------------------------------------------
25205 Extract response and send it to UMAC
25206 -------------------------------------------------------------------------*/
25207 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025208 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025209
25210 /*Notify UMAC*/
25211 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25212
Jeff Johnsone7245742012-09-05 17:12:55 -070025213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025214}/*WDI_ProcessSetPreferredNetworkRsp*/
25215
25216/**
25217 @brief Process RSSI Filter Rsp function (called when a
25218 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025219
25220 @param pWDICtx: pointer to the WLAN DAL context
25221 pEventData: pointer to the event information structure
25222
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 @see
25224 @return Result of the function call
25225*/
25226WDI_Status
25227WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025228(
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 WDI_ControlBlockType* pWDICtx,
25230 WDI_EventInfoType* pEventData
25231)
25232{
25233 WDI_Status wdiStatus;
25234 eHalStatus halStatus;
25235 WDI_RssiFilterCb wdiRssiFilterCb;
25236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25237
25238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 -------------------------------------------------------------------------*/
25241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25242 ( NULL == pEventData->pEventData ))
25243 {
25244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025248 }
25249
Jeff Johnsone7245742012-09-05 17:12:55 -070025250 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025251
25252 /*-------------------------------------------------------------------------
25253 Extract response and send it to UMAC
25254 -------------------------------------------------------------------------*/
25255 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025256 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025257
25258 /*Notify UMAC*/
25259 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25260
Jeff Johnsone7245742012-09-05 17:12:55 -070025261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025262}/*WDI_ProcessSetRssiFilterRsp*/
25263
25264/**
25265 @brief Process Update Scan Params Rsp function (called when a
25266 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025267
25268 @param pWDICtx: pointer to the WLAN DAL context
25269 pEventData: pointer to the event information structure
25270
Jeff Johnson295189b2012-06-20 16:38:30 -070025271 @see
25272 @return Result of the function call
25273*/
25274WDI_Status
25275WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025276(
Jeff Johnson295189b2012-06-20 16:38:30 -070025277 WDI_ControlBlockType* pWDICtx,
25278 WDI_EventInfoType* pEventData
25279)
25280{
25281 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025282 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025284 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25286
25287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 -------------------------------------------------------------------------*/
25290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25291 ( NULL == pEventData->pEventData ))
25292 {
25293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025297 }
25298
25299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025300 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025301
Jeff Johnsone7245742012-09-05 17:12:55 -070025302 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025303
25304 /*-------------------------------------------------------------------------
25305 Extract response and send it to UMAC
25306 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025307 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25308 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 sizeof(halUpdScanParams.status));
25310
25311 uStatus = halUpdScanParams.status;
25312
25313 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025315
25316 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025318
Jeff Johnsone7245742012-09-05 17:12:55 -070025319 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025320
25321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025322 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 halUpdScanParams.status);
25324
25325 /*Notify UMAC*/
25326 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25327
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025329}
25330#endif // FEATURE_WLAN_SCAN_PNO
25331
25332#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025334WDI_8023MulticastListReq
25335(
25336 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25337 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25338 void* pUserData
25339)
25340{
25341 WDI_EventInfoType wdiEventData;
25342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25343
25344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025345 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025346
25347 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025348 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025349 ------------------------------------------------------------------------*/
25350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25351 {
25352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25353 "WDI API call before module is initialized - Fail request");
25354
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 }
25357
25358 /*------------------------------------------------------------------------
25359 Fill in Event data and post to the Main FSM
25360 ------------------------------------------------------------------------*/
25361 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025364 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 wdiEventData.pUserData = pUserData;
25366
25367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25368}
25369
Jeff Johnsone7245742012-09-05 17:12:55 -070025370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025371WDI_ReceiveFilterSetFilterReq
25372(
25373 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25374 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25375 void* pUserData
25376)
25377{
25378 WDI_EventInfoType wdiEventData;
25379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25380
25381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025382 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025383
25384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025386 ------------------------------------------------------------------------*/
25387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25388 {
25389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25390 "WDI API call before module is initialized - Fail request");
25391
Jeff Johnsone7245742012-09-05 17:12:55 -070025392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025393 }
25394
25395 /*------------------------------------------------------------------------
25396 Fill in Event data and post to the Main FSM
25397 ------------------------------------------------------------------------*/
25398 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025399 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25400 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070025401 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25402 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025403 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025404 wdiEventData.pUserData = pUserData;
25405
25406
25407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25408}
25409
Jeff Johnsone7245742012-09-05 17:12:55 -070025410WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025411WDI_FilterMatchCountReq
25412(
25413 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25414 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25415 void* pUserData
25416)
25417{
25418 WDI_EventInfoType wdiEventData;
25419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25420
25421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025422 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025423
25424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 ------------------------------------------------------------------------*/
25427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25428 {
25429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25430 "WDI API call before module is initialized - Fail request");
25431
Jeff Johnsone7245742012-09-05 17:12:55 -070025432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025433 }
25434
25435 /*------------------------------------------------------------------------
25436 Fill in Event data and post to the Main FSM
25437 ------------------------------------------------------------------------*/
25438 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 wdiEventData.pUserData = pUserData;
25443
25444
25445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25446}
25447
Jeff Johnsone7245742012-09-05 17:12:55 -070025448WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025449WDI_ReceiveFilterClearFilterReq
25450(
25451 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25452 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25453 void* pUserData
25454)
25455{
25456 WDI_EventInfoType wdiEventData;
25457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25458
25459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025460 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025461
25462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025464 ------------------------------------------------------------------------*/
25465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25466 {
25467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25468 "WDI API call before module is initialized - Fail request");
25469
Jeff Johnsone7245742012-09-05 17:12:55 -070025470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025471 }
25472
25473 /*------------------------------------------------------------------------
25474 Fill in Event data and post to the Main FSM
25475 ------------------------------------------------------------------------*/
25476 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025477 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025478 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025479 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 wdiEventData.pUserData = pUserData;
25481
25482
25483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25484}
25485
25486/**
25487 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025488
25489 @param pWDICtx: pointer to the WLAN DAL context
25490 pEventData: pointer to the event information structure
25491
Jeff Johnson295189b2012-06-20 16:38:30 -070025492 @see
25493 @return Result of the function call
25494*/
25495WDI_Status
25496WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025497(
Jeff Johnson295189b2012-06-20 16:38:30 -070025498 WDI_ControlBlockType* pWDICtx,
25499 WDI_EventInfoType* pEventData
25500)
25501{
25502 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25503 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 wpt_uint16 usDataOffset = 0;
25506 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025507 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025509 wpt_uint8 ucCurrentBSSSesIdx = 0;
25510 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025511
25512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025513 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025514
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025515 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25516 if( NULL == pRcvFltMcAddrListType )
25517 {
25518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25519 "Failed to alloc in WDI_Process8023MulticastListReq");
25520 return WDI_STATUS_E_FAILURE;
25521 }
25522
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025525 -------------------------------------------------------------------------*/
25526 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025527 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25531 {
25532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025533 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025534 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 return WDI_STATUS_E_FAILURE;
25537 }
25538
25539 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25540 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25541 &pBSSSes);
25542 if ( NULL == pBSSSes )
25543 {
25544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025545 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025546 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025548 }
25549
25550 /*-----------------------------------------------------------------------
25551 Get message buffer
25552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25554 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 sizeof(tHalRcvFltMcAddrListType),
25556 &pSendBuffer, &usDataOffset, &usSendSize))||
25557 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25558 {
25559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25560 "Unable to get send buffer in "
25561 "WDI_Process8023MulticastListReq() %x %x %x",
25562 pEventData, pwdiFltPktSetMcListReqParamsType,
25563 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070025564 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 }
25568
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025569 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025571 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025573 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25575 sizeof(tSirMacAddr));
25576 }
25577
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025578 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025580 pRcvFltMcAddrListType,
25581 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025582
25583 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025584 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025585
25586
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025587 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025594}
25595
25596/**
25597 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025598
25599 @param pWDICtx: pointer to the WLAN DAL context
25600 pEventData: pointer to the event information structure
25601
Jeff Johnson295189b2012-06-20 16:38:30 -070025602 @see
25603 @return Result of the function call
25604*/
25605WDI_Status
25606WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025607(
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 WDI_ControlBlockType* pWDICtx,
25609 WDI_EventInfoType* pEventData
25610)
25611{
25612 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25613 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 wpt_uint16 usDataOffset = 0;
25616 wpt_uint16 usSendSize = 0;
25617 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025618 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 wpt_uint8 ucCurrentBSSSesIdx = 0;
25621 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025622 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25623 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025624
25625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025626 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025627
25628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 -------------------------------------------------------------------------*/
25631 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25636 {
25637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025640 return WDI_STATUS_E_FAILURE;
25641 }
25642
25643 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25644 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25645 &pBSSSes);
25646 if ( NULL == pBSSSes )
25647 {
25648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025649 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 }
25652
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025653 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25654 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025655
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025656 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25657 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25658 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25659
25660 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25661 usSessRcvPktFilterCfgSize);
25662
25663 if(NULL == pSessRcvPktFilterCfg)
25664 {
25665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25666 "%s: Failed to allocate memory for "
25667 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025668 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025669 WDI_ASSERT(0);
25670 return WDI_STATUS_E_FAILURE;
25671 }
25672
25673 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25674
25675 /*-----------------------------------------------------------------------
25676 Get message buffer
25677 -----------------------------------------------------------------------*/
25678
25679 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25680 usSessRcvPktFilterCfgSize,
25681 &pSendBuffer, &usDataOffset, &usSendSize))||
25682 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25683 {
25684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25685 "Unable to get send buffer in "
25686 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25687 pEventData, pwdiSetRcvPktFilterReqInfo,
25688 wdiReceiveFilterSetFilterCb);
25689 WDI_ASSERT(0);
25690 wpalMemoryFree(pSessRcvPktFilterCfg);
25691 return WDI_STATUS_E_FAILURE;
25692 }
25693
25694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25695 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25696 usSendSize,pSessRcvPktFilterCfg);
25697
25698 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25699 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25700 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25701 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25702
25703 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25704
25705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25706 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25707 pSessRcvPktFilterCfg->filterType);
25708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25709 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25710 pSessRcvPktFilterCfg->coleasceTime);
25711
25712 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25713 {
25714 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25715 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25716 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25717 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25718 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25719 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25720 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25721 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25722
25723 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25724 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25725 8);
25726 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25727 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25728 8);
25729
25730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25731 "Out:Proto %d Comp Flag %d \n",
25732 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25733 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25734
25735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25736 "Data Offset %d Data Len %d\n",
25737 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25738 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25739
25740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25741 "CData: %d:%d:%d:%d:%d:%d\n",
25742 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25743 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25744 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25745 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25746 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25747 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25748
25749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25750 "MData: %d:%d:%d:%d:%d:%d\n",
25751 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25752 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25753 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25754 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25755 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25756 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25757 }
25758
25759 wpalMemoryCopy( pSendBuffer+usDataOffset,
25760 pSessRcvPktFilterCfg,
25761 usSessRcvPktFilterCfgSize);
25762
25763
25764 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25765 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25766
25767 wpalMemoryFree(pSessRcvPktFilterCfg);
25768
25769 }
25770 /*If SLM_SESSIONIZATION is not supported then do this */
25771 else
25772 {
25773 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25774 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25775 * sizeof(tHalRcvPktFilterParams));
25776
25777 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 usRcvPktFilterCfgSize);
25779
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025780 if(NULL == pRcvPktFilterCfg)
25781 {
25782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25783 "%s: Failed to allocate memory for "
25784 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025785 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025786 WDI_ASSERT(0);
25787 return WDI_STATUS_E_FAILURE;
25788 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025789
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025790 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025791
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025792 /*-----------------------------------------------------------------------
25793 Get message buffer
25794 -----------------------------------------------------------------------*/
25795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 usRcvPktFilterCfgSize,
25797 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025798 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25799 {
25800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 "Unable to get send buffer in "
25802 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25803 pEventData, pwdiSetRcvPktFilterReqInfo,
25804 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025805 WDI_ASSERT(0);
25806 wpalMemoryFree(pRcvPktFilterCfg);
25807 return WDI_STATUS_E_FAILURE;
25808 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025809
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025811 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 usSendSize,usRcvPktFilterCfgSize);
25813
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025814 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25815 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25816 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25817 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025818
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025820 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025821 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025823 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025824 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025825
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025826 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25827 {
25828 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25829 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25830 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25831 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25832 pRcvPktFilterCfg->paramsData[i].dataOffset =
25833 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25834 pRcvPktFilterCfg->paramsData[i].dataLength =
25835 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025836
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025837 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25839 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025840 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25842 8);
25843
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25848
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25850 "Data Offset %d Data Len %d\n",
25851 pRcvPktFilterCfg->paramsData[i].dataOffset,
25852 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025853
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25855 "CData: %d:%d:%d:%d:%d:%d\n",
25856 pRcvPktFilterCfg->paramsData[i].compareData[0],
25857 pRcvPktFilterCfg->paramsData[i].compareData[1],
25858 pRcvPktFilterCfg->paramsData[i].compareData[2],
25859 pRcvPktFilterCfg->paramsData[i].compareData[3],
25860 pRcvPktFilterCfg->paramsData[i].compareData[4],
25861 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025862
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25864 "MData: %d:%d:%d:%d:%d:%d\n",
25865 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25866 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25867 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25868 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25869 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25870 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25871 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025872
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025873 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025874 pRcvPktFilterCfg,
25875 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025876
25877
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025878 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25879 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025880
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025882 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025883 wpalMemoryFree(pRcvPktFilterCfg);
25884 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025886 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025888 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025891}
25892
25893/**
25894 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025895
25896 @param pWDICtx: pointer to the WLAN DAL context
25897 pEventData: pointer to the event information structure
25898
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 @see
25900 @return Result of the function call
25901*/
25902WDI_Status
25903WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025904(
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 WDI_ControlBlockType* pWDICtx,
25906 WDI_EventInfoType* pEventData
25907)
25908{
25909 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25910 NULL;
25911 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25912 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025913 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025914 wpt_uint16 usDataOffset = 0;
25915 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025916 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25917 wpt_uint8 ucCurrentBSSSesIdx = 0;
25918 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025919
25920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025921 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025922
25923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025925 -------------------------------------------------------------------------*/
25926 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025927 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025929 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25931 {
25932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 }
25937
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025938 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25939 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25940 &pBSSSes);
25941 if ( NULL == pBSSSes )
25942 {
25943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025944 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025945 return WDI_STATUS_E_FAILURE;
25946 }
25947
Jeff Johnson295189b2012-06-20 16:38:30 -070025948 /*-----------------------------------------------------------------------
25949 Get message buffer
25950 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25952 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025953 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025954 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025955 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 {
25957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25958 "Unable to get send buffer in "
25959 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25960 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25961 wdiFilterMatchCountCb);
25962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 }
25965
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025966 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25967 wpalMemoryCopy( pSendBuffer+usDataOffset,
25968 &rcvFltPktMatchCntReqParam,
25969 sizeof(rcvFltPktMatchCntReqParam));
25970
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 //
25972 // Don't need to fill send buffer other than header
25973 //
25974 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025975 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025976
25977
25978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025979 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025981 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25982 wdiFilterMatchCountCb,
25983 pEventData->pUserData,
25984 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025985}
25986
25987/**
25988 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025989
25990 @param pWDICtx: pointer to the WLAN DAL context
25991 pEventData: pointer to the event information structure
25992
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 @see
25994 @return Result of the function call
25995*/
25996WDI_Status
25997WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025998(
Jeff Johnson295189b2012-06-20 16:38:30 -070025999 WDI_ControlBlockType* pWDICtx,
26000 WDI_EventInfoType* pEventData
26001)
Jeff Johnsone7245742012-09-05 17:12:55 -070026002{
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26004 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026005 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026006 wpt_uint16 usDataOffset = 0;
26007 wpt_uint16 usSendSize = 0;
26008 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026009 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026010 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026011
26012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026013 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026014
26015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 -------------------------------------------------------------------------*/
26018 if (( NULL == pEventData ) ||
26019 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26020 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026021 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026022 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26023 {
26024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026027 return WDI_STATUS_E_FAILURE;
26028 }
26029
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026030 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026031 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26032 &pBSSSes);
26033 if ( NULL == pBSSSes )
26034 {
26035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026036 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 }
26039
26040 /*-----------------------------------------------------------------------
26041 Get message buffer
26042 -----------------------------------------------------------------------*/
26043 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026044 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026045 sizeof(tHalRcvFltPktClearParam),
26046 &pSendBuffer, &usDataOffset, &usSendSize))||
26047 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26048 {
26049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26050 "Unable to get send buffer in "
26051 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26052 pEventData, pwdiRcvFltPktClearReqParamsType,
26053 wdiRcvFltPktClearFilterCb);
26054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 }
26057
26058
26059 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026060 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026061 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026063
Jeff Johnsone7245742012-09-05 17:12:55 -070026064 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26065 wpalMemoryCopy( pSendBuffer+usDataOffset,
26066 &rcvFltPktClearParam,
26067 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026068
26069 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026070 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026071
26072
26073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026074 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026078 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026079}
26080
26081/**
26082 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026083
26084 @param pWDICtx: pointer to the WLAN DAL context
26085 pEventData: pointer to the event information structure
26086
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 @see
26088 @return Result of the function call
26089*/
26090WDI_Status
26091WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026092(
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 WDI_ControlBlockType* pWDICtx,
26094 WDI_EventInfoType* pEventData
26095)
26096{
Jeff Johnson295189b2012-06-20 16:38:30 -070026097 eHalStatus halStatus;
26098 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026099 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26100 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26102
26103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026104 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026105
26106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026108 -------------------------------------------------------------------------*/
26109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26110 ( NULL == pEventData->pEventData ))
26111 {
26112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 }
26117
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026119
26120 /*-------------------------------------------------------------------------
26121 Extract response and send it to UMAC
26122 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026123 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26124 {
26125 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26126 pEventData->pEventData,
26127 sizeof(halRcvFltPktSetMcListRsp));
26128
26129 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26130 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26131 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26132 halRcvFltPktSetMcListRsp.bssIdx;
26133 }
26134 else
26135 {
26136 halStatus = *((eHalStatus*)pEventData->pEventData);
26137 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26138 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026139
26140 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026141 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026142
Jeff Johnsone7245742012-09-05 17:12:55 -070026143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026144}
26145
26146/**
26147 @brief Process Set Rsp function (called when a
26148 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026149
26150 @param pWDICtx: pointer to the WLAN DAL context
26151 pEventData: pointer to the event information structure
26152
Jeff Johnson295189b2012-06-20 16:38:30 -070026153 @see
26154 @return Result of the function call
26155*/
26156WDI_Status
26157WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026158(
Jeff Johnson295189b2012-06-20 16:38:30 -070026159 WDI_ControlBlockType* pWDICtx,
26160 WDI_EventInfoType* pEventData
26161)
26162{
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 eHalStatus halStatus;
26164 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026165 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26166 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26168
26169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026170 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026171
26172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 -------------------------------------------------------------------------*/
26175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26176 ( NULL == pEventData->pEventData ))
26177 {
26178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026182 }
26183
26184 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186
26187 /*-------------------------------------------------------------------------
26188 Extract response and send it to UMAC
26189 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026190 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26191 {
26192 wpalMemoryCopy( &halSetPktFilterRspParams,
26193 pEventData->pEventData,
26194 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026195
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026196 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26197 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26198 }
26199 else
26200 {
26201 halStatus = *((eHalStatus*)pEventData->pEventData);
26202 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026205 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026206
Jeff Johnsone7245742012-09-05 17:12:55 -070026207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026208}
26209
26210/**
26211 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026212
26213 @param pWDICtx: pointer to the WLAN DAL context
26214 pEventData: pointer to the event information structure
26215
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 @see
26217 @return Result of the function call
26218*/
26219WDI_Status
26220WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026221(
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 WDI_ControlBlockType* pWDICtx,
26223 WDI_EventInfoType* pEventData
26224)
26225{
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026227 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026228 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26229 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026230
26231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26232
26233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026234 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026235
26236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 -------------------------------------------------------------------------*/
26239 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26240 ( NULL == pEventData->pEventData ))
26241 {
26242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 }
26247
Jeff Johnsone7245742012-09-05 17:12:55 -070026248 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026249
26250 /*-------------------------------------------------------------------------
26251 Extract response and send it to UMAC
26252 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026253 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26254 {
26255 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26256 pEventData->pEventData,
26257 sizeof(halRcvFltrPktMatachRsp));
26258
26259 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26260 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26261 }
26262 else
26263 {
26264 halStatus = *((eHalStatus*)pEventData->pEventData);
26265 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26266 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026267
26268 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026269 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026270
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026272}
26273
26274/**
26275 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026276
26277 @param pWDICtx: pointer to the WLAN DAL context
26278 pEventData: pointer to the event information structure
26279
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 @see
26281 @return Result of the function call
26282*/
26283WDI_Status
26284WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026285(
Jeff Johnson295189b2012-06-20 16:38:30 -070026286 WDI_ControlBlockType* pWDICtx,
26287 WDI_EventInfoType* pEventData
26288)
26289{
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 eHalStatus halStatus;
26291 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026292 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26293 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26295
26296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026297 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026298
26299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 -------------------------------------------------------------------------*/
26302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26303 ( NULL == pEventData->pEventData ))
26304 {
26305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026309 }
26310
26311 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026313
26314 /*-------------------------------------------------------------------------
26315 Extract response and send it to UMAC
26316 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026317 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26318 {
26319 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26320 pEventData->pEventData,
26321 sizeof(halRcvFltPktClearRspMsg));
26322
26323 wdiRcvFltPktClearRspParamsType.wdiStatus =
26324 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26325 wdiRcvFltPktClearRspParamsType.bssIdx =
26326 halRcvFltPktClearRspMsg.bssIdx;
26327 }
26328 else
26329 {
26330 halStatus = *((eHalStatus*)pEventData->pEventData);
26331 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26332 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026333
26334 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026335 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026336
Jeff Johnsone7245742012-09-05 17:12:55 -070026337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338}
26339#endif // WLAN_FEATURE_PACKET_FILTERING
26340
26341/**
26342 @brief Process Shutdown Rsp function
26343 There is no shutdown response comming from HAL
26344 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026345
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026347 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026348
26349 @see
26350 @return Result of the function call
26351*/
26352WDI_Status
26353WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026354(
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 WDI_ControlBlockType* pWDICtx,
26356 WDI_EventInfoType* pEventData
26357)
26358{
26359 /*There is no shutdown response comming from HAL - function just kept for
26360 simmetry */
26361 WDI_ASSERT(0);
26362 return WDI_STATUS_SUCCESS;
26363}/*WDI_ProcessShutdownRsp*/
26364
26365/**
26366 @brief WDI_SetPowerParamsReq
26367
Jeff Johnsone7245742012-09-05 17:12:55 -070026368 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026369 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026370
Jeff Johnson295189b2012-06-20 16:38:30 -070026371 wdiPowerParamsCb: callback for passing back the response
26372 of the Set Power Params operation received from the
26373 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026374
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026376 callback
26377
Jeff Johnson295189b2012-06-20 16:38:30 -070026378 @return Result of the function call
26379*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026381WDI_SetPowerParamsReq
26382(
26383 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26384 WDI_SetPowerParamsCb wdiPowerParamsCb,
26385 void* pUserData
26386)
26387{
26388 WDI_EventInfoType wdiEventData;
26389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26390
26391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026393 ------------------------------------------------------------------------*/
26394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26395 {
26396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26397 "WDI API call before module is initialized - Fail request");
26398
Jeff Johnsone7245742012-09-05 17:12:55 -070026399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 }
26401
26402 /*------------------------------------------------------------------------
26403 Fill in Event data and post to the Main FSM
26404 ------------------------------------------------------------------------*/
26405 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 wdiEventData.pUserData = pUserData;
26410
26411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26412}/*WDI_SetPowerParamsReq*/
26413
26414/**
26415 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026416
26417 @param pWDICtx: pointer to the WLAN DAL context
26418 pEventData: pointer to the event information structure
26419
Jeff Johnson295189b2012-06-20 16:38:30 -070026420 @see
26421 @return Result of the function call
26422*/
26423WDI_Status
26424WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026425(
Jeff Johnson295189b2012-06-20 16:38:30 -070026426 WDI_ControlBlockType* pWDICtx,
26427 WDI_EventInfoType* pEventData
26428)
26429{
26430 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26431 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026433 wpt_uint16 usDataOffset = 0;
26434 wpt_uint16 usSendSize = 0;
26435 tSetPowerParamsType powerParams;
26436
26437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026439 -------------------------------------------------------------------------*/
26440 if (( NULL == pEventData ) ||
26441 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26442 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26443 {
26444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 }
26449
26450 /*-----------------------------------------------------------------------
26451 Get message buffer
26452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 sizeof(powerParams),
26455 &pSendBuffer, &usDataOffset, &usSendSize))||
26456 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26457 {
26458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26459 "Unable to get send buffer in Set PNO req %x %x %x",
26460 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 }
26464
26465 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026466 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026467 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26468
26469 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026470 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26472
26473 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026474 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026475 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26476
26477 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26480
26481 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026482 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026483 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26484
26485 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026486 powerParams.uBETInterval =
26487 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026488
Yue Mac24062f2013-05-13 17:01:29 -070026489 /* MAX LI for modulated DTIM */
26490 powerParams.uMaxLIModulatedDTIM =
26491 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026492
26493 wpalMemoryCopy( pSendBuffer+usDataOffset,
26494 &powerParams,
26495 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026496
26497 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026498 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026499
26500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026501 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026503 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26504 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026505}
26506
26507/**
26508 @brief Process Power Params Rsp function (called when a
26509 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026510
26511 @param pWDICtx: pointer to the WLAN DAL context
26512 pEventData: pointer to the event information structure
26513
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 @see
26515 @return Result of the function call
26516*/
26517WDI_Status
26518WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026519(
Jeff Johnson295189b2012-06-20 16:38:30 -070026520 WDI_ControlBlockType* pWDICtx,
26521 WDI_EventInfoType* pEventData
26522)
26523{
26524 WDI_Status wdiStatus;
26525 eHalStatus halStatus;
26526 WDI_SetPowerParamsCb wdiPowerParamsCb;
26527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26528
26529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 -------------------------------------------------------------------------*/
26532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26533 ( NULL == pEventData->pEventData ))
26534 {
26535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026539 }
26540
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026542
26543 /*-------------------------------------------------------------------------
26544 Extract response and send it to UMAC
26545 -------------------------------------------------------------------------*/
26546 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026548
26549 /*Notify UMAC*/
26550 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26551
Jeff Johnsone7245742012-09-05 17:12:55 -070026552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026553}/*WDI_ProcessSetPowerParamsRsp*/
26554
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053026555/**
26556 @brief WDI_dhcpStartInd
26557 Host will send an event to the FW when DHCP is initiated
26558
26559 @param
26560 WDI_DHCPInd: DHCP Indication
26561 @see
26562 @return Result of the function call
26563*/
26564WDI_Status
26565WDI_dhcpStartInd
26566(
26567 WDI_DHCPInd *wdiDHCPInd
26568)
26569{
26570 WDI_EventInfoType wdiEventData;
26571
26572 /*------------------------------------------------------------------------
26573 Sanity Check
26574 ------------------------------------------------------------------------*/
26575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26576 {
26577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26578 "WDI API call before module is initialized - Fail request");
26579
26580 return WDI_STATUS_E_NOT_ALLOWED;
26581 }
26582
26583 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26584 wdiEventData.pEventData = wdiDHCPInd;
26585 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26586 wdiEventData.pCBfnc = NULL;
26587 wdiEventData.pUserData = NULL;
26588
26589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26590}
26591
26592
26593/**
26594 @brief WDI_dhcpStopInd
26595 Host will send an event to the FW when DHCP is completed
26596
26597 @param
26598 WDI_DHCPInd: DHCP Indication
26599 @see
26600 @return Result of the function call
26601*/
26602WDI_Status
26603WDI_dhcpStopInd
26604(
26605 WDI_DHCPInd *wdiDHCPInd
26606)
26607{
26608 WDI_EventInfoType wdiEventData;
26609
26610 /*------------------------------------------------------------------------
26611 Sanity Check
26612 ------------------------------------------------------------------------*/
26613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26614 {
26615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26616 "WDI API call before module is initialized - Fail request");
26617
26618 return WDI_STATUS_E_NOT_ALLOWED;
26619 }
26620
26621 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26622 wdiEventData.pEventData = wdiDHCPInd;
26623 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26624 wdiEventData.pCBfnc = NULL;
26625 wdiEventData.pUserData = NULL;
26626
26627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26628}
26629
26630
26631/**
26632 @brief Process DHCP Start Indication message and post it to HAL
26633
26634 @param pWDICtx: pointer to the WLAN DAL context
26635 pEventData: pointer to the event information structure
26636
26637 @see
26638 @return Result of the function call
26639*/
26640WDI_Status
26641WDI_ProcessDHCPStartInd
26642(
26643 WDI_ControlBlockType* pWDICtx,
26644 WDI_EventInfoType* pEventData
26645)
26646{
26647 wpt_uint8* pSendBuffer = NULL;
26648 wpt_uint16 usDataOffset = 0;
26649 wpt_uint16 usSendSize = 0;
26650 wpt_uint16 usLen = 0;
26651 WDI_DHCPInd* pwdiDHCPInd = NULL;
26652 tDHCPInfo* pDHCPInfo;
26653
26654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26655
26656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26657 "%s", __func__);
26658
26659 /*-------------------------------------------------------------------------
26660 Sanity check
26661 -------------------------------------------------------------------------*/
26662 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26663 {
26664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26665 "%s: Invalid parameters", __func__);
26666 WDI_ASSERT(0);
26667 return WDI_STATUS_E_FAILURE;
26668 }
26669 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26670 /*-----------------------------------------------------------------------
26671 Get message buffer
26672 -----------------------------------------------------------------------*/
26673
26674 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26675 WDI_DHCP_START_IND,
26676 sizeof(tDHCPInfo),
26677 &pSendBuffer, &usDataOffset, &usSendSize))||
26678 ( usSendSize < (usDataOffset + usLen )))
26679 {
26680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26681 "Unable to get send buffer in DHCP Start req %p ",
26682 pEventData);
26683 WDI_ASSERT(0);
26684 return WDI_STATUS_E_FAILURE;
26685 }
26686
26687 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26688 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26689 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26690 WDI_MAC_ADDR_LEN);
26691
26692 pWDICtx->pReqStatusUserData = NULL;
26693 pWDICtx->pfncRspCB = NULL;
26694
26695 /*-------------------------------------------------------------------------
26696 Send DHCP Start Indication to HAL
26697 -------------------------------------------------------------------------*/
26698 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26699
26700}/*WDI_ProcessDHCPStartInd*/
26701
26702/**
26703 @brief Process DHCP Stop indication message and post it to HAL
26704
26705 @param pWDICtx: pointer to the WLAN DAL context
26706 pEventData: pointer to the event information structure
26707
26708 @see
26709 @return Result of the function call
26710*/
26711WDI_Status
26712WDI_ProcessDHCPStopInd
26713(
26714 WDI_ControlBlockType* pWDICtx,
26715 WDI_EventInfoType* pEventData
26716)
26717{
26718 wpt_uint8* pSendBuffer = NULL;
26719 wpt_uint16 usDataOffset = 0;
26720 wpt_uint16 usSendSize = 0;
26721 wpt_uint16 usLen = 0;
26722 WDI_DHCPInd* pwdiDHCPInd = NULL;
26723 tDHCPInfo* pDHCPInfo;
26724
26725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26726
26727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26728 "%s", __func__);
26729
26730 /*-------------------------------------------------------------------------
26731 Sanity check
26732 -------------------------------------------------------------------------*/
26733
26734 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26735 {
26736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26737 "%s: Invalid parameters", __func__);
26738 WDI_ASSERT(0);
26739 return WDI_STATUS_E_FAILURE;
26740 }
26741 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26742 /*-----------------------------------------------------------------------
26743 Get message buffer
26744 -----------------------------------------------------------------------*/
26745
26746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26747 WDI_DHCP_STOP_IND,
26748 sizeof(tDHCPInfo),
26749 &pSendBuffer, &usDataOffset, &usSendSize))||
26750 ( usSendSize < (usDataOffset + usLen )))
26751 {
26752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26753 "Unable to get send buffer in DHCP Start req %p ",
26754 pEventData);
26755 WDI_ASSERT(0);
26756 return WDI_STATUS_E_FAILURE;
26757 }
26758
26759 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26760 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26761 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26762 WDI_MAC_ADDR_LEN);
26763
26764 pWDICtx->pReqStatusUserData = NULL;
26765 pWDICtx->pfncRspCB = NULL;
26766 /*-------------------------------------------------------------------------
26767 Send DHCP Stop indication to HAL
26768 -------------------------------------------------------------------------*/
26769 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26770
26771}/*WDI_ProcessDHCPStopInd*/
26772
26773
Jeff Johnson295189b2012-06-20 16:38:30 -070026774#ifdef WLAN_FEATURE_GTK_OFFLOAD
26775/**
26776 @brief WDI_GTKOffloadReq will be called when the upper MAC
26777 wants to set GTK Rekey Counter while in power save. Upon
26778 the call of this API the WLAN DAL will pack and send a
26779 HAL GTK offload request message to the lower RIVA
26780 sub-system if DAL is in state STARTED.
26781
26782 In state BUSY this request will be queued. Request won't
26783 be allowed in any other state.
26784
26785 WDI_PostAssocReq must have been called.
26786
26787 @param pwdiGtkOffloadParams: the GTK offload as specified
26788 by the Device Interface
26789
26790 wdiGtkOffloadCb: callback for passing back the response
26791 of the GTK offload operation received from the device
26792
26793 pUserData: user data will be passed back with the
26794 callback
26795
26796 @see WDI_PostAssocReq
26797 @return Result of the function call
26798*/
26799WDI_Status
26800WDI_GTKOffloadReq
26801(
26802 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26803 WDI_GtkOffloadCb wdiGtkOffloadCb,
26804 void* pUserData
26805)
26806{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053026807 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26809
26810 /*------------------------------------------------------------------------
26811 Sanity Check
26812 ------------------------------------------------------------------------*/
26813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26814 {
26815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26816 "WDI API call before module is initialized - Fail request");
26817
26818 return WDI_STATUS_E_NOT_ALLOWED;
26819 }
26820
26821 /*------------------------------------------------------------------------
26822 Fill in Event data and post to the Main FSM
26823 ------------------------------------------------------------------------*/
26824 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26825 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026826 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026827 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26828 wdiEventData.pUserData = pUserData;
26829
26830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26831}
26832
26833
26834/**
26835 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26836 MAC wants to get GTK Rekey Counter while in power save.
26837 Upon the call of this API the WLAN DAL will pack and
26838 send a HAL GTK offload request message to the lower RIVA
26839 sub-system if DAL is in state STARTED.
26840
26841 In state BUSY this request will be queued. Request won't
26842 be allowed in any other state.
26843
26844 WDI_PostAssocReq must have been called.
26845
26846 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26847 Information Message as specified by the
26848 Device Interface
26849
26850 wdiGtkOffloadGetInfoCb: callback for passing back the
26851 response of the GTK offload operation received from the
26852 device
26853
26854 pUserData: user data will be passed back with the
26855 callback
26856
26857 @see WDI_PostAssocReq
26858 @return Result of the function call
26859*/
26860WDI_Status
26861WDI_GTKOffloadGetInfoReq
26862(
26863 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26864 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26865 void* pUserData
26866)
26867{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053026868 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26870
26871 /*------------------------------------------------------------------------
26872 Sanity Check
26873 ------------------------------------------------------------------------*/
26874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26875 {
26876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26877 "WDI API call before module is initialized - Fail request");
26878
26879 return WDI_STATUS_E_NOT_ALLOWED;
26880 }
26881
26882 /*------------------------------------------------------------------------
26883 Fill in Event data and post to the Main FSM
26884 ------------------------------------------------------------------------*/
26885 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26886 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26887 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26888 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26889 wdiEventData.pUserData = pUserData;
26890
26891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26892}
26893
26894
26895/**
26896 @brief Process set GTK Offload Request function
26897
26898 @param pWDICtx: pointer to the WLAN DAL context
26899 pEventData: pointer to the event information structure
26900
26901 @see
26902 @return Result of the function call
26903*/
26904WDI_Status
26905WDI_ProcessGTKOffloadReq
26906(
26907 WDI_ControlBlockType* pWDICtx,
26908 WDI_EventInfoType* pEventData
26909)
26910{
26911 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26912 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26913 wpt_uint8* pSendBuffer = NULL;
26914 wpt_uint16 usDataOffset = 0;
26915 wpt_uint16 usSendSize = 0;
26916 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026917 wpt_uint8 ucCurrentSessionId = 0;
26918 WDI_BSSSessionType* pBSSSes = NULL;
26919
Jeff Johnson295189b2012-06-20 16:38:30 -070026920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26921
26922 /*-------------------------------------------------------------------------
26923 Sanity check
26924 -------------------------------------------------------------------------*/
26925 if (( NULL == pEventData ) ||
26926 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26927 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26928 {
26929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026931 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080026932 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026933 }
26934
26935 /*-----------------------------------------------------------------------
26936 Get message buffer
26937 -----------------------------------------------------------------------*/
26938 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26939 sizeof(gtkOffloadReqParams),
26940 &pSendBuffer, &usDataOffset, &usSendSize))||
26941 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26942 {
26943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26944 "Unable to get send buffer in GTK offload req %x %x %x",
26945 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26946 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080026947 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026948 }
26949
26950 //
26951 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26952 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026953 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26954 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26955 &pBSSSes);
26956 if ( NULL == pBSSSes )
26957 {
26958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026959 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080026960 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026961 }
26962
26963 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26964
Jeff Johnson295189b2012-06-20 16:38:30 -070026965 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26966 // Copy KCK
26967 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26968 // Copy KEK
26969 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26970 // Copy KeyReplayCounter
26971 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26972
26973 wpalMemoryCopy( pSendBuffer+usDataOffset,
26974 &gtkOffloadReqParams,
26975 sizeof(gtkOffloadReqParams));
26976
26977 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26978 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26979
26980 /*-------------------------------------------------------------------------
26981 Send Get STA Request to HAL
26982 -------------------------------------------------------------------------*/
26983 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26984 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080026985
26986fail:
26987 // Release the message buffer so we don't leak
26988 wpalMemoryFree(pSendBuffer);
26989
26990failRequest:
26991 //WDA should have failure check to avoid the memory leak
26992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026993}
26994
26995
26996/**
26997 @brief Process GTK Offload Get Information Request function
26998
26999 @param pWDICtx: pointer to the WLAN DAL context
27000 pEventData: pointer to the event information structure
27001
27002 @see
27003 @return Result of the function call
27004*/
27005WDI_Status
27006WDI_ProcessGTKOffloadGetInfoReq
27007(
27008 WDI_ControlBlockType* pWDICtx,
27009 WDI_EventInfoType* pEventData
27010)
27011{
27012 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27013 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27014 wpt_uint8* pSendBuffer = NULL;
27015 wpt_uint16 usDataOffset = 0;
27016 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027017 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27018 wpt_uint8 ucCurrentSessionId = 0;
27019 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027020
27021 /*-------------------------------------------------------------------------
27022 Sanity check
27023 -------------------------------------------------------------------------*/
27024 if (( NULL == pEventData ) ||
27025 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27026 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27027 {
27028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027030 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027031 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027032 }
27033
27034 /*-----------------------------------------------------------------------
27035 Get message buffer
27036 -----------------------------------------------------------------------*/
27037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027038 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027039 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027040 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 {
27042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27043 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27044 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27045 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027046 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027048 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27049 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27050 &pBSSSes);
27051 if ( NULL == pBSSSes )
27052 {
27053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027054 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027055 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027056 }
27057 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027058
27059 //
27060 // Don't need to fill send buffer other than header
27061 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027062 wpalMemoryCopy( pSendBuffer+usDataOffset,
27063 &halGtkOffloadGetInfoReqParams,
27064 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027065
27066 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27067 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27068
27069 /*-------------------------------------------------------------------------
27070 Send Get STA Request to HAL
27071 -------------------------------------------------------------------------*/
27072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27073 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027074fail:
27075 // Release the message buffer so we don't leak
27076 wpalMemoryFree(pSendBuffer);
27077
27078failRequest:
27079 //WDA should have failure check to avoid the memory leak
27080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027081}
27082
27083/**
27084 @brief Process host offload Rsp function (called when a
27085 response is being received over the bus from HAL)
27086
27087 @param pWDICtx: pointer to the WLAN DAL context
27088 pEventData: pointer to the event information structure
27089
27090 @see
27091 @return Result of the function call
27092*/
27093WDI_Status
27094WDI_ProcessGtkOffloadRsp
27095(
27096 WDI_ControlBlockType* pWDICtx,
27097 WDI_EventInfoType* pEventData
27098)
27099{
Jeff Johnson295189b2012-06-20 16:38:30 -070027100 eHalStatus halStatus;
27101 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027102 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27103 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27105
27106 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27107
27108 /*-------------------------------------------------------------------------
27109 Sanity check
27110 -------------------------------------------------------------------------*/
27111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27112 ( NULL == pEventData->pEventData))
27113 {
27114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027115 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027116 WDI_ASSERT(0);
27117 return WDI_STATUS_E_FAILURE;
27118 }
27119
27120 /*-------------------------------------------------------------------------
27121 Extract response and send it to UMAC
27122 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027123 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27124 {
27125 wpalMemoryCopy( &halGtkOffloadRspParams,
27126 pEventData->pEventData,
27127 sizeof(halGtkOffloadRspParams));
27128
27129 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027130 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027131 wdiGtkOffloadRsparams.bssIdx =
27132 halGtkOffloadRspParams.bssIdx;
27133 }
27134 else
27135 {
27136 halStatus = *((eHalStatus*)pEventData->pEventData);
27137 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27138 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027139
27140 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027141 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027142
27143 return WDI_STATUS_SUCCESS;
27144}
27145
27146/**
27147 @brief Process GTK Offload Get Information Response function
27148
27149 @param pWDICtx: pointer to the WLAN DAL context
27150 pEventData: pointer to the event information structure
27151
27152 @see
27153 @return Result of the function call
27154*/
27155WDI_Status
27156WDI_ProcessGTKOffloadGetInfoRsp
27157(
27158 WDI_ControlBlockType* pWDICtx,
27159 WDI_EventInfoType* pEventData
27160)
27161{
Jeff Johnson295189b2012-06-20 16:38:30 -070027162 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027163 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027164 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27165 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027166 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027167
27168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27169
27170 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27171
27172 /*-------------------------------------------------------------------------
27173 Sanity check
27174 -------------------------------------------------------------------------*/
27175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27176 ( NULL == pEventData->pEventData ))
27177 {
27178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 WDI_ASSERT(0);
27181 return WDI_STATUS_E_FAILURE;
27182 }
27183
27184 /*-------------------------------------------------------------------------
27185 Extract response and send it to UMAC
27186 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027187 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27188 {
27189 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27190 pEventData->pEventData,
27191 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027193 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027194 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027195 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27196 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27197 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27198 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27199 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27200 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27201 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27202 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027203
27204 wpalMutexAcquire(&pWDICtx->wptMutex);
27205 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27206 &pBSSSes);
27207
27208 if ( NULL == pBSSSes )
27209 {
27210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27211 "Association sequence for this BSS does not exist or "
27212 "association no longer in progress - mysterious HAL response");
27213 wpalMutexRelease(&pWDICtx->wptMutex);
27214 return WDI_STATUS_E_NOT_ALLOWED;
27215 }
27216
27217 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27218 sizeof (wpt_macAddr));
27219 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027220 }
27221 else
27222 {
27223 halStatus = *((eHalStatus*)pEventData->pEventData);
27224 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27225 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027226 /*Notify UMAC*/
27227 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27228 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027229 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027230
27231 return WDI_STATUS_SUCCESS;
27232}
27233#endif // WLAN_FEATURE_GTK_OFFLOAD
27234
27235#ifdef WLAN_WAKEUP_EVENTS
27236WDI_Status
27237WDI_ProcessWakeReasonInd
27238(
27239 WDI_ControlBlockType* pWDICtx,
27240 WDI_EventInfoType* pEventData
27241)
27242{
27243 WDI_LowLevelIndType *pWdiInd;
27244 tpWakeReasonParams pWakeReasonParams;
27245 wpt_uint32 allocSize = 0;
27246
27247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027248 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027249
27250 /*-------------------------------------------------------------------------
27251 Sanity check
27252 -------------------------------------------------------------------------*/
27253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27254 ( NULL == pEventData->pEventData ))
27255 {
27256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027258 WDI_ASSERT( 0 );
27259 return WDI_STATUS_E_FAILURE;
27260 }
27261
27262 /*-------------------------------------------------------------------------
27263 Extract indication and send it to UMAC
27264 -------------------------------------------------------------------------*/
27265 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27266
27267 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27268
27269 //Allocate memory for WDI_WakeReasonIndType structure
27270 pWdiInd = wpalMemoryAllocate(allocSize) ;
27271
27272 if(NULL == pWdiInd)
27273 {
27274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27275 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027276 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 WDI_ASSERT(0);
27278 return WDI_STATUS_E_FAILURE;
27279 }
27280
27281 wpalMemoryZero(pWdiInd, allocSize);
27282
27283 /* Fill in the indication parameters*/
27284 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27285 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27286 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27287 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27288 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27289 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27290 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27291 &(pWakeReasonParams->aDataStart[0]),
27292 pWakeReasonParams->ulStoredDataLen);
27293
ltimariub77f24b2013-01-24 18:54:33 -080027294
27295 if ( pWDICtx->wdiLowLevelIndCB )
27296 {
27297 /*Notify UMAC*/
27298 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27299 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027300
27301 //Free memory allocated for WDI_WakeReasonIndType structure
27302 wpalMemoryFree(pWdiInd);
27303
27304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027305 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027306
27307 return WDI_STATUS_SUCCESS;
27308}
27309#endif // WLAN_WAKEUP_EVENTS
27310
27311void WDI_GetWcnssCompiledApiVersion
27312(
27313 WDI_WlanVersionType *pWcnssApiVersion
27314)
27315{
27316 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27317 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27318 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27319 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27320}
27321
27322/**
27323 @brief Process Set TM Level Rsp function (called when a
27324 response is being received over the bus from HAL)
27325
27326 @param pWDICtx: pointer to the WLAN DAL context
27327 pEventData: pointer to the event information structure
27328
27329 @see
27330 @return Result of the function call
27331*/
27332WDI_Status
27333WDI_ProcessSetTmLevelRsp
27334(
27335 WDI_ControlBlockType* pWDICtx,
27336 WDI_EventInfoType* pEventData
27337)
27338{
27339 WDI_Status wdiStatus;
27340 eHalStatus halStatus;
27341 WDI_SetTmLevelCb wdiSetTmLevelCb;
27342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27343
27344 /*-------------------------------------------------------------------------
27345 Sanity check
27346 -------------------------------------------------------------------------*/
27347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27348 ( NULL == pEventData->pEventData ))
27349 {
27350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027352 WDI_ASSERT(0);
27353 return WDI_STATUS_E_FAILURE;
27354 }
27355
27356 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27357
27358 /*-------------------------------------------------------------------------
27359 Extract response and send it to UMAC
27360 -------------------------------------------------------------------------*/
27361 halStatus = *((eHalStatus*)pEventData->pEventData);
27362 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27363
27364 /*Notify UMAC*/
27365 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27366
27367 return WDI_STATUS_SUCCESS;
27368}/*WDI_ProcessSetTmLevelRsp*/
27369
27370/**
27371 @brief Process Set Thermal Mitigation level Changed request
27372
27373 @param pWDICtx: pointer to the WLAN DAL context
27374 pEventData: pointer to the event information structure
27375
27376 @see
27377 @return Result of the function call
27378*/
27379WDI_Status
27380WDI_ProcessSetTmLevelReq
27381(
27382 WDI_ControlBlockType* pWDICtx,
27383 WDI_EventInfoType* pEventData
27384)
27385{
27386 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27387 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27388 wpt_uint8* pSendBuffer = NULL;
27389 wpt_uint16 usDataOffset = 0;
27390 wpt_uint16 usSendSize = 0;
27391 tSetThermalMitgationType halTmMsg;
27392
27393 /*-------------------------------------------------------------------------
27394 Sanity check
27395 -------------------------------------------------------------------------*/
27396 if (( NULL == pEventData ) ||
27397 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27398 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27399 {
27400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027402 WDI_ASSERT(0);
27403 return WDI_STATUS_E_FAILURE;
27404 }
27405
27406 /*-----------------------------------------------------------------------
27407 Get message buffer
27408 -----------------------------------------------------------------------*/
27409 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27410 sizeof(halTmMsg),
27411 &pSendBuffer, &usDataOffset, &usSendSize))||
27412 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27413 {
27414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27415 "Unable to get send buffer in Set PNO req %x %x %x",
27416 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27417 WDI_ASSERT(0);
27418 return WDI_STATUS_E_FAILURE;
27419 }
27420
27421 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27422 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27423
27424 wpalMemoryCopy( pSendBuffer+usDataOffset,
27425 &halTmMsg,
27426 sizeof(halTmMsg));
27427
27428 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27429 pWDICtx->pfncRspCB = NULL;
27430 /*-------------------------------------------------------------------------
27431 Send Get STA Request to HAL
27432 -------------------------------------------------------------------------*/
27433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27434 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27435}
27436
27437/* Fill the value from the global features enabled array to the global capabilities
27438 * bitmap struct
27439 */
27440static void
27441FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27442{
27443 wpt_int8 i;
27444 for (i=0; i<len; i++)
27445 {
27446 setFeatCaps(fCaps, enabledFeat[i]);
27447 }
27448}
27449
27450/**
27451 @brief WDI_featureCapsExchangeReq
27452 Post feature capability bitmap exchange event.
27453 Host will send its own capability to FW in this req and
27454 expect FW to send its capability back as a bitmap in Response
27455
27456 @param
27457
27458 wdiFeatureCapsExchangeCb: callback called on getting the response.
27459 It is kept to mantain similarity between WDI reqs and if needed, can
27460 be used in future. Currently, It is set to NULL
27461
27462 pUserData: user data will be passed back with the
27463 callback
27464
27465 @see
27466 @return Result of the function call
27467*/
27468WDI_Status
27469WDI_featureCapsExchangeReq
27470(
27471 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27472 void* pUserData
27473)
27474{
27475 WDI_EventInfoType wdiEventData;
27476 wpt_int32 fCapsStructSize;
27477
27478 /*------------------------------------------------------------------------
27479 Sanity Check
27480 ------------------------------------------------------------------------*/
27481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27482 {
27483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27484 "WDI API call before module is initialized - Fail request");
27485
27486 return WDI_STATUS_E_NOT_ALLOWED;
27487 }
27488
27489 /* Allocate memory separately for global variable carrying FW caps */
27490 fCapsStructSize = sizeof(tWlanFeatCaps);
27491 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27492 if ( NULL == gpHostWlanFeatCaps )
27493 {
27494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27495 "Cannot allocate memory for host capability info\n");
27496 WDI_ASSERT(0);
27497 return WDI_STATUS_MEM_FAILURE;
27498 }
27499
27500 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27501
27502 /*------------------------------------------------------------------------
27503 Fill in Event data and post to the Main FSM
27504 ------------------------------------------------------------------------*/
27505 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27506 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027508 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027509 gpHostWlanFeatCaps->featCaps[0],
27510 gpHostWlanFeatCaps->featCaps[1],
27511 gpHostWlanFeatCaps->featCaps[2],
27512 gpHostWlanFeatCaps->featCaps[3]
27513 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27515 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027516 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27517 wdiEventData.pEventData = gpHostWlanFeatCaps;
27518 wdiEventData.uEventDataSize = fCapsStructSize;
27519 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27520 wdiEventData.pUserData = pUserData;
27521
27522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27523}
27524
27525/**
Yathish9f22e662012-12-10 14:21:35 -080027526 @brief Disable Active mode offload in Host
27527
27528 @param void
27529 @see
27530 @return void
27531*/
27532void
27533WDI_disableCapablityFeature(wpt_uint8 feature_index)
27534{
27535 supportEnabledFeatures[feature_index] = 0;
27536 return;
27537}
27538
27539/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027540 @brief Process Host-FW Capability Exchange Request function
27541
27542 @param pWDICtx: pointer to the WLAN DAL context
27543 pEventData: pointer to the event information structure
27544
27545 @see
27546 @return Result of the function call
27547*/
27548WDI_Status
27549WDI_ProcessFeatureCapsExchangeReq
27550(
27551 WDI_ControlBlockType* pWDICtx,
27552 WDI_EventInfoType* pEventData
27553)
27554{
27555 wpt_uint8* pSendBuffer = NULL;
27556 wpt_uint16 usDataOffset = 0;
27557 wpt_uint16 usSendSize = 0;
27558 wpt_uint16 usLen = 0;
27559
27560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27561
27562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027563 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027564
27565 /*-------------------------------------------------------------------------
27566 Sanity check
27567 -------------------------------------------------------------------------*/
27568 /* Call back function is NULL since not required for cap exchange req */
27569 if (( NULL == pEventData ) ||
27570 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27571 {
27572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027574 WDI_ASSERT(0);
27575 return WDI_STATUS_E_FAILURE;
27576 }
27577
27578 /*-----------------------------------------------------------------------
27579 Get message buffer
27580 -----------------------------------------------------------------------*/
27581 usLen = sizeof(tWlanFeatCaps);
27582
27583 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27584 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27585 usLen,
27586 &pSendBuffer, &usDataOffset, &usSendSize))||
27587 ( usSendSize < (usDataOffset + usLen )))
27588 {
27589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27590 "Unable to get send buffer in feat caps exchange req %x %x",
27591 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27592 WDI_ASSERT(0);
27593 return WDI_STATUS_E_FAILURE;
27594 }
27595
27596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027597 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027598 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27599 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27600 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27601 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27602 );
27603
27604 /* Copy host caps after the offset in the send buffer */
27605 wpalMemoryCopy( pSendBuffer+usDataOffset,
27606 (tWlanFeatCaps *)pEventData->pEventData,
27607 usLen);
27608
27609 /*-------------------------------------------------------------------------
27610 Send Start Request to HAL
27611 -------------------------------------------------------------------------*/
27612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27613 (WDI_StartRspCb)pEventData->pCBfnc,
27614 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27615
27616}/*WDI_ProcessFeatureCapsExchangeReq*/
27617
27618/**
27619 @brief Process Host-FW Capability Exchange Response function
27620
27621 @param pWDICtx: pointer to the WLAN DAL context
27622 pEventData: pointer to the event information structure
27623
27624 @see
27625 @return Result of the function call
27626*/
27627WDI_Status
27628WDI_ProcessFeatureCapsExchangeRsp
27629(
27630 WDI_ControlBlockType* pWDICtx,
27631 WDI_EventInfoType* pEventData
27632)
27633{
27634 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27635 wpt_int32 fCapsStructSize;
27636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27637
27638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027639 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027640
27641 /*-------------------------------------------------------------------------
27642 Sanity check
27643 -------------------------------------------------------------------------*/
27644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27645 ( NULL == pEventData->pEventData ))
27646 {
27647 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027650 WDI_ASSERT(0);
27651 return WDI_STATUS_E_FAILURE;
27652 }
27653
27654 /* Allocate memory separately for global variable carrying FW caps */
27655 fCapsStructSize = sizeof(tWlanFeatCaps);
27656 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27657 if ( NULL == gpFwWlanFeatCaps )
27658 {
27659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27660 "Cannot allocate memory for host capability info\n");
27661 WDI_ASSERT(0);
27662 return WDI_STATUS_MEM_FAILURE;
27663 }
27664
27665 /*-------------------------------------------------------------------------
27666 Unpack HAL Response Message - the header was already extracted by the
27667 main Response Handling procedure
27668 -------------------------------------------------------------------------*/
27669 /*-------------------------------------------------------------------------
27670 Extract response and send it to UMAC
27671 -------------------------------------------------------------------------*/
27672
27673 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27674 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027676 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027677 gpFwWlanFeatCaps->featCaps[0],
27678 gpFwWlanFeatCaps->featCaps[1],
27679 gpFwWlanFeatCaps->featCaps[2],
27680 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027681 );
27682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27683 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027684 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27685
27686 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27687 if (wdiFeatureCapsExchangeCb != NULL)
27688 wdiFeatureCapsExchangeCb(NULL, NULL);
27689
27690 return WDI_STATUS_SUCCESS;
27691}
27692
Mohit Khanna4a70d262012-09-11 16:30:12 -070027693#ifdef WLAN_FEATURE_11AC
27694WDI_Status
27695WDI_ProcessUpdateVHTOpModeRsp
27696(
27697 WDI_ControlBlockType* pWDICtx,
27698 WDI_EventInfoType* pEventData
27699)
27700{
27701 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27702 WDI_Status wdiStatus;
27703 eHalStatus halStatus;
27704
27705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27706
27707 /*-------------------------------------------------------------------------
27708 Sanity check
27709 -------------------------------------------------------------------------*/
27710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27711 ( NULL == pEventData->pEventData))
27712 {
27713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027714 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027715 WDI_ASSERT(0);
27716 return WDI_STATUS_E_FAILURE;
27717 }
27718 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27719
27720 /*-------------------------------------------------------------------------
27721 Extract response and send it to UMAC
27722 -------------------------------------------------------------------------*/
27723 halStatus = *((eHalStatus*)pEventData->pEventData);
27724 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27725
27726 /*Notify UMAC*/
27727 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27728
27729 return WDI_STATUS_SUCCESS;
27730}
27731#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027732/**
27733 @brief WDI_getHostWlanFeatCaps
27734 WDI API that returns whether the feature passed to it as enum value in
27735 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27736 variable storing host capability bitmap to find this. This can be used by
27737 other moduels to decide certain things like call different APIs based on
27738 whether a particular feature is supported.
27739
27740 @param
27741
27742 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27743
27744 @see
27745 @return
27746 0 - if the feature is NOT supported in host
27747 any non-zero value - if the feature is SUPPORTED in host.
27748*/
27749wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27750{
27751 wpt_uint8 featSupported = 0;
27752 if (gpHostWlanFeatCaps != NULL)
27753 {
27754 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27755 }
27756 else
27757 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027759 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027760 }
27761 return featSupported;
27762}
27763
27764/**
27765 @brief WDI_getFwWlanFeatCaps
27766 WDI API that returns whether the feature passed to it as enum value in
27767 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27768 variable storing host capability bitmap to find this. This can be used by
27769 other moduels to decide certain things like call different APIs based on
27770 whether a particular feature is supported.
27771
27772 @param
27773
27774 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27775 in wlan_hal_msg.h.
27776
27777 @see
27778 @return
27779 0 - if the feature is NOT supported in FW
27780 any non-zero value - if the feature is SUPPORTED in FW.
27781*/
27782wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27783{
27784 wpt_uint8 featSupported = 0;
27785 if (gpFwWlanFeatCaps != NULL)
27786 {
27787 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27788 }
27789 else
27790 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027792 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027793 }
27794 return featSupported;
27795}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027796
27797#ifdef WLAN_FEATURE_11AC
27798WDI_Status
27799WDI_ProcessUpdateVHTOpModeReq
27800(
27801 WDI_ControlBlockType* pWDICtx,
27802 WDI_EventInfoType* pEventData
27803)
27804{
27805 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27806 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27807 wpt_uint8* pSendBuffer = NULL;
27808 wpt_uint16 usDataOffset = 0;
27809 wpt_uint16 usSendSize = 0;
27810
27811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27812
27813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027814 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027815
27816 /*-------------------------------------------------------------------------
27817 Sanity check
27818 -------------------------------------------------------------------------*/
27819 if (( NULL == pEventData ) ||
27820 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27821 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27822 {
27823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027824 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027825 WDI_ASSERT(0);
27826 return WDI_STATUS_E_FAILURE;
27827 }
27828
27829 /*-----------------------------------------------------------------------
27830 Get message buffer
27831 -----------------------------------------------------------------------*/
27832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27833 sizeof(WDI_UpdateVHTOpMode),
27834 &pSendBuffer, &usDataOffset, &usSendSize))||
27835 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27836 {
27837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27838 "Unable to get send buffer in update vht opMode req");
27839 WDI_ASSERT(0);
27840 return WDI_STATUS_E_FAILURE;
27841 }
27842
27843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27844 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27845
27846 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27847 sizeof(WDI_UpdateVHTOpMode));
27848
27849 /*-------------------------------------------------------------------------
27850 Send Start Request to HAL
27851 -------------------------------------------------------------------------*/
27852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27853 wdiVHTOpModeCb,
27854 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27855
27856}
27857
27858WDI_Status
27859WDI_UpdateVHTOpModeReq
27860(
27861 WDI_UpdateVHTOpMode *pData,
27862 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27863 void* pUserData
27864)
27865{
27866 WDI_EventInfoType wdiEventData;
27867
27868 /*------------------------------------------------------------------------
27869 Sanity Check
27870 ------------------------------------------------------------------------*/
27871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27872 {
27873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27874 "WDI API call before module is initialized - Fail request");
27875
27876 return WDI_STATUS_E_NOT_ALLOWED;
27877 }
27878
27879 /*------------------------------------------------------------------------
27880 Fill in Event data and post to the Main FSM
27881 ------------------------------------------------------------------------*/
27882 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27883 wdiEventData.pEventData = pData;
27884 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27885 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27886 wdiEventData.pUserData = pUserData;
27887
27888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27889 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27890
27891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27892
27893}
27894#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027895
27896/**
27897 @brief WDI_TransportChannelDebug -
27898 Display DXE Channel debugging information
27899 User may request to display DXE channel snapshot
27900 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027901
Jeff Johnsonb88db982012-12-10 13:34:59 -080027902 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027903 @param enableStallDetect : Enable stall detect feature
27904 This feature will take effect to data performance
27905 Not integrate till fully verification
27906 @see
27907 @return none
27908*/
27909void WDI_TransportChannelDebug
27910(
27911 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027912 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027913)
27914{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027915 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027916 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027917}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027918/**
27919 @brief WDI_SsrTimerCB
27920 Callback function for SSR timer, if this is called then the graceful
27921 shutdown for Riva did not happen.
27922
27923 @param pUserData : user data to timer
27924
27925 @see
27926 @return none
27927*/
27928void
27929WDI_SsrTimerCB
27930(
27931 void *pUserData
27932)
27933{
27934 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27936
27937 if (NULL == pWDICtx )
27938 {
27939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027940 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027941 WDI_ASSERT(0);
27942 return;
27943 }
27944 wpalRivaSubystemRestart();
27945
27946 return;
27947
27948}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070027949
27950/**
27951 @brief WDI_SetEnableSSR -
27952 This API is called to enable/disable SSR on WDI timeout.
27953
27954 @param enableSSR : enable/disable SSR
27955
27956 @see
27957 @return none
27958*/
27959void WDI_SetEnableSSR(wpt_boolean enableSSR)
27960{
27961 gWDICb.bEnableSSR = enableSSR;
27962}
Leo Chang9056f462013-08-01 19:21:11 -070027963
27964
27965#ifdef FEATURE_WLAN_LPHB
27966/**
27967 @brief WDI_ProcessLphbWaitTimeoutInd -
27968 This function will be invoked when FW detects low power
27969 heart beat failure
27970
27971 @param pWDICtx : wdi context
27972 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070027973 @see
27974 @return Result of the function call
27975*/
27976WDI_Status
27977WDI_ProcessLphbWaitTimeoutInd
27978(
27979 WDI_ControlBlockType* pWDICtx,
27980 WDI_EventInfoType* pEventData
27981)
27982{
27983 WDI_LowLevelIndType wdiInd;
27984 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27986
27987 /*-------------------------------------------------------------------------
27988 Sanity check
27989 -------------------------------------------------------------------------*/
27990 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27991 (NULL == pEventData->pEventData))
27992 {
27993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27994 "%s: Invalid parameters", __func__);
27995 WDI_ASSERT(0);
27996 return WDI_STATUS_E_FAILURE;
27997 }
27998
27999 /*-------------------------------------------------------------------------
28000 Extract indication and send it to UMAC
28001 -------------------------------------------------------------------------*/
28002 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
28003
28004 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
28005 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
28006 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
28007 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
28008 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
28009 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
28010 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
28011 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
28012 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
28013 /*Notify UMAC*/
28014 if (pWDICtx->wdiLowLevelIndCB)
28015 {
28016 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28017 }
28018
28019 return WDI_STATUS_SUCCESS;
28020}
28021
28022/**
28023 @brief WDI_ProcessLphbCfgRsp -
28024 LPHB configuration response from FW
28025
28026 @param pWDICtx : wdi context
28027 pEventData : indication data
28028
28029 @see
28030 @return Result of the function call
28031*/
28032WDI_Status WDI_ProcessLphbCfgRsp
28033(
28034 WDI_ControlBlockType* pWDICtx,
28035 WDI_EventInfoType* pEventData
28036)
28037{
28038 WDI_Status wdiStatus;
28039 eHalStatus halStatus;
28040 WDI_LphbCfgCb wdiLphbCfgCb;
28041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28042
28043 /*-------------------------------------------------------------------------
28044 Sanity check
28045 -------------------------------------------------------------------------*/
28046 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28047 (NULL == pEventData->pEventData))
28048 {
28049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28050 "%s: Invalid parameters", __func__);
28051 WDI_ASSERT(0);
28052 return WDI_STATUS_E_FAILURE;
28053 }
28054
28055 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28056
28057 /*-------------------------------------------------------------------------
28058 Extract response and send it to UMAC
28059 -------------------------------------------------------------------------*/
28060 halStatus = *((eHalStatus*)pEventData->pEventData);
28061 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28062
28063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28064 "LPHB Cfg Rsp Return status %d", wdiStatus);
28065 /*Notify UMAC*/
28066 if (NULL != wdiLphbCfgCb)
28067 {
28068 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28069 }
28070
28071 return WDI_STATUS_SUCCESS;
28072}
28073
28074/**
28075 @brief WDI_ProcessLPHBConfReq -
28076 LPHB configuration request to FW
28077
28078 @param pWDICtx : wdi context
28079 pEventData : indication data
28080
28081 @see
28082 @return none
28083*/
28084WDI_Status WDI_ProcessLPHBConfReq
28085(
28086 WDI_ControlBlockType* pWDICtx,
28087 WDI_EventInfoType* pEventData
28088)
28089{
28090 WDI_LPHBReq *pLphbReqParams;
28091 WDI_Status wdiStatus;
28092 wpt_uint8* pSendBuffer = NULL;
28093 wpt_uint16 usDataOffset = 0;
28094 wpt_uint16 usSendSize = 0;
28095 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28097
28098 /*-------------------------------------------------------------------------
28099 Sanity check
28100 -------------------------------------------------------------------------*/
28101 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28102 {
28103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28104 "%s: Invalid parameters in Suspend ind",__func__);
28105 WDI_ASSERT(0);
28106 return WDI_STATUS_E_FAILURE;
28107 }
28108
28109 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28110
28111 /*-----------------------------------------------------------------------
28112 Get message buffer
28113 -----------------------------------------------------------------------*/
28114 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28115 WDI_LPHB_CFG_REQ,
28116 sizeof(tHalLowPowerHeartBeatReqMsg),
28117 &pSendBuffer, &usDataOffset, &usSendSize))||
28118 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28119 {
28120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28121 "Unable to get send buffer in LPHB Ind ");
28122 WDI_ASSERT(0);
28123 return WDI_STATUS_E_FAILURE;
28124 }
28125
28126 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28127 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28128
28129 halLphbReqRarams->lowPowerHeartBeatCmdType =
28130 (tANI_U16)(++pLphbReqParams->cmd);
28131 switch ((tANI_U16)pLphbReqParams->cmd)
28132 {
28133 case WDI_LPHB_SET_EN_PARAMS_INDID:
28134 halLphbReqRarams->sessionIdx =
28135 pLphbReqParams->params.lphbEnableReq.session;
28136 halLphbReqRarams->options.control.heartBeatEnable =
28137 pLphbReqParams->params.lphbEnableReq.enable;
28138 halLphbReqRarams->options.control.heartBeatType =
28139 pLphbReqParams->params.lphbEnableReq.item;
28140 break;
28141
28142 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28143 halLphbReqRarams->sessionIdx =
28144 pLphbReqParams->params.lphbTcpParamReq.session;
28145 halLphbReqRarams->options.tcpParams.timeOutSec =
28146 pLphbReqParams->params.lphbTcpParamReq.timeout;
28147 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28148 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28149 sizeof(v_U32_t));
28150 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28151 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28152 sizeof(v_U32_t));
28153
28154 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28155 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28156 WDI_MAC_ADDR_LEN);
28157
28158 halLphbReqRarams->options.tcpParams.hostPort =
28159 pLphbReqParams->params.lphbTcpParamReq.src_port;
28160 halLphbReqRarams->options.tcpParams.destPort =
28161 pLphbReqParams->params.lphbTcpParamReq.dst_port;
28162 break;
28163
28164 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28165 halLphbReqRarams->sessionIdx =
28166 pLphbReqParams->params.lphbTcpFilterReq.session;
28167 halLphbReqRarams->options.tcpUdpFilter.offset =
28168 pLphbReqParams->params.lphbTcpFilterReq.offset;
28169 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28170 pLphbReqParams->params.lphbTcpFilterReq.length;
28171 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28172 pLphbReqParams->params.lphbTcpFilterReq.filter,
28173 WDI_LPHB_FILTER_LEN);
28174 break;
28175
28176 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28177 halLphbReqRarams->sessionIdx =
28178 pLphbReqParams->params.lphbUdpParamReq.session;
28179 halLphbReqRarams->options.udpParams.timeOutSec =
28180 pLphbReqParams->params.lphbUdpParamReq.timeout;
28181 halLphbReqRarams->options.udpParams.timePeriodSec =
28182 pLphbReqParams->params.lphbUdpParamReq.interval;
28183 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28184 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28185 sizeof(v_U32_t));
28186 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28187 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28188 sizeof(v_U32_t));
28189
28190 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28191 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28192 WDI_MAC_ADDR_LEN);
28193
28194 halLphbReqRarams->options.udpParams.hostPort =
28195 pLphbReqParams->params.lphbUdpParamReq.src_port;
28196 halLphbReqRarams->options.udpParams.destPort =
28197 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28198 break;
28199
28200 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28201 halLphbReqRarams->sessionIdx =
28202 pLphbReqParams->params.lphbUdpFilterReq.session;
28203 halLphbReqRarams->options.tcpUdpFilter.offset =
28204 pLphbReqParams->params.lphbUdpFilterReq.offset;
28205 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28206 pLphbReqParams->params.lphbUdpFilterReq.length;
28207 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28208 pLphbReqParams->params.lphbUdpFilterReq.filter,
28209 WDI_LPHB_FILTER_LEN);
28210 break;
28211
28212 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28213 /* NA */
28214 break;
28215
28216 default:
28217 break;
28218 }
28219
28220 /*-------------------------------------------------------------------------
28221 Send Suspend Request to HAL
28222 -------------------------------------------------------------------------*/
28223 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28224 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28225
28226 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28227 usSendSize, pWDICtx->pfncRspCB,
28228 pWDICtx->pReqStatusUserData,
28229 WDI_LPHB_CFG_RESP);
28230
28231 return wdiStatus;
28232}
28233
28234/**
28235 @brief WDI_LPHBConfReq -
28236 LPHB configuration request API
28237
28238 @param lphbconfParam : configuration parameter
28239 usrData : client context
28240 lphbCfgCb : callback function pointer
28241
28242 @see
28243 @return Success or fail status code
28244*/
28245WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28246 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28247{
28248 WDI_EventInfoType wdiEventData;
28249
28250 /*------------------------------------------------------------------------
28251 Sanity Check
28252 ------------------------------------------------------------------------*/
28253 if (eWLAN_PAL_FALSE == gWDIInitialized)
28254 {
28255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28256 "WDI API call before module is initialized - Fail request");
28257
28258 return WDI_STATUS_E_NOT_ALLOWED;
28259 }
28260
28261 /*------------------------------------------------------------------------
28262 Fill in Event data and post to the Main FSM
28263 ------------------------------------------------------------------------*/
28264 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28265 wdiEventData.pEventData = lphbconfParam;
28266 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28267 wdiEventData.pCBfnc = lphbCfgCb;
28268 wdiEventData.pUserData = usrData;
28269
28270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28271}
28272#endif /* FEATURE_WLAN_LPHB */
28273
Ravi Joshid2ca7c42013-07-23 08:37:49 -070028274/**
28275 @brief WDI_ProcessIbssPeerInactivityInd
28276 Process peer inactivity indication coming from HAL
28277
28278 @param pWDICtx: pointer to the WLAN DAL context
28279 pEventData: pointer to the event information structure
28280 @see
28281 @return Result of the function call
28282*/
28283WDI_Status
28284WDI_ProcessIbssPeerInactivityInd
28285(
28286 WDI_ControlBlockType* pWDICtx,
28287 WDI_EventInfoType* pEventData
28288)
28289{
28290 WDI_LowLevelIndType wdiInd;
28291 tIbssPeerInactivityIndMsg halIbssIndMsg;
28292
28293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28294
28295 /*-------------------------------------------------------------------------
28296 Sanity check
28297 -------------------------------------------------------------------------*/
28298 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28299 ( NULL == pEventData->pEventData ))
28300 {
28301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28302 "%s: Invalid parameters", __func__);
28303 WDI_ASSERT( 0 );
28304 return WDI_STATUS_E_FAILURE;
28305 }
28306
28307 /*-------------------------------------------------------------------------
28308 Extract indication and send it to UMAC
28309 -------------------------------------------------------------------------*/
28310 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28311 pEventData->pEventData,
28312 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28313
28314 /*Fill in the indication parameters*/
28315 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28316
28317 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28318 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28319
28320 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28321 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28322
28323 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28324 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28325 sizeof(tSirMacAddr));
28326
28327 /*Notify UMAC*/
28328 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28329
28330 return WDI_STATUS_SUCCESS;
28331
28332} /*WDI_ProcessIbssPeerInactivityInd*/